クロスサイトスクリプティングの特徴に関する記述として, 適切なものはどれか。
平成24年度 秋期 ITパスポート試験 問60
この問題の解説と、これまでの解答の記録です。
問 60
- ア
正解 正解は ア。クロスサイトスクリプティング (XSS) は、利用者が入力した文字列をそのまま HTML として画面に埋め込んで返してしまう Web アプリケーションの脆弱性を突く攻撃である。掲示板の投稿欄、検索キーワード欄、入力内容の確認画面、エラーメッセージなど、入力値を画面に出力する箇所が狙われる。攻撃者は、その入力欄に通常の文字列ではなく <script> タグなどを含んだスクリプト片を仕込む。サイト側が山括弧などの特殊文字をエスケープ (無害化) せずに出力すると、そのスクリプトは単なる文字ではなくプログラムとして被害者の Web ブラウザに届き、そのサイトのページの一部として実行されてしまう。実行されたスクリプトは、そのサイトの権限で動くため、利用者のクッキーに保存されたセッション ID を盗んで攻撃者に送信する (なりすまし・セッションハイジャック)、偽の入力フォームを表示して ID やパスワード、クレジットカード番号を入力させる、ページを改ざんして別のサイトへ誘導するといった被害を生む。攻撃者のスクリプトが、罠のサイトや細工したリンクを経由して別のサイト (クロスサイト) 上で実行されるところから、この名前が付いている。したがって「Web サイトに入力されたデータに含まれる悪意あるスクリプトを、そのまま Web ブラウザに送ってしまうという脆弱性を利用する」と述べた ア が適切である。なお対策の中心は、出力時のエスケープ処理 (サニタイジング) を確実に行うことであり、入力値の検証や WAF の導入も併用される。
不正解イ
入力データの長さを検査していないプログラムに、想定を超える長さのデータを送りつける攻撃はバッファオーバフロー攻撃である。用意された記憶領域 (バッファ) からあふれた部分が隣接するメモリ領域を上書きし、戻り先アドレスなどを書き換えることで、攻撃者が仕込んだ命令を実行させたりシステムを異常終了させたりする。あふれさせる対象はサーバ側のメモリであって、被害者のブラウザ上でスクリプトを実行させる XSS とは仕組みも被害の起き方も異なる。
不正解ウ
便利なツールやゲームなど有用なソフトウェアに見せかけて利用者自身にインストールさせ、裏で不正な動作を行うものはトロイの木馬 (マルウェアの一種) である。利用者をだまして導入させる点が特徴で、Web サイトの出力処理の脆弱性を突くものではない。侵入後は情報の外部送信やバックドアの設置などを行うが、これは XSS の説明ではない。
不正解エ
ワープロソフトや表計算ソフトが備える、操作手順を記録して後から呼び出し実行できる機能はマクロであり、これを悪用して不正な処理を実行させるものはマクロウイルスである。文書ファイルを開いた際に感染・発症するのが典型で、感染経路はメールに添付された文書ファイルなどである。狙う対象がアプリケーションのマクロ機能であり、Web サイトの入力・出力処理の脆弱性を突く XSS とは異なる。
- クロスサイトスクリプティング (XSS) の本質は、入力された文字列をエスケープせずにそのまま画面に出力してしまう Web サイトの脆弱性を突き、攻撃者のスクリプトを被害者の Web ブラウザ上で実行させる点にある。主な被害はクッキー内のセッション ID 窃取によるなりすましや、偽フォームによる情報詐取で、対策の要は出力時のエスケープ処理 (サニタイジング) である。
- 紛らわしい攻撃手法を「狙う対象」で区別する — XSS は入力値をそのまま出力する Web アプリの脆弱性、バッファオーバフローは入力長を検査しないプログラムのメモリ、SQL インジェクションはデータベースへの問合せ文、トロイの木馬は利用者自身の判断 (だまして導入)、マクロウイルスはワープロ・表計算のマクロ機能を、それぞれ狙う。