![見出し画像](https://assets.st-note.com/production/uploads/images/155652795/rectangle_large_type_2_5a87a43161284d5427902801c87f0f9e.jpeg?width=1200)
【2022年秋期】情報処理安全確保支援士 午後I試験【問1】
【出題趣旨】
製品開発においては、設計・開発時に十分なセキュリティ対策を行うことが重要である。脆弱性単体では発生し得る被害が小さいように見えたとしても、他の脆弱性と組み合わせられることで、より大きな被害が発生することもある。
本問では、IoT製品の開発を題材に、開発者として脆弱性単体だけでなく、複数の脆弱性の組合せによって生じるリスクを特定する能力、及びアプリケーションプログラムのセキュリティ対策を策定する能力を問う。
問1(1)
![](https://assets.st-note.com/img/1727272195-REozaFIhbmvXgduW39LJGQDK.png)
知識の問題です。
DNSの応答を偽装したりするのではなく、正規のDNSサーバに偽装したキャッシュやレコードを登録する攻撃はDNSキャッシュポイズニングです。
正解は a = "DNSキャッシュポイズニング" です。
問1(2)
DNSキャッシュサーバが使っているプロトコルを解答する問題です。
DNSの通信には基本的にUDPが用いられることが多いですが、稀にTCPを使う場合もあります。今回はDNSキャッシュポイズニングが成功しているので、UDPを使用していると考えることができます。
正解は b = エ:UDP です。
問1(3)
![](https://assets.st-note.com/img/1727272711-BUp9E7rA0bHutZR3YJDXQIOo.png)
UDPによる通信ではシーケンス番号やTCPのSYN/ACKのようなコネクション管理を行いません。正常な通信に割り込めさえすれば、DNSの応答を偽ることが可能です。
よって、模範解答は「権威DNSサーバからの応答よりも早く到達する。」です。
問1(4)
![](https://assets.st-note.com/img/1727272909-upeBxK1GisXWEDjUPckS325n.png)
私は「HTTP通信の場合はHTTPSとしてリダイレクトする実装」としてしまいました。
他の方の解説や解説等を見る限り、Wサーバの自己署名証明書(オレオレ証明書)のみをインストールしてWサーバ以外との通信ではエラーが発生するようにすることが正解です。
よって、模範解答は「サーバ証明書を検証し、通信相手がWサーバであることを確認する実装」です。
問1(5)
![](https://assets.st-note.com/img/1727273447-DgVoBY3e8WuAHL4bUQJfnSF7.png?width=1200)
証明書にはいくつか種類がありますが、本問ではソフトウェア(コード)に対しての証明書で、このような証明書はコードサイニング証明書と呼ばれます。
問2
![](https://assets.st-note.com/img/1727273876-mUzfkJPnQ0hGAu32HRyoEwtq.png?width=1200)
SNMPではコミュニティと呼ばれるネットワーク範囲でSNMPマネージャとエージェントの管理を行います。"public"や"private"などが例としてよく用いられます。
よって、模範解答は d =「シェルが実行するコマンドをパラメータで不正に指定できて」です。
問3(1)
この問題が最も難易度が高かったです。
脆弱性AとBを組み合わせたクロスサイトリクエストフォージェリのフローがイメージできるかがポイントです。
模範解答は「攻撃リクエストをPOSTメソッドで送信させるスクリプトを含むページを表示させる仕組み」となります。
問3(2)
![](https://assets.st-note.com/img/1727273944-z5rLK1ZqYO8gF2QhwRsxkjD4.png)
模範解答は「推測困難である」です。
問4
脆弱性A ア:OSコマンドインジェクション
→不正にOSのコマンドを実行させる攻撃手法です。任意の文字列の入力を受け付けない。意味のあるコマンドを受け取った場合、サニタイジング(エスケープ処理)するなどの対策が有効です。
脆弱性B オ:クロスサイトリクエストフォージェリ
→攻撃対象のWebサーバに対し、不正なリクエストをユーザに送付させる攻撃です。罠サイトに誘導したユーザに不正なリクエストを含んだスクリプトを実行させることで、Webサーバに正常なユーザからのリクエストとして処理させることが可能となります。
他の選択肢も確認しておきましょう。
クロスサイトスクリプティング
→不正なスクリプトをユーザに実行させる攻撃です。クロスサイトリクエストフォージェリはWebサーバを攻撃対象としますが、クロスサイトスクリプティングはユーザ(ブラウザ)に対しての攻撃となります。SQLインジェクション
→攻撃対象に不正なSQLを実行させる攻撃です。
利用者からのSQL用パラメータやSQLを受け取ったあと、サニタイジング(エスケープ処理)するなどの対策が有効です。コードインジェクション
→外部からの何らかの入力をプログラムコードとして認識し、実行してしまう攻撃です。問い合わせフォームなどを介して、任意のプログラムコードを実行できる事例などが報告されています。JavaScriptやNode.jsなどで動的なサイトでユーザの入力を受け付ける場合は注意が必要です。サーバサードリクエストフォージェリ
→攻撃対象がWebサーバであり、不正なリクエストを送付させる目的はクロスサイトリクエストフォージェリと同じです。違いはリクエストを送付させる対象で、ユーザ(Webブラウザ)ではなく、攻撃対象のサーバと同セグメントにある通信可能なサーバを対象に攻撃を行います。