令和4年度 春期 情報処理安全確保支援士試験 午前II 問1
テクノロジセキュリティ技術Webアプリケーション・ソフトウェアの脆弱性
Webサーバのログを分析したところ,Webサーバへの攻撃と思われるHTTPリクエストヘッダが記録されていた。次のHTTPリクエストヘッダから推測できる,攻撃者が悪用しようとしていた可能性が高い脆弱性はどれか。ここで,HTTPリクエストヘッダ中の“%20”は空白を意味する。

図の説明テキスト
〔HTTP リクエストヘッダの一部〕
GET /cgi-bin/submit.cgi?user=;cat%20/etc/passwd HTTP/1.1
Accept: /
Accept-Language: ja
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: (省略)
Host: test.example.com
Connection: Keep-Alive
解答・解説
正解: イ. OSコマンドインジェクション
正解の根拠は、提示された図表「〔HTTP リクエストヘッダの一部〕」の1行目にあります。
GET /cgi-bin/submit.cgi?user=;cat%20/etc/passwd HTTP/1.1
このリクエストでは、CGIプログラム(submit.cgi)に対するパラメータ user の値として、;cat%20/etc/passwd という文字列が送信されています。ここで注目すべき点は以下の通りです。
;(セミコロン): UNIX系のOSシェルにおいて、複数のコマンドを連続して実行するための区切り文字(メタキャラクタ)です。cat%20/etc/passwd: 問題文の指定の通り%20が空白を意味するため、cat /etc/passwdと解釈されます。これは、UNIX系OSにおいてシステム上のユーザー情報が記録されたパスワードファイル(/etc/passwd)の内容を表示させる標準的なOSコマンドです。
攻撃者は、Webアプリケーション側で入力値の無害化(サニタイジング)が不十分であると想定し、OSのコマンド呼び出し部分に悪意のあるコマンドを注入(インジェクション)して不正に実行させようとしています。したがって、悪用しようとしている可能性が高い脆弱性はOSコマンドインジェクションとなります。
各選択肢の解説
- ア HTTPヘッダインジェクション(HTTP Response Splitting): HTTPリクエストの入力値に改行文字(CRLFなど)を挿入し、不正なHTTPレスポンスヘッダを出力させたり、レスポンスを分割・偽造したりする攻撃です。今回のリクエストには改行文字の挿入は見られません。
- イ OSコマンドインジェクション: 正解です。上記の通り、OSのコマンド(
cat /etc/passwd)を不正に実行させようとする意図が明確に表れています。 - ウ SQLインジェクション: データベースの問い合わせ言語であるSQLの文法を悪用し、不正なデータベース操作を行う攻撃です。典型的な攻撃では
'(シングルクォート)やOR 1=1などのSQL文字列が用いられますが、今回のリクエストには見られません。 - エ クロスサイトスクリプティング: Webページに悪意のあるスクリプト(JavaScriptなど)を埋め込み、それを閲覧した他のユーザーのブラウザ上でスクリプトを実行させる攻撃です。典型的な攻撃では
<script>...</script>などのHTMLタグが用いられますが、今回のリクエストには見られません。