不正にシェルスクリプトを実行させる攻撃|情報処理安全確保支援士 平成30年 秋期午前Ⅱ試験 問13

出典:平成30年秋期 午前Ⅱ 問13 分野:セキュリティ / 情報セキュリティ
Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し,不正にシェルスクリプトを実行させるものは,どれに分類されるか。
  • ア:HTTPヘッダーインジェクション
  • イ:OSコマンドインジェクション
  • ウ:クロスサイトリクエストフォージェリ
  • エ:セッションハイジャック
解説

OSコマンドインジェクションは、Webアプリケーションへ入力した文字列を介して、OS上で不正なコマンドを実行させる攻撃です。

OSコマンドインジェクション

入力値の検証や無害化が不十分な状態で、その値がPerlのsystem関数やPHPのexec関数などへ渡されると、攻撃者がシェルの制御記号や任意のコマンドを混入させ、ファイルの閲覧・削除やプログラムの実行などを行う可能性があります。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:HTTPヘッダーインジェクション
⇒HTTPレスポンスヘッダーに改行コードなどを挿入し、任意のヘッダーや偽のレスポンス本文を追加する攻撃です。OSのシェルコマンドを実行させる攻撃ではありません。
ウ:クロスサイトリクエストフォージェリ
⇒ログイン済みの利用者を誘導し、その利用者の権限で意図しないリクエストをWebサイトへ送信させる攻撃です。入力値をOSコマンドとして実行させる攻撃ではありません。
エ:セッションハイジャック
⇒セッションIDを盗用・推測するなどして、正規利用者のセッションを乗っ取る攻撃です。system関数やexec関数を悪用してシェルコマンドを実行する攻撃とは異なります。
TSUNAGARU-ADVICE

まず押さえたいこと

OSコマンドインジェクションは、Webページ上で入力された文字列が、Perlのsystem関数やPHPのexec関数などを通じてOSコマンドとして解釈され、不正なコマンドを実行される攻撃です。ポイントは、入力値がアプリケーション内だけで処理されるのではなく、OSのシェルやコマンド実行機能に渡されることです。

迷ったときの判断軸

HTTPヘッダーを不正に改変するものはHTTPヘッダーインジェクション、利用者に意図しないリクエストを送らせるものはCSRF、セッションIDなどを奪ってなりすますものはセッションハイジャックです。OSコマンドインジェクションは、入力値がOSコマンドとして実行されるかで判断しましょう。

科目Bにつなげるために

科目Bでは、Webアプリケーションが外部プログラムを呼び出す処理、ファイル名や検索条件の入力、ログや設定ファイルの操作などと絡めて問われることがあります。対策では、シェルを経由しない安全なAPIの利用、入力値の厳格な検証、実行権限の最小化などにより、利用者入力をそのままOSコマンドに渡さない視点を持ちましょう。