ソフトウェア結合テストの方式|情報処理安全確保支援士 平成30年 秋期午前Ⅱ試験 問22

出典:平成30年秋期 午前Ⅱ 問22 分野:システム開発技術 / 統合・テスト
■25問中0問正解 ■正答率:0%

このHTTPリクエストで注目する部分は、「user=;cat /etc/passwd」です。

これは、Webアプリケーションに対して、本来想定していないOSコマンドを実行させようとしている攻撃と考えられます。

部分 意味
user= Webアプリケーションに渡されるパラメータ
; UNIX系OSのシェルで、命令を区切る記号
cat ファイルの内容を表示するコマンド
/etc/passwd UNIX系OSでユーザーアカウント情報が記録されているファイル

本来であれば、userパラメータにはユーザー名などの通常の値が入る想定です。しかし、ここでは「;cat /etc/passwd」という文字列が入っています。

もしWebアプリケーションが、受け取ったuserパラメータを十分に検査せず、OSのシェルにそのまま渡してしまうと、次のように解釈される可能性があります。

本来実行されるコマンド ; cat /etc/passwd

セミコロン「;」は命令の区切りとして扱われるため、OSはこれを次の2つの命令として実行してしまうおそれがあります。

  • 本来実行されるコマンド
  • cat /etc/passwd

その結果、/etc/passwdの内容が読み取られ、ブラウザの画面などに表示されてしまう危険があります。

このように、入力値にOSコマンドを混ぜ込み、Webアプリケーションを通じて不正なコマンドを実行させる攻撃をOSコマンドインジェクションといいます。

つまり、このHTTPリクエストから推測できる脆弱性は、「利用者から受け取った値を適切に検査せず、OSコマンドとして実行してしまうOSコマンドインジェクション」です。

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

❌他選択肢が誤りの理由
ア:HTTPヘッダーインジェクション
⇒HTTPレスポンスヘッダーに改行コードなどを挿入し、不正なヘッダーやレスポンス本文を追加する攻撃です。本問では、HTTPヘッダーではなくURLパラメータにOSコマンドが埋め込まれています。
ウ:SQLインジェクション
⇒入力値に不正なSQL文を混入させ、データベースを不正に操作する攻撃です。cat /etc/passwdはSQL文ではなく、OS上でファイルを表示するコマンドです。
エ:クロスサイトスクリプティング
⇒Webページに不正なスクリプトを埋め込み、利用者のブラウザ上で実行させる攻撃です。本問の文字列はJavaScriptではなく、サーバ側でOSコマンドを実行させることを狙っています。
  • ア:サンドイッチテスト
  • イ:トップダウンテスト
  • ウ:ビッグバンテスト
  • エ:ボトムアップテスト