XSS(クロスサイトスクリプティング)

XSS(クロスサイトスクリプティング/Cross Site Scripting)とは、Webサイトの脆弱性を悪用して、悪意のあるスクリプト(プログラム)を他の利用者のブラウザ上で実行させる攻撃のことです。掲示板や検索窓など、利用者が入力した内容をそのまま画面に表示するページが標的になりやすい攻撃手法です。

現実世界に例えると、XSSは掲示板に細工した貼り紙をこっそり紛れ込ませるようなものです。見た目は普通の書き込みでも、実は仕掛けが施されており、それを見た人が気づかないうちに被害を受けてしまいます。

XSS(クロスサイトスクリプティング)図解

XSS(クロスサイトスクリプティング)図解

攻撃が成立する仕組み

本来、Webページに入力された文字はそのまま「文字」として表示されるべきですが、入力内容を適切に処理(エスケープ)せずに画面へ出力してかるサイトでは、入力欄にプログラムのコード(スクリプト)を書き込むと、それがそのままブラウザで「実行」されてしまいます。攻撃者はこの仕組みを悪用し、他の利用者のブラウザ上で不正な処理を動かします。

XSSは、Webアプリケーションの代表的な脆弱性としてまとめられている「OWASP Top 10」などのガイドラインでも長年にわたり取り上げられており、もっとも古くから知られる攻撃手法の一つです。対策の基本が確立している一方、実装の不備によって今も発生し続けています。

主な種類

種類 特徴
反射型 細工したリンクを踏ませることで、その場限りで発動する
蓄積型 掲示板などにスクリプトを書き込み、閲覧者全員に影響する
DOM型 ブラウザ側の処理(JavaScript)の不備を悪用する

想定される被害

  • Cookieの窃取・なりすまし
    ログイン情報が盗まれ、本人になりすまして操作される恐れがあります。
  • 偽ページへの誘導
    本物そっくりの入力画面を表示し、個人情報を盗むフィッシングに使われます。
  • ページの改ざん
    表示内容を書き換えられ、サイトの信頼性が損なわれます。

対策

  • 出力時のエスケープ処理
    入力された文字を、実行されない安全な形に変換してから表示します。
  • CSP(Content Security Policy)の設定
    実行を許可するスクリプトの範囲をあらかじめ制限します。
  • CookieのHttpOnly化
    スクリプトからCookieを読み取れないようにします。

近年の主要なWebフレームワークには、出力を自動的にエスケープする機能が標準で備わっており、開発者が意識しなくてもある程度の対策が施される仕組みが一般的になっています。

あわせて知っておきたい用語

  • クッキー(Cookie)
    ブラウザに保存される小さなデータ。XSSで狙われることがあります。
  • SQL
    データベースを操作する言語。SQLインジェクションもXSSと並ぶ代表的な攻撃です。
  • CSR(証明書署名要求)
    Webサイトの暗号化通信に必要な証明書発行の手続きです。

コメント

タイトルとURLをコピーしました