資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

SC 令和6年度春期 午後 問1

 

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 セキュリティを題材として,指摘された脆弱性に対して対策を立案する能力を問う。

採点講評

 公開前

ナビ 次問