令和4年度 春期 情報処理安全確保支援士試験 午前II 問1

Webサーバのログを分析したところ,Webサーバへの攻撃と思われるHTTPリクエストヘッダが記録されていた。次のHTTPリクエストヘッダから推測できる,攻撃者が悪用しようとしていた可能性が高い脆弱性はどれか。ここで,HTTPリクエストヘッダ中の“%20”は空白を意味する。

〔HTTP リクエストヘッダの一部〕
図の説明テキスト

〔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タグが用いられますが、今回のリクエストには見られません。

Spineチーム