正解は イ
本問は、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コマンドの実行)とは合致しません。
OSコマンドインジェクション=入力に含むコマンド区切り(;・|)やcat・lsなどのOSコマンドが手掛かり。本問の『;cat /etc/passwd』が典型。SQLインジェクション(SQL文)・XSS(スクリプト)・HTTPヘッダインジェクション(改行注入)と区別する。