ホーム > 情報処理安全確保支援士試験 > 2011年 秋期
情報処理安全確保支援士試験 2011年 秋期 午前2 問16
Web アプリケーションの脆弱性を悪用する攻撃手法のうち, Perl の system 関数やPHP の exec 関数など外部プログラムの呼出しを可能にするための関数を利用し,不正にシェルスクリプトや実行形式のファイルを実行させるものはどれに分類されるか。
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション(正解)
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
解説
Webアプリケーションの脆弱性に関する問題です。ここでは外部プログラムの呼び出しを可能にする関数(Perlの
system
関数やPHPのexec
関数など)を利用して、不正にシェルスクリプトや実行ファイルを実行させる攻撃手法の分類について解説します。攻撃手法の分類
1. OSコマンドインジェクション(正解:イ)
-
概要
OSコマンドインジェクションは、Webアプリケーションに対して外部のOSコマンドを実行させる攻撃です。
例えば、ユーザ入力をそのままsystem()
やexec()
といった関数に渡し、不正なコマンドを実行させることでシェル上で任意の操作が行われてしまいます。 -
動作イメージ
ユーザーがフォームなどに入力したデータが、そのままコマンドの一部として実行されます。
例:system("ls " . $_GET['input']);
ここで$_GET['input']
に; rm -rf /
のような悪意のあるコマンドが埋め込まれていると、予期せぬコマンドが実行されてしまいます。 -
被害
- システム上のファイル操作や削除
- 情報漏洩
- サーバ乗っ取り(リモートシェル取得)
2. 不正解の選択肢の説明
-
ア: HTTPヘッダインジェクション
HTTPレスポンスのヘッダ部分に不正な値を挿入し、レスポンス分割攻撃やキャッシュ汚染を引き起こす手法です。OSコマンドを直接実行させるわけではありません。 -
ウ: クロスサイトリクエストフォージェリ (CSRF)
利用者に気づかれないまま、不正なリクエストを送信させる攻撃。ユーザーの認証情報を使って操作を実行させるものですが、シェルコマンドの直接実行とは異なります。 -
エ: セッションハイジャック
セッションIDを盗み取り、他人のセッションとして不正アクセスする攻撃。コマンド実行とは関係ありません。
まとめ
問題文にある「Perlの
system
関数やPHPのexec
関数を利用して、悪意のあるプログラムを実行させる」攻撃は、**Webアプリケーションにおける「OSコマンドインジェクション」**に分類されます。外部プログラムの実行系関数を使う場合は、必ず入力値の検証・エスケープを行い、不正なコマンドが注入されないように注意する必要があります。これが脆弱性対策の基本です。