情報処理安全確保支援士 2011年 秋期 午前2 問16
問題文
Web アプリケーションの脆弱性を悪用する攻撃手法のうち、Perl の system 関数やPHP の exec 関数など外部プログラムの呼出しを可能にするための関数を利用し、不正にシェルスクリプトや実行形式のファイルを実行させるものはどれに分類されるか。
選択肢
ア:HTTPヘッダインジェクション
イ:OSコマンドインジェクション(正解)
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
Webアプリケーションの脆弱性を悪用する攻撃手法【午前2 解説】
要点まとめ
- 結論:Perlのsystem関数やPHPのexec関数を悪用し外部プログラムを実行させる攻撃は「OSコマンドインジェクション」です。
- 根拠:これらの関数はシェルコマンドを直接実行できるため、入力値の検証が不十分だと任意のコマンドが実行されてしまいます。
- 差がつくポイント:HTTPヘッダやセッション操作とは異なり、シェルコマンドの実行を狙う攻撃であることを正確に理解することが重要です。
正解の理由
選択肢イの「OSコマンドインジェクション」は、外部プログラム呼び出し関数(systemやexec)を通じて不正なシェルコマンドを実行させる攻撃手法です。Webアプリケーションがユーザ入力を適切に検証せずにこれらの関数に渡すと、攻撃者は任意のコマンドを実行可能となり、システムの制御を奪われる危険があります。問題文の条件に完全に合致するため正解です。
よくある誤解
HTTPヘッダインジェクションやクロスサイトリクエストフォージェリは、コマンド実行ではなくHTTP通信やユーザ操作の改ざんを狙う攻撃です。これらと混同しないよう注意しましょう。
解法ステップ
- 問題文で「Perlのsystem関数やPHPのexec関数」とある点に注目する。
- これらは外部プログラムやシェルコマンドを実行する関数であることを思い出す。
- 「不正にシェルスクリプトや実行形式のファイルを実行させる」とあるため、コマンド実行系の攻撃と判断する。
- 選択肢の中でコマンド実行を意味する「OSコマンドインジェクション」を選ぶ。
選択肢別の誤答解説
- ア: HTTPヘッダインジェクション
HTTPヘッダの改ざんを狙う攻撃であり、シェルコマンドの実行とは無関係です。 - イ: OSコマンドインジェクション
正解。外部プログラム呼び出し関数を悪用し任意コマンドを実行させる攻撃です。 - ウ: クロスサイトリクエストフォージェリ
ユーザの意図しないリクエストを送信させる攻撃で、コマンド実行とは異なります。 - エ: セッションハイジャック
セッションIDを盗んで不正ログインする攻撃で、コマンド実行とは関係ありません。
補足コラム
OSコマンドインジェクションは、Webアプリケーションの入力値検証不足が原因で発生します。対策としては、入力値の厳格な検証やホワイトリスト方式の採用、外部コマンドの使用回避、または安全なAPIの利用が推奨されます。近年はコンテナ環境や権限分離も防御策として重要視されています。
FAQ
Q: OSコマンドインジェクションとSQLインジェクションはどう違いますか?
A: OSコマンドインジェクションはシェルコマンドの実行を狙い、SQLインジェクションはデータベース操作の不正改ざんを狙います。攻撃対象が異なります。
A: OSコマンドインジェクションはシェルコマンドの実行を狙い、SQLインジェクションはデータベース操作の不正改ざんを狙います。攻撃対象が異なります。
Q: system関数を使う際の安全対策はありますか?
A: 入力値の検証やエスケープ処理、可能ならばsystem関数の使用を避けることが重要です。
A: 入力値の検証やエスケープ処理、可能ならばsystem関数の使用を避けることが重要です。
関連キーワード: OSコマンドインジェクション、system関数、exec関数、Webアプリケーション脆弱性、コマンド実行攻撃、セキュリティ対策

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

