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

クロスサイトスクリプティング(Cross site scripting)とは、サイト間を横断して悪意のあるスクリプトを注入する攻撃のことです。略すとCSSですが、スタイルシートのCSSと重複するためXSSという表記が一般的となっています。

ほとんどのWebサイト(Webアプリケーション)は、ユーザーのパソコンに保存されるCookie(クッキー)と呼ばれるテキストファイルでセッションIDを管理します。

上図を用いて説明するのは、攻撃者がセッションIDを窃取して、ユーザーになりすまして標的のサイトにアクセスするまでの流れ(概要)です。

  1. 一般ユーザー(A)が悪意のある攻撃者の用意したWebサイトにアクセスします。
  • この段階についてはURLを貼り付けたメールも利用されます。
  1. そのWebサイトには攻撃対象となるサイトへのリンク(不正なパラメータのあるURL)が含まれます。
  2. (A)がそのリンクをクリックすると、標的サイトに不正なパラメータが送信されることになります。
  3. もし(A)がそのWebサイトのアカウントを持ち、自動ログインの設定を行っていれば、ログイン済みのセッションIDが発行されます。そして、サイトの脆弱性により 悪意あるスクリプト がそのまま出力されます。
  4. 悪意あるスクリプトが自動的に実行され、セッションIDの漏洩や、その他の攻撃が発生します。
  • Cookieにもアクセス可能となるため、セッションID等を別のサーバーに転送することもできます。
  1. セッションIDを窃取した攻撃者は(A)になりすまして、標的のWebサイトにアクセス可能となります。

流れを見ると分かりますが、複数のサイトをまたぐため、 クロスサイト スクリプティングという名称となります。

この方法は、攻撃者が標的サイトを直接攻撃するわけではありません。罠(偽のWebサイト)を用意して、他の一般ユーザーに攻撃させるという巧妙な攻撃方法です。攻撃に荷担したことになる一般ユーザーですが、アカウントの不正利用が発覚するまで被害に気付かないかもしれません。

おそらく気付いた方もいると思いますが、掲示板機能やコメント機能、検索条件を表示する検索機能等、入力した内容を無加工で出力するWebサイトがXSSの標的となります。

WebサイトのXSS対策がしっかりしていればあまり心配する必要はありません。例えば、ユーザーの入力文字列に対するタグの削除など、適切なエスケープ処理が重要となります。

ここで紹介した内容は、セッションIDの窃取(セッションハイジャック)ですが、他にも様々な攻撃があります。

  • 偽のログイン画面を表示してアカウントを窃取する。
  • ユーザを外部の悪質なページにリダイレクトさせる。
  • フィッシングサイト
    • ページ全体を偽のページに置き換える。
    • 意図しない商品の購入を行わせる。
  • フォームへの入力内容の窃取や改変
    • 本来は非表示(hidden属性)となっているデータを窃取したり、任意の値に変更する。
    • 住所やクレジットカード番号等の個人情報を別のサーバーに転送する。

レンタルサーバーとXSS

レンタルサーバーの性能とXSSの問題は全く関係ありません。どのレンタルサーバーであっても、Webサイトの内部処理によってはXSSの影響を受けます。つまり、ユーザーからの入力を受け付けるページがあれば注意する必要があります。

レンタルサーバによってはXSSを防ぐためにWAF(Webアプリケーションファイアウォール)と呼ばれる機能を備えており、機能のないレンタルサーバーと比較してWebサイトのセキュリティ性能が向上します。

WAFを利用することで、既存のWebサイトに手を加えることなく各種脆弱性に対する攻撃を防ぐことができます。ただし、全ての攻撃を防げるわけではないので、あくまでも保険として利用し、サイト自体に問題があれば修正すべきでしょう。

WAFに対応しているレンタルサーバーは以下の通りです。

  • さくらインターネット(SiteGuard Lite)
  • ロリポップ!(SiteGuard Lite)
  • heteml(SiteGuard Lite)
  • WADAX(SiteGuard Lite)
  • シックスコア(非公開)
  • X2(非公開)