サイト内の現在位置

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

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

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

近年、サイバー攻撃のターゲットは大企業だけではありません。
攻撃の対象範囲は中小企業に拡大しています。
サイバー攻撃から企業の情報資産を守るためには感染原因を確認し、多層防御を意識した対策が必要です。

詳細はこちら

ランサムウェア対策ならNECフィールディング

ランサムウェア対策ならNECフィールディング

お客さまのご要望や環境に合わせて最適なソリューションを組み合わせて提供します。また、お客さまが対策したい脅威に対応する対策も紹介します。

詳細はこちら

NECフィールディングのセキュリティ紹介

NECフィールディングのセキュリティ紹介

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

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

▼関連記事:サイバー攻撃とは?目的や手口、種類について解説

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

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

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

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

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

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

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

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

クロスサイトスクリプティング(XSS)が起きる原因

クロスサイトスクリプティングがどういった流れの攻撃かを説明しました。次は、どのような原因で攻撃されるのかを説明していきます。

スクリプトをそのまま実行できる状態になっている

クロスサイトスクリプティングはWebアプリケーションのフォームに実行可能な文字列を挿入し、悪意のある操作を実行する攻撃です。この実行可能な文字列をスクリプトと呼びます。
スクリプトを作成する際には & < > , “ などの特殊文字が利用されます。これらの特殊文字が入力フォームなどで使われた際に、スクリプトではなく文字列として認識するよう、スクリプトの無害化を行っていない場合、クロスサイトスクリプティングにつながる可能性があります。
そもそもスクリプトが実行できないように設定をしておけば、クロスサイトスクリプティングはできなくなります。スクリプトの無害化を行っていれば、スクリプトが入力されても画面上にはスクリプトの文字列が表示されるだけで攻撃者が意図していた動作にはならないのです。
スクリプトの無害化はクロスサイトスクリプティングへの有効な対策ですので、無害化できているか確認するようにしましょう。

入力値の制限がされていない

入力できる文字を制限されていないこともクロスサイトスクリプティングが起きる原因と言えるでしょう。
例えば郵便番号の入力欄があったとして、そこでは数字以外の入力は不要でしょう。そういった場合は、郵便番号欄の入力は半角数字しか入力を受け付けない、といった制限を設けましょう。
また、文字の種類(数字・英字・漢字など)の制限が厳しい場合も、文字列の長さで制限を設けておくと良いでしょう。スクリプトは比較的長めの記述になることが多いので、文字列の長さ制限を設けておくことで、クロスサイトスクリプティングを抑制する効果があります。入力値の制限を行うことで、さらにクロスサイトスクリプティングを仕掛けづらいようにしていきましょう。

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

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

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

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

情報漏洩

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

▼関連記事
個人情報漏洩の被害事例と対処法・対策を徹底解説

なりすまし

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

▼関連記事
詐欺メール(なりすましメール)とは?原因や対処法・対策を徹底解説

Webページの改ざん

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

▼関連記事
SQLインジェクションとは?手口や脅威、具体的な対策方針まで解説

クロスサイトスクリプティング(XSS)の被害事例

続いてクロスサイトスクリプティングでどういった被害があるのかを説明します。過去、YoutubeやTwitterといった多くの方が利用しているSNSでも被害が出ています。

Youtubeの被害事例

Youtubeのコメントシステムにあった脆弱性を狙い、クロスサイトスクリプティングされたことがあります。攻撃により、デマやゴシップなどがポップアップ表示されたり、コメントが表示されなくなったり、悪趣味なWebサイトにリダイレクトされるといった被害が相次いだといわれています。

Twitterの被害事例

Twitterの公式クライアント・アプリケーションである「TweetDeck」にあった脆弱性を狙いクロスサイトスクリプティング攻撃をされた事例があります。
Twitterユーザのアカウントが遠隔操作され、大量にリツイートされるという被害がありました。この事例では50万人ほどが影響を受けたと言われています。

クロスサイトスクリプティング(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://www.fielding.co.jp/service/security/websecurity_check/

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

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

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

関連記事

SQLインジェクションとは?対策方法や手口・脅威、具体的な対策方針例まで分かりやすく解説
SQLインジェクションとは?対策方法や手口・脅威、具体的な対策方針例まで分かりやすく解説

SQLインジェクションとは、Webアプリケーションのデータベースを不正に攻撃するサイバー攻撃のひとつです。今回は、攻撃の仕組みや手口、SQLインジェクションの種類、攻撃を受けたときの被害・脅威について解説します。その上で、SQLインジェクションに有効な対策を考えていきます。

WAF(Webアプリケーションファイアウォール)とは?仕組みや導入メリットについて解説
WAF(Webアプリケーションファイアウォール)とは?仕組みや導入メリットについて解説

Webアプリケーションファイアウォール(WAF:ワフ)は、Webアプリケーションの脆弱性を狙った攻撃を防ぐための専用ツールです。この記事では、WAFの概要や役割、仕組みや必要性といったWAFについての基本を解説。さらにWAFの機能やWAF導入を検討すべき組織、WAFで対応できる攻撃、WAFの種類や検知ロジック、導入前に検討したい注意点などを取り上げます。

脆弱性診断(セキュリティ診断)って?種類や方法を解説!
脆弱性診断(セキュリティ診断)って?種類や方法を解説!

脆弱性診断(セキュリティ診断)とは、ネットワークやOSなどに脆弱性がないか診断することであり、システムを安全に運用するために定期的に行うプロセスです。主な脆弱性の種類とセキュリティ事故の例について確認しながら、脆弱性診断(セキュリティ診断)の重要性について確認しましょう。脆弱性診断(セキュリティ診断)の具体的な種類と方法、費用についても詳しく解説します。

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

お客さま事業・業務にお役立ていただける情報をお届けします。
ご相談はお問い合わせフォームよりご連絡ください。
※当社は法人向けサービスを提供しているため、個人のお客さまに対してはサービス提供できません。あらかじめご了承ください。