クロスサイトスクリプティング(XSS)とは?
リスクや対策を徹底解説

クロスサイトスクリプティング(XSS)とは?リスクや対策を徹底解説

クロスサイトスクリプティング(XSS)とは、サイトの脆弱性を悪用し、個人情報などを盗み出すセキュリティ攻撃のことです。インターネットが生活インフラ、ビジネスインフラとなっている今、セキュリティ対策は企業にとって最重要課題です。
ここではクロスサイトスクリプティングの基礎知識、種類、仕組み、リスク、さらにはクロスサイトスクリプティングを防ぐ対策を紹介します。

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

クロスサイトスクリプティング(XSS)は、入力フォームや掲示板など、ユーザがアクセスした際にWebページが生成される、いわゆる「動的Webページ」に脆弱性があった場合、罠を仕掛けユーザを意図しない悪質なサイトへ誘導し、個人情報などを盗み出す攻撃のことです。「クロスサイト」つまり、サイトを横断して攻撃することから、その名称がつきましたが、今ではその手口は広がり、サイトを横断しないタイプのものも含まれます。

クロスサイトリクエストフォージェリ(CSRF)との違いは?

クロスサイトスクリプティング(XSS)と似た攻撃が、クロスサイトリクエストフォージェリ(CSRF)です。クロスサイトスクリプティング(XSS)は、入力フォームや掲示板など動的Webページの脆弱性を悪用した攻撃です。
一方、クロスサイトリクエストフォージェリ(CSRF)は、ユーザのリクエストを偽装する攻撃です。つまり、ユーザを攻撃用サイト(罠を仕掛けたサイト)に誘導し、攻撃用URLをクリックさせます。すると不正なリクエストが攻撃対象のサーバに送られ、攻撃用サイト(罠サイト)に誘導されたユーザには直接的な被害はありませんが、攻撃がユーザからのリクエストとして実行されるので、攻撃者として認識されることになります。

SQLインジェクションとの違いは?

SQLインジェクションも、クロスサイトスクリプティング(XSS)と似た攻撃です。SQLはWebサイトで広く使われるデータベース言語で、SQLを使ったWebサイトに脆弱性があった場合、データベースを操作するSQLに不正なSQLを挿入、データベースを不正操作する攻撃のことです。
不正なSQLを挿入=インジェクションすることから、SQLインジェクションと呼ばれます。

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

クロスサイトスクリプティング(XSS)は、3つの種類に分けることができます。「反射型XSS」「格納型/蓄積型/持続型XS)」「DOM Based XSS」の3種類があります。

反射型XSS

罠が仕掛けられたWebページにユーザがアクセスすると、悪質なサイトに誘導するためのURLが表示され、クリックすると攻撃者が用意したサイトに誘導されて、不正なスクリプトが実行されるタイプのXSSです。ユーザのWebページへのアクセスに対して、悪質なサイトへ誘導するためのURLを返すことから「反射型」と呼ばれます。

格納型/蓄積型/持続型XSS

攻撃者があらかじめWebページに不正なスプリクトを格納し、ユーザがそのページを閲覧するたびに不正なスクリプトが実行されるXSSです。反射型XSSに比べると、ユーザがページにアクセスするだけで不正なスクリプトが実行されます。

DOM Based XSS

サーバ側で不正なスクリプトを実行するのではなく、Webブラウザ上で動作するJavaScriptの脆弱性を悪用したXSSです。DOM(Document Object Model)は、簡単にいうと、JavaScriptを使ってWebページを操作する仕組みで、その仕組みを悪用したのが、DOM Based XSSです。

クロスサイトスクリプティング(XSS)の仕組み

クロスサイトスクリプティング(XSS)の仕組み

クロスサイトスクリプティング(XSS)の基本的な仕組みを簡単にまとめると、以下のようになります。

  • 1.攻撃者が脆弱性のある動的Webページに罠(不正なスクリプト)を仕掛ける
  • 2.攻撃者が罠を仕掛けたWebページに、ユーザがアクセスする
  • 3.悪質なページへのリンク(URL)を含んだWebページが生成される
  • 4.ユーザがリンクをクリック
  • 5.悪質なサイトが表示され、不正なスクリプトが実行される
  • 6.個人情報が盗まれるなどの被害が発生する

クロスサイトスクリプティング(XSS)の主な手口

