この概念が出た関連問題

この試験の対策ガイド

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

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

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

正解は イ

解説

Webアプリケーションの脆弱性を悪用する攻撃のうち、入力文字列がPHPのexec()やsystem()などシェルを呼び出す関数に渡されることを利用して、任意のOSコマンドを実行させる攻撃は「OSコマンドインジェクション」(b)である。攻撃者はフォームや検索欄に「; rm -rf /」のようなコマンドを埋め込み、サーバOS上で意図しない操作(ファイル削除・情報窃取・バックドア設置など)を引き起こす。防止策はシェルを呼び出す関数の使用を避けること、使用する場合は入力値をエスケープ(`escapeshellarg()`等)またはホワイトリストで検証すること。WAF(Webアプリケーションファイアウォール)による遮断も有効な対策の一つ。他の選択肢との違いを整理すると:HTTPヘッダインジェクション(a)はレスポンスヘッダへの改行コード挿入、CSRF(c)は正規ユーザのブラウザを使って不正リクエストを送らせる攻撃、セッションハイジャック(d)はセッションIDを盗んでなりすます攻撃で、いずれも本問とは別の攻撃手法である。

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

選択肢 ア
HTTPヘッダインジェクションは、HTTPレスポンスヘッダに改行コード(CR/LF)を挿入し、偽のヘッダや本文を追加してセッション固定攻撃やキャッシュポイズニングを引き起こす攻撃手法。exec()関数などシェルコマンド実行とは直接関係がなく、本問の説明には当てはまらない。
選択肢 ウ
クロスサイトリクエストフォージェリ(CSRF)は、被害者がログイン中のサイトに対し、悪意のあるサイトから被害者のブラウザを介して意図しないリクエストを送信させる攻撃。PHPのexec()関数やシェルスクリプトの実行とは無関係であり、本問の説明には該当しない。
選択肢 エ
セッションハイジャックは、正規ユーザのセッションIDを盗み取り(XSSやパケット盗聴などによって)、そのセッションを悪用して正規ユーザに成りすます攻撃手法。入力文字列がシェルコマンドとして実行されるOSコマンドインジェクションとは全く異なる攻撃類型である。

解くときのポイント

OSコマンドインジェクション対策: シェルを呼び出す関数の使用を避ける(exec・system・passthru等)、やむを得ず使う場合はescapeshellarg()でエスケープ、WAFによるフィルタリング。