この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

本問は、Webサーバのログに記録されたHTTPリクエストから、攻撃者が悪用しようとした脆弱性を推測する問題です。注目すべきは、リクエスト行のクエリ文字列「user=;cat%20/etc/passwd」です。%20は空白を意味するので、これは「user=;cat /etc/passwd」となります。先頭のセミコロン(;)はOSのシェルでコマンドを区切る記号で、続く「cat /etc/passwd」はUNIX系OSでパスワード関連ファイルの内容を表示するOSコマンドです。つまり攻撃者は、CGIプログラムがパラメタの値をOSのコマンドとして実行してしまう不備を突いて、任意のOSコマンドを実行させようとしています。これはOSコマンドインジェクションです。したがって選択肢bが正解です。OSコマンドインジェクションは、Webアプリケーションが外部からの入力をシェルコマンドの一部として組み立てて実行する際に、入力に含まれるコマンド区切り文字やコマンドが実行されてしまう脆弱性で、cat・lsなどのコマンドやセミコロン・パイプ(|)などが攻撃の手掛かりになります。対策はシェルを起動する関数の使用を避けることや、入力値のチェックです。他の選択肢のHTTPヘッダインジェクション・SQLインジェクション・クロスサイトスクリプティングは、このリクエストの特徴(OSコマンドの実行)とは合致しません。

なぜ他の選択肢は違うのか

選択肢 ア
HTTPヘッダインジェクション(HTTP Response Splitting)は、レスポンスヘッダに改行コードを注入して不正なヘッダやレスポンスを作り出す攻撃です。本問のリクエストにはOSコマンド(cat /etc/passwd)が含まれており、レスポンスヘッダの改ざんを狙う特徴は見られないため当てはまりません。
選択肢 ウ
SQLインジェクションは、入力値にSQL文の断片を注入してデータベースを不正に操作する攻撃です。本問のリクエストに含まれるのはSQL文ではなくOSコマンド(cat /etc/passwd)であり、データベースへの攻撃を示す特徴がないため当てはまりません。本問のリクエストに含まれるのはSQL文ではなくOSコマンド(cat /etc/passwd)であり、データベースへの不正操作を狙う特徴がないため、SQLインジェクションには当てはまりません。
選択肢 エ
クロスサイトスクリプティング(XSS)は、Webページにスクリプトを注入して利用者のブラウザ上で実行させる攻撃です。本問のリクエストにはスクリプトではなくOSコマンドが含まれており、ブラウザ上でのスクリプト実行を狙う特徴がないため当てはまりません。本問のリクエストにはスクリプトではなくOSコマンドが含まれており、利用者のブラウザ上でスクリプトを実行させるXSSの特徴がないため、クロスサイトスクリプティングには当てはまりません。

解くときのポイント

OSコマンドインジェクション=入力に含むコマンド区切り(;・|)やcat・lsなどのOSコマンドが手掛かり。本問の『;cat /etc/passwd』が典型。SQLインジェクション(SQL文)・XSS(スクリプト)・HTTPヘッダインジェクション(改行注入)と区別する。