お役立ち情報

ブログ

  • 2022.11.17. クロスサイトスクリプティング(XSS)とは?被害リスクや具体的な対策方法について



    企業のWeb活用が国内でも積極的に行われていますが、注意したいのがWebサイトを狙ったサイバー攻撃です。クロスサイトスクリプティング(XSS)がWebサイトの脆弱性を狙った攻撃手法として増加傾向にあり、十分な対策が求められます。


    この記事ではクロスサイトスクリプティングの具体的な手法や攻撃によってもたらされるリスク、そして効果的な対策方法について、解説します。

     

      

     

    1. クロスサイトスクリプティングとは

    クロスサイトスクリプティングは、Webサイトを狙ったサイバー攻撃方法の一種です。Webサイトの脆弱性を突いて第三者が不当にWebサイトにスクリプトを組み込むことで、サイトを訪問したユーザーに別のサイトへのアクセスを促そうとプログラムすることができます。


    攻撃対象のWebサイトを直接改変できなくとも、訪問者を悪質サイトへ誘導することで攻撃者の目的は達成できるため、サイト管理者に直接被害はなくとも、間接的に大きなダメージを被ることになります。

      

     

    2. クロスサイトスクリプティングの仕組み

    クロスサイトスクリプティングの実行に当たっては、問い合わせフォームや掲示板などの、サイト内に設置された動的な機能が標的となります。


    自由記述が可能なフォームにスクリプトを書き込まれると、それが自由に実行されてしまうため、サイトの遷移などを自由にコントロールされることとなります。

     

    3. SQLインジェクションとの違い

    クロスサイトスクリプティングと似たような攻撃方法に一つに、SQLインジェクションが挙げられます。SQLインジェクションもクロスサイトスクリプティング同様、Webサイトへの攻撃を行うものですが、こちらはサイトのデータベースに攻撃を仕掛けます。


    会員登録やログインフォームを悪用して不正なSQL構文を注入することにより、データへの不正アクセスや情報流出といった、重大な危害を加えます。

     

    4. クロスサイトスクリプティングの種類

    クロスサイトスクリプティングには大きく分けて、


    • non-persistent/Reflected XSS(反射型XSS)

    • Stored/Persistent XSS(格納型/蓄積型/持続型XSS)

    • DOM Based XSS


    という3つの種類があります。


    反射型XSSはサイトに不正なスクリプトをリンクに仕掛けた上で、信頼性に問題のあるサイトへ誘導し、訪問者への不正アクセスやマルウェアのインストールを促す手法です。


    格納型/蓄積型/持続型XSSは、Webアプリに直接攻撃者が不正なスクリプトを仕掛ける手法です。そのため攻撃を仕掛けたページが開かれるたびに不正スクリプトが立ち上がり、悪質サイトへの遷移を勝手に行ったりするため、不快感と危険性の強い攻撃手法です。


    ユーザーをリンクに誘導する必要がないので、攻撃者にとっては都合の良い方法であると言えます。


    DOM Based XSSは、Web上のJavascriptの脆弱性を攻撃する手法です。サーバー側で起動するスクリプトではなく、訪問者のWeb上で起動するスクリプトであるため、他の手法とは異なる対策が求められます。


    いずれのクロスサイトスクリプティング手法も危険であることに変わりはなく、柔軟な防止策を検討する必要があるでしょう。

     

    5. クロスサイトスクリプティングの被害リスク

    クロスサイトスクリプティング攻撃を受けることで、Webサイト運営者は以下のようなリスクに備える必要があります。

     

     

    5-1. Webページ改ざん

    クロスサイトスクリプティングは、攻撃者がWebページを書き換えることができるサイバー攻撃手法です。一見すると健全な企業のコーポレートサイトでも、脆弱性を抱えていれば攻撃者はその弱点を突き、不正なプログラムを潜り込ませ、訪問者に危害を加えることができます。


    基本的な機能やデザインはそのままでありながら、訪問者に危害を加えるため、攻撃を受けた被害者はなぜ、どこで被害を被ったのかが当初はわからないケースもあります。

      

    5-2. セッションハイジャック

    セッションハイジャックは、管理者のIDやCookieを不正に抜き取り、不当に管理権限を与えてしまうものです。セッションハイジャックが行われてしまうと、Webサイトのサーバー内に保管された情報の流出やデータの書き換え、不正出金などの被害を受ける可能性があり、その際には甚大な被害を覚悟しなければなりません。

      

    5-3. 個人情報流出

    サーバーへの自由なアクセスを許して仕舞えば、社員はもちろん顧客の個人情報流出も十分起こり得る事態です。社内の情報流出ならまだしも、顧客情報の流出は既存顧客の信頼を失い、新規顧客の獲得も困難になってしまうため、事業そのものが危険に晒されることとなります。


    こういった事態を回避するためにも、あらかじめ徹底した対策を施し、被害を未然に防ぐ、あるいは最小限にとどめる必要があります。

     

    6. クロスサイトスクリプティングを防ぐための対策方法

    クロスサイトスクリプティングに備えるためには、正しい対策を事前に施しておくことが大切です。具体的な対策方法は以下の通りです。

      

    6-1. バリデーション処理を行う

    バリデーション処理は、入力できる英数字やその他の文字に制限を加えるものです。電話番号入力欄で数字以外の文字入力を拒否したり、パスワードの入力文字数を制限したりといった処理を施すことで、不正なスクリプトの入力を回避できます。

      

    6-2. サニタイジングを施す

    サニタイジングは、スクリプトを入力する際に発生する「<」や「"」といった文字をフォームに入力した際、別の無意味な文字列に変換する処置です。


    これらの文字をそのまま入力させないことにより、文字列がスクリプトとして認識されるのを回避し、クロスサイトスクリプティングを防止できます。

      

    6-3. WAFを設置する

    WAFは「Web Application Firewall」の略称で、いわゆるWebサイト用のファイアウォールです。Webアプリを対象とした攻撃を自動で検知し、不審なパターンを見つけた際には自動的に排除してくれます。

      

    6-4. 入力可能なリンクを制限する

    不審なリンク先への遷移を回避するため、「http」や「https」から始まるURLだけをリンクとして入力可能なように制限することも大切です。


    悪攻撃者はこれ以外のURLで構成された遷移を密かに挿入するケースもあり、信頼性が高く誤って遷移するケースの少ない上記のURLに限定し、不要なリスクの高まりを回避します。

      

     

    まとめ

    クロスサイトスクリプティングは、Webサイトの脆弱性に目をつけた悪質な攻撃手法で、時には甚大な被害を運営者やユーザーにもたらすことがあります。


    クロスサイトスクリプティングのリスクは、Webサイトの立ち上げが増加している近年こそ注意すべきもので、あらかじめ万全の対策を施しておかなければなりません。


    サイバー攻撃を一度受けてしまうと、その被害をカバーしたり、攻撃によって失われた企業の信頼を回復したりするのに多くの時間を要します。あらかじめ対策方法をよく理解し、リスクの回避に努めましょう。