概要

クロスサイトスクリプティング(XSS:Cross Site Scripting)とは、脆弱なWebサイトに悪意あるスクリプト(JavaScriptなど)を埋め込み、そのサイトを閲覧した利用者のブラウザ上で実行させる攻撃です。攻撃の対象はサイトを訪れた利用者である点が特徴です。

掲示板やコメント欄、検索結果など、利用者の入力をそのままページに表示する仕組みに脆弱性があると、攻撃者が仕込んだスクリプトが他の利用者の画面で動き、Cookie(セッション情報)の窃取・偽の入力フォーム表示・サイト改ざんなどを引き起こします。

詳細(仕組み・種類)

種類内容
反射型XSSリンクのパラメータ等に仕込まれたスクリプトが、応答ページに反射されて実行される。
格納型(蓄積型)XSS掲示板などにスクリプトが保存され、閲覧者全員に影響する。被害が大きい。
DOM Based XSSブラウザ側のスクリプト処理の不備で実行される。

盗まれたCookie(セッションID)を悪用されると、セッションハイジャックによるなりすましにつながります。

XSSのキーワードは「スクリプトを埋め込み、利用者のブラウザで実行」。攻撃対象がサーバではなく閲覧者である点が、SQLインジェクション(DBが対象)との違いです。

対策

XSSの根本対策は「出力時のエスケープ処理」です。<> などをそのまま表示せず無害な文字に変換することで、スクリプトとして解釈されるのを防ぎます。

インシデント事例

会員サイトでのCookie窃取

格納型XSSの脆弱性を突かれ、投稿に仕込まれたスクリプトで閲覧者のセッションCookieが盗まれ、アカウントを乗っ取られる事例があります。HttpOnly属性の設定漏れが被害を拡大させました。

フィッシングと組み合わせた偽フォーム表示

正規サイト上にXSSで偽の入力フォームを表示し、利用者のID・パスワードを盗む手口もあります。正規ドメイン上で動くため利用者が気づきにくいのが厄介です。

試験での問われ方