APIセキュリティに関する次の記述を読んで,設問に答えよ。
G社は,ヘルスケアサービス新興企業である。利用者が食事,体重などを入力してそのデータを管理したり,健康リスクの判定や食事メニューのアドバイスを受けたりできるサービス(以下,サービスYという)を計画している。具体的には,クラウドサービス上にサービスY用のシステム(以下,Sシステムという)を構築して,G社が既に開発しているスマートフォン専用アプリケーションプログラム(以下,G社スマホアプリという)からアクセスする。Sシステムの要件を図1に示す。
図1 Sシステムの要件(抜粋)
G社は,Sシステムの構築をITベンダーF社に委託した。F社との協議の結果,クラウドサービスプロバイダE社のクラウドサービス上にSシステムを構築する方針にした。
〔APIの設計〕
Sシステムには,将来的には他社が提供するスマートフォン専用アプリケーションプログラムからもアクセスすることを想定し,RESTful API方式のAPI(以下,SシステムのAPIをS-APIという)を用意する。RESTful APIの設計原則の一つにセッション管理を行わないという性質がある。この性質を a という。
E社が提供するクラウドサービスのサービス一覧を表1に,サービスYのシステム構成を図2に,S-API呼出し時の動作概要を図3に,S-APIの仕様を表2に,Sシステムの仕様を図4に,それぞれ示す。
表1 E社が提供するクラウドサービスのサービス一覧(抜粋)
図2 サービスYのシステム構成
図3 S-API呼出し時の動作概要(抜粋)
表2 S-APIの仕様(抜粋)
図4 Sシステムの仕様(抜粋)
〔脆弱性診断の結果〕
Sシステムの構築が進み全ての機能を動作確認できたので,G社でSシステムのセキュリティを担当するRさんが,セキュリティベンダーであるU社に脆弱性診断(以下,診断という)を依頼した。U社による診断レポートを表3に示す。
表3 U社による診断レポート(抜粋)
表3の項番について,U社のセキュリティコンサルタントで情報処理安全確保支援士(登録セキスペ)のZ氏は,次のように説明した。
・認証APIで,利用者ID“user01”での認証が成功した後,診断中に発行されたJWTのデコード結果は,表4のとおりであった。
表4 JWTのデコード結果(抜粋)
・ここで,表4中の"RS256"の代わりに“NONE”を指定し,“user01”を他の利用者IDに改ざんしたJWTを送信したところ,改ざんしたJWTの検証が成功し,他の利用者へのなりすましができた。
項番2〜4についても説明を受けた後,G社は,表3の脆弱性を分析し,対策について,F社,U社を交えて検討した。
Rさんが取りまとめた脆弱性の分析と対策案を表5に示す。
表5 脆弱性の分析と対策案
全ての対応が完了した後,試用モニターを対象に,サービスYの提供を開始した。
〔セキュリティの強化〕
G社は,試用モニターへのサービスYの提供期間中に,インシデント対応に必要なログの取得方法を検討することになり,F社と協議した。
F社によれば,ログ取得モジュールを実装するには時間が掛かるが,ログ取得モジュールを実装しなくても,サービスNを導入することによって,通信ログを取得できるという。
サービスNにおけるWAFルールの記述形式を図5に示す。
図5 サービスNにおけるWAFルールの記述形式
Rさんは,サービスNのSシステムへの導入を責任者に提案し,承認を得た。サービスNの導入完了後,サービスYの提供を開始した。
〔新たな脆弱性への対応〕
数週間後,ライブラリHというオープンソースのライブラリに脆弱性Vという脆弱性があることが公表された。Rさんは,脆弱性Vについての関連情報を図6のように取りまとめた。
図6 脆弱性Vについての関連情報(抜粋)
Rさんは,脆弱性Vへの対応方針をZ氏に相談した。Z氏は,F社の回答を待ってからの対応では遅いので,システムに影響を与えない検証コードをSシステムに対して実行し,外部から脆弱性Vを悪用できるか検証するよう提案した。Rさんは,Z氏の協力の下,図7に示す手順で検証を実施した。
図7 Rさんが実施した検証手順
図8 作成した検証コード
検証の結果,外部から脆弱性Vを悪用できることが確認できた。この結果を踏まえて,Rさんは,脆弱性Vを悪用する攻撃に備え,E社からWAFルールが提供されるまでの間,現在判明している悪用パターンに対応可能な暫定的なWAFルールで攻撃を遮断することにした。
Rさんが考えたWAFルールの案を表6に示す。
表6 WAFルールの案
Rさんは,例えば“jnDI”のように大文字小文字を入れ替える手口によって,ルール1と2それぞれで,案のパターンを回避する方法があることに気付いた。④このような手口にも対応できるように案を変更した。その後,変更後の案の確認をZ氏に依頼した。
Z氏は,⑤本番運用開始後の一定期間においては,WAFルールの動作には“検知”を設定して,サービスYが今までどおり利用できるかを確認することを助言した。Rさんは,Z氏の助言を踏まえて,WAFルールを設定した。
後日,Sシステムでは,ライブラリHを利用しているとの回答がF社からあった。また,E社からサービスNにおけるWAFルールが提供された。その後,脆弱性Vを修正したバージョンがライブラリHの公式Webサイトで配布され,Sシステム内のライブラリHのバージョンを最新にすることで,脆弱性Vへの対応が完了した。
設問1 本文中の a に入れる適切な字句を答えよ。
解答・解説
解答例
ステートレス
解説
ー
設問2 〔脆弱性診断の結果〕について答えよ。
(1)表3中の b に入れる適切な数値を,小数点以下を四捨五入して,整数で答えよ。
解答・解説
解答例
500
解説
ー
(2)表5中の下線①について,修正後のライブラリQで行うJWTの検証では,どのようなデータに対してどのような検証を行うか。検証対象となるデータと検証の内容を,それぞれ20字以内で答えよ。
解答・解説
解答例
データ:JWT ヘッダ内の alg に指定された値
内容:NONE でないことを検証する。
解説
ー
(3)表5中の下線②について,P呼出し処理に追加すべき処理を,40字以内で具体的に答えよ。
解答・解説
解答例
JWT に含まれる利用者 ID が mid の値と一致するかどうかを検証する処理
解説
ー
(4)表5中の c に入れる適切な字句を表2中の用語で答えよ。
解答・解説
解答例
共通モジュール P
解説
ー
(5)表5中の d に入れる適切な処理内容を,30字以内で答えよ。
解答・解説
解答例
連続失敗回数がしきい値を超えたらアカウントをロックする処理
解説
ー
設問3 〔新たな脆弱性への対応〕について答えよ。
(1)図7中の下線③について,テストサーバに実装する仕組みを,35字以内で具体的に答えよ。
解答・解説
解答例
テストサーバの index.html へのアクセスを記録し,確認する仕組み
解説
ー
(2)表6中の e , f に入れる適切な字句を,図5中から選び答えよ。
解答・解説
解答例
e:Header
f:Header
解説
ー
(3)本文中の下線④の変更後の案について,表6中のルール1に記述すべきパターンを,図5の記述形式で答えよ。
解答・解説
解答例
¥W[jJ][nN][dD][iI]¥W
¥W(j|J)(n|N)(d|D)(i|I)¥W
解説
ー
(4)本文中の下線⑤について,WAFルールの動作に“遮断”ではなく“検知”を設定することによる利点と,“検知”に設定した際に被害を最小化するために実施すべき内容を,それぞれ25字以内で答えよ。
解答・解説
解答例
利点:誤検知による遮断を防ぐことができる。
内容:アラートを受信したら攻撃かどうかを精査する。
解説
ー
IPA公開情報
出題趣旨
多くのシステムにおいて,スマートフォンのアプリケーションプログラムを利用した API 連携が行われる 中,API の脆弱性を作り込むケースが増えている。
本問では,API セキュリティを題材として,指摘された脆弱性に対して対策を立案する能力を問う。
採点講評
公開前