【解答速報】情報処理安全確保支援士 令和6年度春季【午後 問1】
2024年4月21日実施の情報処理安全確保支援士解答速報
毎年のことながら7~8割の正解率かと思います。間違いや不明点ございましたらコメントください。
本日21時頃公開を目指したいと思います。
- 1. 問1 APIセキュリティに関する問題
- 1.1. 設問1
- 1.2. 設問2 [脆弱性診断の結果]について答えよ。
- 1.2.1. (1) 表3中のbに入れる適切な数値を, 小数点以下を四捨五入して,整数で答えよ。
- 1.2.2. (2) 表5中の下線1について, 修正後のライブラリQで行うJWTの検証では, どのようなデータに対してどのような検証を行うか。検証対象となるデータと検証の内容を,それぞれ20字以内で答えよ。
- 1.2.3. (3) 表5中の下線2について,P呼出し処理に追加すべき処理を, 40字以内で具体的に答えよ。
- 1.2.4. (4) 表5中のcに入れる適切な字句を 表2中の用語で答えよ
- 1.2.5. (5) 表5中のdに入れる適切な処理内容を, 30字以内で答えよ。
- 1.3. 設問3 [新たな脆弱性への対応]について答えよ。
- 1.3.1. (1) 図7中の下線3について, テストサーバに実装する仕組みを, 35字以内で具体的に答えよ。
- 1.3.2. (2) 表6中の e,f に入れる適切な字句を,図5中から選 び答えよ。
- 1.3.3. (3) 本文中の下線4の変更後の案について,表6中のルール1に記述すべきパターンを,図5の記述形式で答えよ。
- 1.3.4. (4) 本文中の下線5について, WAF ルールの動作に “遮断” ではなく “検知”を設定することによる利点と, “検知” に設定した際に被害を最小化するために実施すべき内容を, それぞれ 25字以内で答えよ。
- 2. おすすめ参考書
問1 APIセキュリティに関する問題
設問1
解答
ステートレス
解説
設問2 [脆弱性診断の結果]について答えよ。
(1) 表3中のbに入れる適切な数値を, 小数点以下を四捨五入して,整数で答えよ。
解答
500
解説
4桁の数字の総数は10,000個
これを1秒に10回試行すると、MAX1,000回試行することになります。
認証に成功する確率はどの数字であっても等しいため、初回に成功する可能性も最後に成功する可能性も同一です。
よって、認証に成功する回数を試行数で割ります。
(1+2+3+4+・・・10000)/ 10000
=1 / 2 × 10000 × ( 10000 + 1 ) / 10000
=5000.5
1回の試行で0.1秒なので
5000.5 / 10 = 500.05秒
四捨五入するので、平均時間としての解答は500秒
(2) 表5中の下線1について, 修正後のライブラリQで行うJWTの検証では, どのようなデータに対してどのような検証を行うか。検証対象となるデータと検証の内容を,それぞれ20字以内で答えよ。
解答
検証対象となるデータ | JWTのヘッダ及びペイロード |
検証の内容 | ヘッダのアルゴリズムによる署名の検証 |
解説
JWTの検証による基本的な問題です。
(3) 表5中の下線2について,P呼出し処理に追加すべき処理を, 40字以内で具体的に答えよ。
解答
JWT内の利用者IDとGETパラメータのmidが一致していること
解説
認証成功しているアカウント自身の情報のみ取得できるように制御が必要
(4) 表5中のcに入れる適切な字句を 表2中の用語で答えよ
解答
サービスL
解説
表3の項番3の内容を読むと、パラメータstatusを追加すると利用者ステータスを更新できると記載されています。
しかし表2の利用者APIのPUTのパラメータにはそのような仕様は記載されていません。なので、サービスMサービスLには仕様には記載されていない実装がされていると推測できます。
(追記)
サービスMと記載していましたが、文章読み間違えておりました。解答としては共通モジュールPのあるサービスLです。サービスMはDBです。
(5) 表5中のdに入れる適切な処理内容を, 30字以内で答えよ。
解答
G社スマホアプリの生体認証を利用する
アカウントロックを導入する
解説
ID/パスワードによる認証は「知識」に該当します。2要素認証にするには、ほかの要素である「所有」「生体」を使う必要があります。
問題文中に「所有」「生体」について記述がないので、該当していればいいのか、、
的外れな解答していました、、
「2要素認証が突破されないようにするためにはどうするべきか」という意図の設問ですね。あとの文章の「しきい値」にもつながるので、アカウントロックなどが正解だと思われます。
設問3 [新たな脆弱性への対応]について答えよ。
(1) 図7中の下線3について, テストサーバに実装する仕組みを, 35字以内で具体的に答えよ。
解答
サービスNによりコマンドCが実行されたことを検知する仕組み
解説
(2) 表6中の e,f に入れる適切な字句を,図5中から選 び答えよ。
解答
e | Header |
f | Header |
解説
攻撃コマンドはx-api-versionヘッダに指定されるため、ヘッダを検査対象とする必要があります。
(3) 本文中の下線4の変更後の案について,表6中のルール1に記述すべきパターンを,図5の記述形式で答えよ。
解答
¥W(j|J)(n|N)(d|D)(i|I)¥W
解説
(4) 本文中の下線5について, WAF ルールの動作に “遮断” ではなく “検知”を設定することによる利点と, “検知” に設定した際に被害を最小化するために実施すべき内容を, それぞれ 25字以内で答えよ。
解答
利点 | 正しい通信を誤遮断しないための期間を設ける |
実施すべき内容 | 検知された際に迅速に対策をとれる運用を確立する |
解説
おすすめ参考書
私が情報処理技術者試験を受ける際にお世話になったのはこのシリーズのみ
1回試行するのに0.1秒
10000件あるんだったら平均したら5000回目か、5001回目には、突破される。
5001回目でも500.1秒だから500回ではないのでしょうか??
すいません計算間違っておりました。
計算すると平均500.05秒なので、四捨五入して500秒ですね。
設問2(5)
単純に、失敗回数によってアカウントロックすると書いたのですが、いかがでしょうか。しきい値とも整合が取れると思いました。
ご指摘ありがとうございます!2要素認証に引っ張られておかしな解答していますね。
アカウントロックで問題ないと思います。
設問2 (5)ですが、「一つの文字列Xあたりの二要素認証試行回数制限」かなと思いましたがどうでしょう。
コメントありがとうございます。
シンプルに「試行回数に対するアカウントロック」が正しそうです。
設問2の4、実際にDB(サービスM)に格納されている利用者ステータスを更新している処理が記述されているのは共通モジュールPです。
なので回答としては共通モジュールPが正しいと思います。
すいません解答修正いたしました。解答としては「サービスL」が正しいと思っております。
確かに利用者ステータスの更新を実際に行っているのは共通モジュールPかもしれませんが、問題文の「パラメータを検証せず全てcに送信していた」という1文に当てはめたときに
サービスKからサービスLへの通信を指していると考える方が妥当かと考えております。
設問3-(3)ですが、「¥W」が任意の非英数字とマッチする特殊文字のため、「W¥」のように反転することはあり得ないのではないでしょうか。
回答は「¥W(j|J)(n|N)(d|D)(i|I)¥W」が正しいと思いました。
すいません記載間違いです!
ご指摘の通り「¥W(j|J)(n|N)(d|D)(i|I)¥W」が正しいです。