クロスサイトスクリプティング(XSS)を実行するには、前述の「仕組み」で説明したように、攻撃者が罠(不正なスクリプト)を仕掛けることができる脆弱な動的Webページが必要です。よって、脆弱なサイトの存在が、クロスサイトスクリプティングの原因ともいえます。脆弱なサイトそのものに悪意はなくても、その存在が利用され、不正なスクリプトが実行されると、アクセスしたユーザの個人情報などが流出してしまいます。

また、昨今では、メールやSNSのメッセージに不正なURLが表示され、アクセスを促すような手法も増えています。特にSNSが広がり、個人が動画などを発信することが当たり前になっている今、悪意をもった攻撃者が情報発信を装い、クロスサイトスクリプティングを行う機会が増えているといえます。

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

クロスサイトスクリプティング(XSS)には、どのようなリスクがあるのか、具体的に見ていきましょう。

情報漏洩

クロスサイトスクリプティング(XSS)の代表的なリスクは、個人情報などの漏えいです。ユーザの名前や住所、さらにはクレジットカード情報などが盗み出され、流出してしまう恐れがあります。個人情報が漏洩すると、クレジットカード情報を使用し不正に商品を購入したり、情報漏洩をネタに企業に金銭を要求したり、さらには個人情報をダークウェブなどで売買するなど、被害がさらに拡大してしまう可能性があります。

なりすまし

クロスサイトスクリプティング(XSS)で入手したIDやパスワードを使い、正規のユーザになりすまして、ネットワークやシステムにログインし、企業の機密情報などを盗み出すこともあります。正規ユーザからのアクセスになりすまし乗っ取ることから、サイトハイジャックとも呼ばれます。

関連記事:いかにしてハッカーはあなたを騙すのか - ソーシャルエンジニアリングのテクニック

Webページの改ざん

Webページや、ページ内のコンテンツが攻撃者によって書き換えられ、改ざんされてしまうことがあります。改ざんの目的はいたずらや業務妨害などさまざまですが、ウイルスを仕込み、アクセスしたユーザに感染させ、ウイルスを広げることを狙ったケースもあります。

クロスサイトスクリプティング(XSS)攻撃を防ぐ6つの対策

クロスサイトスクリプティング(XSS)攻撃を防ぐための対策を紹介します。対策は1つだけでOKというものではなく、複数の対策を講じることが大切です。

セキュリティサービスの導入

動的Webページの生成、つまりWebアプリケーションに対する攻撃を検知・防御するセキュリティサービス「WAF(Web Application Firewall)」の導入は、最もわかりやすい対策といえます。WAFはファイアウォールで防ぐことが難しい攻撃からWebアプリケーションを守ります。最近ではクラウド型のサービスも登場しており、導入はいっそう容易になっています。

サニタイジング

サニタイジングは、エスケープとも呼ばれ、動的Webページを生成するWebアプリケーションに行う対策です。クロスサイトスクリプティングに使用される「<」や「“」などの危険な文字を別の文字に置き換えてスクリプトを無害化します。これをサニタイジング、あるいはエスケープといいます。

入力値の制限

例えば、入力フォームに入力される文字が英数字などに限られている場合は、それ以外の文字の入力をできないよう制限することで、不正なスクリプトの挿入を防ぐことができます。郵便番号のフォームには、数字以外は入力できないようにするなどです。 また、英数字など種類を制限することが難しい場合は、長さに制限を設けることで、不正なスクリプトの挿入を一定程度、防ぐことが可能になります。

常にアップデートをする

ブラウザはもちろん、動的Webページの生成に使用しているCMSやJavaScriptのライブラリなど関連するものは常に最新版にアップデートしておきます。これはセキュリティ対策の基本中の基本ともいえます。バージョンアップによって、クロスサイトスクリプティングだけでなく、さまざまな脆弱性に対する対策が行われています。

出力の許可範囲

動的Webページを表示する際、条件によってはページ内のURLに「javascript:」等が含まれることがあり、不正なスクリプトが実行されるリスクが生じます。
URLを表示する場合は「http:」もしくは「https:」で始まるものだけを許可する設定を行うことで、不正なスクリプトが実行されるリスクを防ぐことができます。

不審なサイトの判断

