不正にシェルスクリプトを実行させる攻撃|情報処理安全確保支援士 平成30年 秋期午前Ⅱ試験 問13
出典:平成30年秋期 午前Ⅱ 問13
分野:セキュリティ / 情報セキュリティ
Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し,不正にシェルスクリプトを実行させるものは,どれに分類されるか。
- ア:HTTPヘッダーインジェクション
- イ:OSコマンドインジェクション
- ウ:クロスサイトリクエストフォージェリ
- エ:セッションハイジャック
TSUNAGARU-ADVICE
まず押さえたいこと
OSコマンドインジェクションは、Webページ上で入力された文字列が、Perlのsystem関数やPHPのexec関数などを通じてOSコマンドとして解釈され、不正なコマンドを実行される攻撃です。ポイントは、入力値がアプリケーション内だけで処理されるのではなく、OSのシェルやコマンド実行機能に渡されることです。
迷ったときの判断軸
HTTPヘッダーを不正に改変するものはHTTPヘッダーインジェクション、利用者に意図しないリクエストを送らせるものはCSRF、セッションIDなどを奪ってなりすますものはセッションハイジャックです。OSコマンドインジェクションは、入力値がOSコマンドとして実行されるかで判断しましょう。
科目Bにつなげるために
科目Bでは、Webアプリケーションが外部プログラムを呼び出す処理、ファイル名や検索条件の入力、ログや設定ファイルの操作などと絡めて問われることがあります。対策では、シェルを経由しない安全なAPIの利用、入力値の厳格な検証、実行権限の最小化などにより、利用者入力をそのままOSコマンドに渡さない視点を持ちましょう。
OSコマンドインジェクションは、Webアプリケーションへ入力した文字列を介して、OS上で不正なコマンドを実行させる攻撃です。
入力値の検証や無害化が不十分な状態で、その値がPerlのsystem関数やPHPのexec関数などへ渡されると、攻撃者がシェルの制御記号や任意のコマンドを混入させ、ファイルの閲覧・削除やプログラムの実行などを行う可能性があります。
したがって、イが適切です。
❌他選択肢が誤りの理由ア:HTTPヘッダーインジェクション
⇒HTTPレスポンスヘッダーに改行コードなどを挿入し、任意のヘッダーや偽のレスポンス本文を追加する攻撃です。OSのシェルコマンドを実行させる攻撃ではありません。
ウ:クロスサイトリクエストフォージェリ
⇒ログイン済みの利用者を誘導し、その利用者の権限で意図しないリクエストをWebサイトへ送信させる攻撃です。入力値をOSコマンドとして実行させる攻撃ではありません。
エ:セッションハイジャック
⇒セッションIDを盗用・推測するなどして、正規利用者のセッションを乗っ取る攻撃です。system関数やexec関数を悪用してシェルコマンドを実行する攻撃とは異なります。