情報処理安全確保支援士試験 2017年 春期 午前212


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コマンドの直接実行とは関係ありません。

解法ステップ

  1. 問題文の「Perlのsystem関数やPHPのexec関数に渡される」とある部分に注目する。
  2. これらの関数はOSのシェルコマンドを実行するため、入力値がコマンドとして実行される可能性がある。
  3. そのため、入力値を悪用して任意のOSコマンドを実行される攻撃手法を選ぶ。
  4. 選択肢の中でOSコマンド実行に関する攻撃は「OSコマンドインジェクション」であることを確認する。
  5. よって、正解はイと判断する。

選択肢別の誤答解説

  • ア: HTTPヘッダインジェクション
    HTTPヘッダの改ざんや不正挿入を狙う攻撃で、OSコマンドの実行とは無関係です。
  • イ: OSコマンドインジェクション
    ユーザ入力がOSコマンド実行関数に渡され、任意コマンドを実行される攻撃で正解です。
  • ウ: クロスサイトリクエストフォージェリ
    ユーザの認証情報を悪用して意図しない操作をさせる攻撃で、コマンド実行とは異なります。
  • エ: セッションハイジャック
    セッションIDを盗んで不正アクセスする攻撃で、コマンド実行とは関係ありません。

補足コラム

OSコマンドインジェクションは、入力値の検証不足やエスケープ処理の欠如が原因で発生します。対策としては、入力値の厳格なバリデーションやホワイトリスト方式の採用、可能な限りOSコマンドの直接実行を避ける設計が推奨されます。また、PHPのescapeshellcmd()escapeshellarg()関数を使うことも有効です。

FAQ

Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはOSのシェルコマンドを実行させる攻撃で、SQLインジェクションはデータベースのSQL文を不正操作する攻撃です。対象が異なります。
Q: クロスサイトリクエストフォージェリはどのように防止しますか?
A: CSRFトークンの利用やRefererチェック、ユーザ操作の二重確認などで防止します。

関連キーワード: OSコマンドインジェクション, system関数, exec関数, Webアプリケーション脆弱性, シェルスクリプト実行, 入力値検証, セキュリティ対策
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