Cross-Site Scripting (XSS) - Types and Preventionとは
About 2 min read
クロスサイトスクリプティング (XSS: Cross-Site Scripting) とは、Web ページに 悪意あるスクリプトを注入する攻撃手法です。攻撃者が仕込んだ JavaScript が 被害者のブラウザで実行され、Cookie の窃取、セッションハイジャック、 フィッシングページへのリダイレクトなどが行われます。 2024 年の OWASP Top 10 でもインジェクション攻撃の一種として上位に位置しており、 Web アプリケーションの脆弱性の中で最も一般的なものの一つです。
現場での使用例
「お問い合わせフォームの入力値がサニタイズされておらず、格納型 XSS が 見つかりました。管理画面で問い合わせ内容を表示する際にスクリプトが実行され、 管理者のセッション Cookie が外部に送信される状態でした。」
XSS 攻撃のフロー
XSS の種類
反射型 XSS は URL パラメータに含まれたスクリプトがそのままページに反映される型です。 格納型 XSS はデータベースに保存されたスクリプトが他のユーザーに表示される型で、 掲示板や SNS のコメント欄が狙われやすく、より深刻な被害をもたらします。 DOM ベース XSS はクライアントサイドの JavaScript の処理に起因する型で、 サーバーを経由しないため検出が困難です。XSS and web security books on Amazonで詳しく学べます。
具体的な被害シナリオ
よくある誤解は「XSS は見た目を変えるだけの軽微な攻撃」というものです。 実際には、格納型 XSS を使って EC サイトの商品レビュー欄に悪意あるスクリプトを 埋め込み、レビューを閲覧した全ユーザーのセッション Cookie を窃取する といった深刻な攻撃が可能です。窃取された Cookie を使えば、攻撃者は 被害者のアカウントで商品を購入したり、登録情報を変更したりできます。 また、フィッシングと組み合わせて、 正規サイト上に偽のログインフォームを表示させる手口も確認されています。
ユーザーとしての対策
ブラウザを最新に保ち、不審なリンクをクリックしないことが基本です。 パスつく.com で生成したユニークなパスワードをサービスごとに使い分けることで、 XSS 攻撃でセッションが乗っ取られても他のサービスへの被害拡大を防げます。 ブラウザの拡張機能で JavaScript の実行を制限することも有効な対策です。browser security books (Amazon)も参考になります。