HTTPリクエストヘッダーから推測できる脆弱性|科目A-1(応用情報技術者) 令和7年 春期午前試験 問36

出典:令和7年春期 午前 問36 分野:セキュリティ / 情報セキュリティ
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
  • ア:HTTPヘッダーインジェクション(HTTP Response Splitting)
  • イ:OSコマンドインジェクション
  • ウ:SQLインジェクション
  • エ:クロスサイトスクリプティング
応用情報技術者
解説

リクエストのパラメータには、次の文字列が含まれています。

user=;cat%20/etc/passwd

「%20」は空白を表すため、実際には次のような文字列になります。

user=;cat /etc/passwd

セミコロン「;」は、OSのシェル上で複数のコマンドを区切って実行するために使われることがあります。また、cat /etc/passwdは、UNIX系OSでユーザー情報が記録されたファイルの内容を表示しようとするコマンドです。

これより、攻撃者は、入力値にOSコマンドを混入させ、Webサーバ上で不正なコマンドを実行しようとしていた可能性が高いと判断できます。

OSコマンドインジェクション

したがって、が適切です。

❌他選択肢が誤りの理由
ア:HTTPヘッダーインジェクション(HTTP Response Splitting)
⇒HTTPヘッダーインジェクションは、改行コードなどを入力してHTTPレスポンスヘッダーを不正に追加・分割する攻撃です。このリクエストには、レスポンスヘッダーを操作するための改行コードは見られません。
ウ:SQLインジェクション
⇒SQLインジェクションは、入力値にSQL文を混入させ、データベースを不正に操作する攻撃です。このリクエストには、SELECTやUNIONなどのSQL文ではなく、OS上で実行されるcatコマンドが含まれています。
エ:クロスサイトスクリプティング
⇒クロスサイトスクリプティングは、Webページにスクリプトを混入させ、利用者のブラウザ上で実行させる攻撃です。このリクエストには、scriptタグやJavaScriptコードではなく、OSコマンドが含まれています。
TSUNAGARU-ADVICE

まず押さえたいこと

リクエスト中の「;cat /etc/passwd」は、区切り記号「;」の後にOSコマンドを続け、サーバ上のファイルを読み出そうとする形です。利用者の入力がそのままシェルへ渡されるOSコマンドインジェクションを悪用しようとした可能性が高いと判断できます。

迷ったときの判断軸

「cat」「/etc/passwd」「;」など、OSのコマンドやシェルの制御記号が含まれているかに注目します。SQL文の断片ならSQLインジェクション、HTMLやスクリプトならクロスサイトスクリプティング、改行コードを使ってHTTPヘッダーを分割するならHTTPヘッダーインジェクションです。

科目Bにつなげるために

特に情報処理安全確保支援士試験合格を目指す方は、ログ中の文字列から攻撃対象の層を見分ける視点が重要です。OSコマンドインジェクションへの対策として、シェルを介さないAPIの利用・入力値の厳格な検証・実行権限の最小化を結び付けて覚えましょう。