ホーム > 情報処理安全確保支援士試験 > 2017年 春期
情報処理安全確保支援士試験 2017年 春期 午前2 問12
Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し,不正にシェルスクリプトを実行させるものは,どれに分類されるか。
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション(正解)
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
解説
Webアプリケーションの脆弱性を悪用する攻撃手法【午前2 解説】
要点まとめ
- 結論:Webページの入力が直接OSコマンド実行関数に渡される攻撃は「OSコマンドインジェクション」です。
- 根拠:Perlのsystem関数やPHPのexec関数はOSコマンドを実行するため、入力値が不正に操作されると任意コマンドが実行されます。
- 差がつくポイント:HTTPヘッダやセッション操作と混同せず、入力値がOSコマンドに渡る点を正確に理解することが重要です。
正解の理由
選択肢イの「OSコマンドインジェクション」は、Webアプリケーションがユーザ入力を適切に検証せずに、Perlのsystem関数やPHPのexec関数などのOSコマンド実行関数に渡すことで、攻撃者が任意のシェルコマンドを実行できる脆弱性を指します。問題文の条件に完全に合致するため正解です。
よくある誤解
HTTPヘッダインジェクションやクロスサイトリクエストフォージェリは、入力値の扱い方や攻撃対象が異なり、OSコマンドの直接実行とは関係ありません。
解法ステップ
- 問題文の「Perlのsystem関数やPHPのexec関数に渡される」とある部分に注目する。
- これらの関数はOSのシェルコマンドを実行するため、入力値がコマンドとして実行される可能性がある。
- そのため、入力値を悪用して任意のOSコマンドを実行される攻撃手法を選ぶ。
- 選択肢の中でOSコマンド実行に関する攻撃は「OSコマンドインジェクション」であることを確認する。
- よって、正解はイと判断する。
選択肢別の誤答解説
- ア: HTTPヘッダインジェクション
HTTPヘッダの改ざんや不正挿入を狙う攻撃で、OSコマンドの実行とは無関係です。 - イ: OSコマンドインジェクション
ユーザ入力がOSコマンド実行関数に渡され、任意コマンドを実行される攻撃で正解です。 - ウ: クロスサイトリクエストフォージェリ
ユーザの認証情報を悪用して意図しない操作をさせる攻撃で、コマンド実行とは異なります。 - エ: セッションハイジャック
セッションIDを盗んで不正アクセスする攻撃で、コマンド実行とは関係ありません。
補足コラム
OSコマンドインジェクションは、入力値の検証不足やエスケープ処理の欠如が原因で発生します。対策としては、入力値の厳格なバリデーションやホワイトリスト方式の採用、可能な限りOSコマンドの直接実行を避ける設計が推奨されます。また、PHPの
escapeshellcmd()
やescapeshellarg()
関数を使うことも有効です。FAQ
Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはOSのシェルコマンドを実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。対象が異なります。
A: OSコマンドインジェクションはOSのシェルコマンドを実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。対象が異なります。
Q: クロスサイトリクエストフォージェリはどのように防止しますか?
A: CSRFトークンの利用やRefererチェック、ユーザ操作の二重確認などで防止します。
A: CSRFトークンの利用やRefererチェック、ユーザ操作の二重確認などで防止します。
関連キーワード: OSコマンドインジェクション, system関数, exec関数, Webアプリケーション脆弱性, シェルスクリプト実行, 入力値検証, セキュリティ対策