クロスサイトスクリプティング(XSS)では、攻撃者が罠を仕掛けたサイトから悪質なサイトに誘導し、不正なスクリプトを実行させます。Webページなどに表示されたURLをクリックする前に、そのURLは問題ないものか、不審点はないかなどを判断することが大切です。

特に注意したいWebサイトの特徴

不審なサイトを見分けるには、いくつか注意すべきポイントがあります。

・URLを確認
不審なサイトは、URLが本物のサイト(正規のサイト)とは異なります。通常とは異なるURLや見慣れないURLが表示された場合はクリックしないようにします。 また不審なサイトは多くは暗号化されておらず、URLが「http:」となっています。URLが「https:」ではなく「http:」になっている場合は、セキュリティが確保されていないサイトと判断できます。

・チェックツールを利用
ただし、不審なサイトの中には、本物のサイトのURLを巧妙に真似しているものもあります。注意しないとそのままクリックしてしまうケースもあります。不審なサイトか、本物のサイトか判断がつかない場合は、チェックツールを利用すると良いでしょう。URLを入力すると、数秒でサイトの安全性をチェックしてくれます。

・日本語が不自然
不審なサイトや不正行為を目的としたSNS投稿やメールなどは、海外で作成されるケースも多く、日本語が不自然なことがあります。日本語が不自然なサイトの場合は、上記のチェックツールを利用し、安全性を確認するとよいでしょう。

・ECサイトの運営者情報が不正確
ECサイトは、法律によって「住所」「電話番号」「代表者名」などの情報を明記することが義務付けられています。不審なサイトの場合、そうした情報が不正確だったり、運営者情報が掲載されていないケースがあります。そのようなECサイトは、利用しないようにしましょう。

クロスサイトスクリプティング(XSS)対策はNECフィールディング

NECフィールディングのWebセキュリティ診断サービスは、クロスサイトスクリプティング(XSS)をはじめとした、Webサイトの脆弱性をチェックします。攻撃者(悪意を持った第三者)による「なりすまし」「改ざん」「情報漏えい」の可能性など、ホームページセキュリティ診断を実施します。
「セキュリティに関する事故が多発しているが、当社は大丈夫か」「インターネットでの商取引の際、なりすましによる不正取引の可能性はないか」「ユーザの個人情報が漏えいしないか」などの課題にお悩みではありませんか?

NECフィールディングのWebセキュリティ診断サービスなら、
・Webサーバーへの入力パラメータによる不正操作の脆弱性
・アドレスバーへの不正入力による不正操作の脆弱性
・プラットフォームのセキュリティホール
などを広く確認。
さらにわかりやすい診断結果で、現状のリスクを可視化します。
https://solution.fielding.co.jp/service/security/websecurity_check/

巧妙化するクロスサイトスクリプティングに注意!

クロスサイトスクリプティング(XSS)は、脆弱なサイトの存在が大きな原因といえます。サイトの脆弱性を悪用され、ユーザの個人情報や機密情報が漏洩してしまうことは、現代の企業にとって、大きな経営リスクです。

ますます巧妙化するクロスサイトスクリプティングに備えるため、今回紹介したさまざまな対策を検討してみてください。

発行元:NECフィールディング編集部

お客さま事業・業務にお役立ていただける情報をお届けします。
ご相談はお問い合わせフォームよりご連絡ください。

お問い合わせフォーム:https://solution.fielding.co.jp/contact_form/

※当社は法人向けサービスを提供しているため、個人のお客さまに対してはサービス提供できません。
 あらかじめご了承ください。

NECフィールディングはお客さまのビジネスを支援するITシステムの設計・構築からその後のITシステムの運用・管理・保守までを幅広くサポートします!IT機器・システムはもちろん、それ以外の機器やNEC製品以外の機器(マルチベンダー)の対応も行なっています。
NECフィールディングは、3つの強み(技術力・展開力・ナレッジマネジメント力)を活用し、お客さまの課題や事業プランに合わせて、最適なビジネス環境をお客様と一緒に構築していきます。
全国約400ヵ所にサービス拠点を構えているため、24時間365日、いつでもどこでもスピーディにサービス提供が可能です。ITシステム(ビジネス)のことなら60年以上にわたり、常にお客さまのそばで、お客さまのさまざまな課題を解決してきたNECフィールディングまでご相談ください。

Copyright © NEC Fielding, Ltd, 2022. All rights reserved.