ホーム > 情報処理安全確保支援士試験 > 2018年 秋期
情報処理安全確保支援士試験 2018年 秋期 午前2 問13
Webアプリケーションの脆弱性を悪用する攻撃手法のうち、Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し、不正にシェルスクリプトを実行させるものは、どれに分類されるか。
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション(正解)
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
解説
Webアプリケーションの脆弱性を悪用する攻撃手法【午前2 解説】
要点まとめ
- 結論:Webページの入力が直接OSコマンドに渡され、不正にシェルスクリプトを実行される攻撃は「OSコマンドインジェクション」です。
- 根拠:Perlのsystem関数やPHPのexec関数はOSコマンドを実行するため、入力値の検証不足が攻撃の起点となります。
- 差がつくポイント:攻撃対象がOSコマンドであることを理解し、他の選択肢と混同しないことが重要です。
正解の理由
「イ: OSコマンドインジェクション」が正解です。これは、Webアプリケーションがユーザー入力を適切に検証せずに、Perlのsystem関数やPHPのexec関数などのOSコマンド実行関数に渡すことで、攻撃者が任意のシェルコマンドを実行できる脆弱性を指します。結果として、サーバー上で不正な操作が可能となり、情報漏洩やシステム破壊などの深刻な被害をもたらします。
よくある誤解
HTTPヘッダインジェクションやクロスサイトリクエストフォージェリは、攻撃の対象や手法が異なり、OSコマンドの直接実行とは関係ありません。
解法ステップ
- 問題文で「Perlのsystem関数やPHPのexec関数」とあることを確認する。
- これらの関数がOSコマンドを実行するための関数であることを理解する。
- ユーザー入力がこれらの関数に渡されることで、任意のコマンド実行が可能になる脆弱性を思い出す。
- 選択肢の中で「OSコマンドインジェクション」に該当するものを選ぶ。
- 他の選択肢の特徴と比較し、混同しないように注意する。
選択肢別の誤答解説
- ア: HTTPヘッダインジェクション
HTTPヘッダの改ざんや不正挿入を狙う攻撃であり、OSコマンドの実行とは無関係です。 - イ: OSコマンドインジェクション
正解。ユーザー入力を通じてOSコマンドを不正実行させる攻撃です。 - ウ: クロスサイトリクエストフォージェリ
ユーザーの認証情報を悪用して意図しない操作をさせる攻撃で、コマンド実行とは異なります。 - エ: セッションハイジャック
セッションIDを盗んで不正ログインする攻撃であり、コマンド実行とは関係ありません。
補足コラム
OSコマンドインジェクションは、入力値の検証不足やエスケープ処理の欠如が原因で発生します。対策としては、ホワイトリスト方式の入力検証や、OSコマンドを直接実行しない設計、パラメータ化されたAPIの利用が推奨されます。また、Webアプリケーションファイアウォール(WAF)による検知も有効です。
FAQ
Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはOSのコマンドを不正実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。対象が異なります。
A: OSコマンドインジェクションはOSのコマンドを不正実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。対象が異なります。
Q: なぜsystem関数やexec関数が危険なのですか?
A: これらの関数は外部のOSコマンドを実行するため、ユーザー入力を直接渡すと任意のコマンドが実行されてしまうリスクがあります。
A: これらの関数は外部のOSコマンドを実行するため、ユーザー入力を直接渡すと任意のコマンドが実行されてしまうリスクがあります。
関連キーワード: OSコマンドインジェクション, system関数, exec関数, Webアプリケーション脆弱性, シェルスクリプト実行, 入力検証, セキュリティ対策