クロスサイトスクリプティングとは, Web サイトの脆弱性を利用した攻撃である。 クロスサイトスクリプティングに関する記述として, 適切なものはどれか。
平成24年度 春期 ITパスポート試験 問77
この問題の解説と、これまでの解答の記録です。
問 77
- ア
正解 正解はア。クロスサイトスクリプティング (XSS) は、利用者が入力した文字列をそのまま Web ページに出力してしまう「出力時のエスケープ処理不備」という脆弱性を突く攻撃である。攻撃者は掲示板の投稿欄や検索フォーム、確認画面などに、script タグを含む悪意あるスクリプトを紛れ込ませる。そのスクリプトはサイトが生成した HTML の一部として被害者のブラウザに届き、被害者のブラウザ上で「そのサイトのスクリプト」として実行される。その結果、同一サイトに対して発行されていたクッキー (セッション ID などを含む) が攻撃者のサーバへ送信され、なりすましや個人情報の窃取につながる。アの記述はこの「ユーザの入力データをそのまま表示するフォーム又は処理があるとき」という発生条件と、「第三者が悪意あるスクリプトを埋め込むことでクッキーなどのデータを盗み出す」という被害の形を、いずれも正確に述べている。なお被害を受けるのは主にサイト利用者 (閲覧者) 側であり、対策は入力値の検証と、出力時に HTML の特殊文字を無害化するエスケープ処理である。
不正解イ
セッションハイジャックの説明であり、XSS そのものではない。サーバとクライアントの間で確立済みの正規のセッションに割り込み、セッション ID を推測・盗用して正規利用者に成りすます攻撃を指す。スクリプトを Web ページに埋め込んで閲覧者のブラウザで実行させる、という XSS の本質的な仕組みが含まれていない点で誤り。XSS はセッション ID を盗む「手段」になり得るが、両者は別の攻撃分類である。
不正解ウ
SQL インジェクションの説明。データベースと連携する Web ページの入力欄に悪意ある SQL 文を注入し、アプリケーションが組み立てる SQL を改ざんしてサーバ側のデータベースを不正に読み書きする攻撃である。埋め込まれるのがスクリプトではなく SQL コマンドであり、実行される場所も閲覧者のブラウザではなくサーバ側のデータベースである点で XSS と異なる。
不正解エ
フィッシングの説明。電子メールなどで本物そっくりの偽サイトへ誘導し、利用者自身に ID・パスワードやクレジットカード番号を入力させて詐取する攻撃である。正規サイトの脆弱性を突くのではなく、利用者の思い違いを誘う「だます」手口が中心であり、悪意あるスクリプトの埋め込みという要素がないため XSS には当たらない。
- クロスサイトスクリプティング (XSS) の定義: 入力値をそのまま出力してしまう Web サイトの脆弱性を利用し、悪意あるスクリプトを閲覧者のブラウザ上で実行させてクッキーなどを盗む攻撃。対策は入力値の検証と出力時のエスケープ処理 (サニタイジング)。
- 類似する Web 攻撃の切り分け: XSS (スクリプトを埋め込み閲覧者のブラウザで実行)、SQL インジェクション (SQL 文を注入しサーバのデータベースを不正操作)、セッションハイジャック (正規セッションを乗っ取り成りすまし)、フィッシング (偽サイトへ誘導して情報を詐取) を、「何を埋め込むか」「どこで実行されるか」「誰が被害を受けるか」で区別する。