サイバー攻撃

クロスサイトスクリプティング(XSS)とは?事例や対策を紹介

Written by 岩瀬めぐみ

クロスサイトスクリプティング(XSS)とは?事例や対策を紹介

失敗しないための脆弱性診断実施のコツ

セキュアな開発・サービス提供に必須!はじめての脆弱性診断 正し進め方ガイド

資料をダウンロードする

【TOP5】Webアプリケーション脆弱性診断で検出数の多い「注意すべき脅威」とは?

MOTEXの診断員がよく発見する「Webアプリの5つのリスク」の概要・対策を解説します!

資料をダウンロードする


クロスサイトスクリプティング(Cross-Site Scripting, 以下XSS) とは、 Webアプリケーションの脆弱性を悪用し、不正なスクリプトを埋め込むことで、利用者に対するなりすましや不正操作を実行するサイバー攻撃の一種です。
主に動的に生成されるWebページが標的となり、ユーザーの信頼を損なう重大なセキュリティ問題を引き起こします。

XSS攻撃によって引き起こされる主なリスクには、以下のようなものがあります。

1.フィッシングによる個人情報や認証情報の窃取
偽の入力フォームや不正なスクリプトを通じて、ユーザーのログイン情報、クレジットカード情報などの個人データを盗む。

2.セッションハイジャック
Cookieに保存されるセッションIDを窃取し、正規ユーザーになりすまして不正アクセスを実行。

3.意図しない操作の実行(クリックジャッキングなど)
ユーザーに気づかれない形で不正なリクエストを送信し、不正送金や悪意ある投稿を行わせる。

4.マルウェア配布
埋め込んだスクリプトを通じて悪意あるファイルをダウンロードさせ、ユーザーのデバイスをマルウェアに感染させる。

動的サイトを運営している企業・組織は以下の対策を講じるようにしましょう。

開発側の対策
・サニタイジング(不正なスクリプトの無害化)、入力値の制限、適切なエスケープ処理

運営側の対策
・WAFの導入

双方で講じるべき対策
・Webアプリケーション脆弱性診断の実施

本記事では、XSS攻撃の仕組みや被害事例、狙われやすいWebサイトの特徴、対策などをご説明します。

▼この記事を要約すると

  • XSSとは、Webアプリの脆弱性をつき悪質なスクリプトを埋め込むことで、なりすましや不正操作を行うサイバー攻撃
  • XSS攻撃を受けることで、「偽のWebページ表示による、情報漏洩や金銭的損失」「Cookie情報の窃取によるセッションハイジャック」などの被害が想定される
  • 被害リスク低減のため「サニタイジング(スクリプトの無害化)」「入力値の制限」「WAFの導入」「脆弱性診断の実施」といった対策を行うことが重要

クロスサイトスクリプティング攻撃も未然防止!「セキュリティ診断/脆弱性診断」とは

「Webアプリケーション」の脆弱性を明らかにし
現状課題や対策を専門のベンダーが手厚く支援

資料をダウンロードする

「クラウドサービスのセキュリティ対策」実態調査

中小企業の情シス1,000人に聞いた

「クラウドサービスのセキュリティ対策」実態調査結果を発表!

急増中のクラウド経由の情報漏洩にどう対策している?クラウドサービスを利⽤している企業様の対策状況や課題を調査しました。

資料をダウンロードする

【TOP5】Webアプリケーション脆弱性診断で検出数の多い「注意すべき脅威」とは?

MOTEXの診断員がよく発見する「Webアプリの5つのリスク」の概要・対策を解説します!

資料をダウンロードする

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


XSS攻撃とは、Webサイトのセキュリティ上の欠陥につけこんで不正なスクリプト(簡易プログラム)を埋め込み、サイトを閲覧した不特定多数のユーザーにスクリプトを実行させる、悪質なサイバー攻撃のことです。

Webサイトにやってきたユーザーを、偽のWebサイトへ誘導して個人情報を窃取するなど、サイトをまたいで(クロスして)攻撃する手口が多いことから「クロスサイトスクリプティング」と呼ばれています。

「掲示板」や「アンケートサイト」あるいは「個人情報の入力画面」があるフォームなど、ユーザーが入力した情報を表示する機能を備えたWebサイトは、XSS攻撃の対象とされやすいです。

クロスサイトスクリプティング(XSS)攻撃の基本的な流れ

セキュリティに欠陥がある=脆弱性があるWebサイトに対して、攻撃側はXSS攻撃を仕掛けます。攻撃手順の「一例」は、以下の通りです。

《XSS攻撃の流れの例》
1.脆弱性があるWebサイトに罠が仕掛けられる
2.ユーザーがWebサイトへアクセス
3.ユーザーのブラウザで不正なスクリプトが実行される
4.情報漏洩やマルウェア感染が発生

クロスサイトスクリプティングの攻撃手口と流れ

1.脆弱性があるWebサイトに罠が仕掛けられる

攻撃者は「Webサイトの脆弱性」につけこみ、悪意あるスクリプトが実行されるように、WebサイトやWebアプリケーションに罠を仕掛けます。

2.ユーザーがWebサイトへアクセス

罠が仕掛けられたWebサイトやアプリケーションへ、ユーザーがアクセスします。サイトへのアクセスは、検索結果からのケースもあれば、攻撃者によるメールやSNSを経由して訪れる場合もあります。

3.ユーザーのブラウザで不正なスクリプトが実行される

Webサイトにてユーザーがリンクをクリックし、スクリプトが実行されると、悪意のある別サイトへと強制的に遷移が行われます。

通常のリンクは「このURLのWebサイトを表示してください」というリクエストですが、罠リンクを踏んだ場合「このURLのWebサイトを表示し、このスクリプトを実行してください」というリクエストを、サーバーに送ってしまいます。

4.情報漏洩やマルウェア感染が発生

悪意あるスクリプトを実行したユーザーは、結果的に偽のフォームに誘導され、誤って個人情報やID/パスワードを入力して情報を盗まれたり、cookieを窃取されオンラインバンキングやSNSなどに不正アクセスされたり、マルウェアに感染したり、といった被害を受ける可能性があります。

XSS攻撃は「脆弱性のあるWebサイト」を対象とするため、被害を防ぐには、そもそもWebサイトやアプリケーションの脆弱性を改善し、攻撃の余地をなくすことが重要です。

また利用者が、XSS攻撃の被害を軽減するためには、不審なWebサイトやURLを、安易にクリックしないよう意識することが大切です。

クロスサイトスクリプティング(XSS)攻撃の被害件数は増加傾向


Webサイトの脆弱性をつく、XSS攻撃は、20年以上前から存在するサイバー攻撃の手法です。古くからある手口である一方、いまだに多くの組織やwebサイトがXSS攻撃の被害にあっているのが現実です。

情報処理推進機構(IPA)が公開する活動報告レポートによると、2024年の7~9月に登録された脆弱性の種類別件数のうち、XSS(CWE-79)が最多の「1,160件」に上ることが報告されています。
2024年第3四半期に登録された脆弱性の種類別件数のグラフ

出典:IPA(情報処理推進機構)│脆弱性対策情報データベースJVN iPediaに関する活動報告レポート[2024年第3四半期7月~9月](2024 年 10 月 16 日)

クロスサイトスクリプティング攻撃も未然防止!「セキュリティ診断/脆弱性診断」とは

「Webアプリケーション」の脆弱性を明らかにし
現状課題や対策を専門のベンダーが手厚く支援

資料をダウンロードする

クロスサイトスクリプティング(XSS)攻撃を受けると、どんな被害がある?

XSS攻撃を受けることで、ユーザーは以下のような被害を受ける危険性があります。

1.ユーザーがフィッシング詐欺などの被害にあう
2.Cookie情報窃取によるセッションハイジャック

それぞれの詳細を説明します。

1.偽のWebページ表示による、情報漏洩や金銭被害のリスク

XSS攻撃のよる、1つ目の被害リスクは「偽のWebページに個人情報を入力することにより、情報漏洩や金銭的な被害にあってしまう」ことです。

XSS攻撃による偽サイトは「正規のサイト上」に表示されるため、ユーザーはもちろんサイト管理者であっても、悪意あるページに気づくことは困難です。

攻撃者は偽ページにユーザーを誘導し、正規サイトを名乗って、ログイン情報やクレジットカード・口座情報などを入力させます(フィッシング詐欺の手口)。攻撃者に個人情報を盗まれることにより

  • 通販やSNS等のアカウントへ不正ログイン・乗っ取られる
  • 住所やカード情報などが流出・ばらまかれる
  • ネットバンキングを装った悪質なWebページより、不正送金を行う

などの被害を受けてしまうリスクがあります。

2.Cookie情報の窃取によるセッションハイジャック

2つ目のリスクは、Cookie情報を不当に窃取されることで、セッションハイジャックの被害にあってしまうことです。

Cookieとは、Webサイトに訪れたときに付与される「テキストファイル」のことです。ログイン時に必要なIDやパスワード、セッションIDなどをユーザーのブラウザに保存します。

Cookieを利用することで、ユーザーは毎回ID等を入力する手間が省け、webサイトの利便性向上を図ることが可能です。しかし、XSS攻撃で仕掛けられた「スクリプト」を実行すると、Cookieに含まれるセッションIDが、悪意のある第三者に取得されてしまう危険性があります。

こうなると、セッションIDを不正に入手し、正規のユーザーになりすまして不正アクセスをする「セッションハイジャック」の被害にあってしまいます。

セッションハイジャックが行われた場合、アカウントに登録していた情報の漏洩やクレジットカードの不正利用などが懸念されます。

関連ページ

セッションハイジャックの仕組みから対策までわかりやすく解説

クロスサイトスクリプティング(XSS)の注意が必要な、WEBサイトの特徴


XSS攻撃は、ユーザーの入力情報や趣味嗜好に合わせてページを作成する「動的サイト」の脆弱性を狙ってきます。

いつ、誰が、どこで見ても同じページ・同じ情報が表示される「静的サイト」とは異なり、アクセスしたユーザーなどに応じたページ・情報を表示するのが「動的サイト」です。

▼ECサイトの例

  • 企業概要、よくある質問など(いつ誰が見ても同じ情報が表示される)…静的ページ
  • おすすめ商品、購入履歴など(ユーザーごとに異なる情報が表示される)…動的ページ

XSSに対して注意が必要なのは「動的サイト」「動的ページ」です。中でも以下のような「ユーザーの入力情報に合わせてページを作成・表示するWebサイトやページ」は脆弱性が生じやすくなっています。

<脆弱性が生じやすいWebサイトの例>

  • アンケートサイト
  • 掲示板、ブログ、SNSなどコメントの書き込みができるサイト
  • ログイン時にIDとパスワードなどの入力が求められるサイト

<脆弱性が生じやすいページの例>

  • サイト内検索
  • ログインページ
  • ショッピングや申し込みなど個人情報の入力が必要なページ
  • 問い合わせや会員登録など入力内容を確認する画面が表示されるページ

先述した「Cookieを利用してログイン」をするサイトや「個人情報の入力が求められるページ」などは、特に注意が必要です。

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

XSSによる被害は、デマ情報がポップアップされるといった ”いたずらレベル”のものから、マルウェアに感染させられる・個人情報を盗まれるといった、悪質な犯行まで多岐にわたります。

以降では、実際に起きた「XSS攻撃に起因する『情報漏洩の事例』」を2つご紹介します。

1. SaaSサービスがXSS攻撃被害、43万件の顧客データが流出した事例

企業 国内ITベンダー
被害時期 2021年9月に発覚
対象サイト・サービス ECサイト構築サービスを提供するSaaSサーバーへのXSS攻撃
被害内容 当該のECサイト構築サービスを利用していた流通業11社のECサイトから、カード情報を含む顧客データが流出。43万件以上の顧客情報が漏れた可能性がある。


1つ目にご紹介するのは、スーパーマーケットなどを展開する流通業11社のEC(電子商取引)サイトから、クレジットカード情報を含む、43万件以上もの顧客情報が流出した事例です。ユーザーのクレジットカードが不正利用されたのを機に調査したところ、事態が発覚しました。

被害にあった11社はいずれも、国内ITベンダーが提供するSaaS型のECサイト構築サービスを利用しており、このサービスの基幹サーバー2台がXSS攻撃を受けたことが原因で、顧客情報が流出しました。

ITベンダーは、サーバーに対して外部からのアクセスを一時遮断した後、不正アクセスの分析を行い、流出した可能性のある顧客情報の範囲を特定。当該サービスの利用企業は約80社にのぼりましたが、結果的に不正アクセスが確認されたサーバーは2台のみと、被害の拡大を免れることができました。

ITベンダーは全サーバーに追加の対策を行うことで、再発防止に努めたとのことです。

2.ECサイトの決済機能をXSS攻撃にて改ざん、507件のカード情報が流出した事例

企業 通信販売会社
被害時期 2021年7月に発覚
対象サイト・サービス ECサイトへのXSS攻撃による決済機能の改ざん
被害内容 当該のECサイトを利用し、クレジットカード決済を行った顧客507件において、クレジットカードを含む個人情報が流出。


骨盤ケア用品やマタニティケア用品などを取り扱う、通信販売会社のECサイトがXSS攻撃の被害を受け、顧客情報507件が流出した事例です。

同社のECサイトのサーバー上に、管理対象外の不審なファイルを発見し調査したところ、XSS攻撃に用いられる記述のファイルであることが発覚。ECサイトのシステムに内在した脆弱性をつき、XSS攻撃によって、ペイメントアプリケーションの改ざんが行われたことが事件の原因でした。

通信販売会社は当日のうちに当該ECサイトを停止し、第三者調査機関による調査をスタート。再発防止に努めるとともに、カード会社と連携し、不正利用監視のためのモニタリングを実施するなどの対策を行いました。

クロスサイトスクリプティング攻撃も未然防止!「セキュリティ診断/脆弱性診断」とは

「Webアプリケーション」の脆弱性を明らかにし
現状課題や対策を専門のベンダーが手厚く支援

資料をダウンロードする

クロスサイトスクリプティング(XSS)のセキュリティ対策

XSS攻撃は、Webサイト/アプリケーションの脆弱性をついてきます。そのため

  • Webサイトの「制作・開発」を行う企業・組織
  • 自社のWebサイトを「運営」を企業・組織

双方が、XSS攻撃への対策を行う必要があります。「開発側」「運営側」それぞれの企業における、対策方法を説明します。

開発側の対策①:サニタイジング(スクリプトの無害化)

個人情報の登録や問い合わせフォームなど、ユーザーが文字入力をすることが見込まれるWebサイトには「サニタイジング」という対策が有効です。サニタイジングとは、Webアプリケーションにおいて、入力フォームの内容をチェックし、有害な文字・文字列を検知して無害化することです。

サニタイジングの一例として良く用いられる手法に「エスケープ処理」があります。サニタイジングとエスケープ処理は同義で使われることもありますが、厳密にいうとエスケープ処理はサニタイジングの一手法にとどまります。

エスケープ処理は、Webページを作成するための言語であるHTMLにおいて特別な意味を持つ文字列を、意味を待たない単なる文字列へと置き換えることで無害化を図る処理方法です。例えば、HTMLでタグの一部として認識される「<」を 「&lt;」に置き換えるといった処理をします。

開発側の対策②:入力値を制限する

あくまで保険的な対策となりますが、ユーザーが文字入力をすることが見込まれるWebサイトにおいて、ユーザーの入力値にサーバー側で制限をかける「バリデーション処理」も有効な手法です。

例えば、電話番号を入力する欄では「数字のみ」を許可し、氏名のふりがな欄では「ひらがなのみ」を許可するといった制限をかけます。文字種が制限できない場合は、何文字以上・何文字以下など入力値の長さを制限することも可能です。

こうした制限を設け想定外の文字列が入力されないようにすることで、XSS攻撃を受けにくくすることができます。また、ユーザーが入力したURLをリンクとして出力する場合には、「http://」「https://」から始まるものだけを許可するといった制限も有効です。

運営側の対策:WAFを導入する

WAFは「Web Application Firewall」の略で、名称の通りWebアプリケーションの脆弱性を狙った攻撃からWebサイトを守るファイアウォール(不正アクセスやサイバー攻撃を遮断する“防火壁”)です。

WAFでネットワーク通信を監視して、攻撃と判断した通信を遮断することで、XSS攻撃から自社・自組織のWebサイトを守ることができます。ECサイトのように、ユーザーの入力を受けたり、クレジットカード情報をはじめとする個人情報を取り扱ったりする動的サイトの保護に適したセキュリティ対策です。

ただし、Webサイトの脆弱性自体を修正できるわけではないため、根本的な解決にはなりません。

開発側・運営側共通の対策:Webアプリケーション脆弱性診断を受ける

自社や自組織のWebサイトの弱点(脆弱性)を見つけ出し、根本的な解決を図ってWebサイトの安全性を維持することは極めて重要です。既存のWebサイト・アプリケーションの脆弱性を明らかにするのが、専門のベンダーが行う「Webアプリケーション脆弱性診断」です。

Webアプリケーション脆弱性診断では

「Webアプリケーション開発時の設計ミスがないか」
「Webサーバーの設定ミスがないか」」
「XSS攻撃を仕掛ける余地はないか」

などの項目を、専門のベンダーが診断し対策案を提供します。

自社や自組織のWebサイトをXSS攻撃をはじめとするサイバー攻撃から守るには、こうした診断を定期的に受けることが必要です。

クロスサイトスクリプティング(XSS)攻撃の対策なら「LANSCOPE プロフェッショナルサービス」におまかせ

LANSCOPE プロフェッショナルサービスのロゴ
「LANSCOPE プロフェッショナルサービス」は、12,000件以上のサービス提供実績と90%以上という高いリピート率を誇るサイバーセキュリティに特化したサービスです。

LANSCOPE プロフェッショナルサービスが提供する「Webアプリケーション脆弱性診断」では、セキュリティ・スペシャリストがきめ細かい診断を行い、XSSの要因となる、WEBアプリケーションの脆弱性を明らかにし、有効な対策案を提案します。

診断結果は自サイトが抱えるリスクを「点数」で可視化することが可能。また、報告書には、経営層が自社サイトのリスクを把握するためのエグゼクティブサマリーや、発見された脆弱性の対策・修正提言なども含まれています。
webアプリケーション脆弱性診断の報告診断レポート

現状と今後行うべきことをしっかり把握することは、XSSをはじめとする、Webサイト経由のマルウェア感染や情報漏洩被害を未然に防ぐことに役立ちます。

LANSCOPE プロフェッショナルサービス の「Webアプリケーション脆弱性診断」はこちら

また、より手ごろな価格帯でWEBアプリケーションの脆弱性診断を受けていただける「セキュリティ診断パッケージ」も提供しております。

低コスト・短期で診断を行う『セキュリティ健康診断パッケージ』の詳細はこちら

その他、クロスサイトスクリプティング(XSS)でよくある質問


最後に、XSSに関するよくある質問や疑問についてまとめました。

Q. XSSの種類には、どんなものがありますか?

XSSには「Reflected XSS」「Stored XSS」「DOM Based XSS」の3種類があります。各特徴は以下の通りです。

1.Reflected XSS XSS攻撃の最も基本的な手法。攻撃者が用意したWebサイト等に仕掛けられた、不正なスクリプトを含むリンクをユーザーがクリックすることで、ユーザーを脆弱性があるWebサイトに誘導。

ユーザーの「このURLのWebサイトを表示してください」というリクエストに含まれた不正なスクリプトが、脆弱性のあるWebサイトから返ってきて、ユーザーのブラウザで実行されることから「反射型XSS」とも呼ばれる。

2.Stored XSS WebサイトやWebアプリケーション内に、攻撃者があらかじめ不正なスクリプトを格納しておく手法。クリックなどをしなくても、ユーザーが当該ページにアクセスをするだけでスクリプトが実行される。

不正なスクリプトはサーバーに保存されるため、Reflected XSSのように、罠を仕掛けたWebサイトやメールを用意する必要もなく、クリックを待つ必要もないため、継続的に効率的に攻撃を行うことが可能。「格納型XSS」とも呼ばれる。

3.DOM Based XSS 上記2つが「Webアプリケーションが、サーバー上で不正なスクリプトを含むHTMLを生成してしまうこと」が原因だったのに対しDOM Based XSSは、サーバー側ではなく「ブラウザ上」で不正なスクリプトが生成されるのが特徴。
プログラミング言語である「JavaScriptの脆弱性」を悪用する攻撃。DOMというのは「Document Object Model」の略で、プログラムからHTMLなどを操作するための仕組みのこと。この仕組みを悪意をもって利用する攻撃であるため、DOM Based XSSと呼ばれる。

SQLインジェクションとの違いを、わかりやすく教えてください

SQLインジェクションは、XSSと同様に、古くから存在する攻撃方法です。XSS攻撃と同じく、WebサイトやWebアプリケーションの脆弱性を悪用し、サイバー攻撃を行います。

XSSは、ユーザーのブラウザ上で不正なスクリプトを実行させ、個人情報の搾取・悪用を目的とする攻撃でした。一方、SQLインジェクションは直接データベースを操作し、Webサイト上の情報を改ざんしたり、データを搾取・消去・盗用したりすることが目的です。

SQLはデータベースを操作するための言語のことで、インジェクションは「注入」という意味の英単語です。SQLインジェクションは、入力フォームなどに不当なSQL文を「注入」し、実行させることで攻撃します。

クロスサイトリクエストフォージェリとの違いを、わかりやすく教えてください

クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケーションにおける脆弱性を悪用し、不正なリクエストを含むURLをユーザーにクリックさせることで、ユーザーが意図しないリクエストを受信・実行させる攻撃手法です。

例えば、オンラインバンキングのログイン中、クロスサイトリクエストフォージェリ(CSRF)を受けてしまうと、意図しない送金や商品購入のリクエストを実行するなどの被害も想定されます。

XSS攻撃が「ユーザーのWebブラウザでスクリプトを実行」させる攻撃であるのに対し、CSRFは「ユーザーに不正なリクエストを送信させ、サーバー側でそれが実行」される点で違いがあります。

まとめ

この記事では「XSS攻撃」について解説いたしました。

XSS攻撃は「Webアプリケーションの脆弱性を利用して、悪意のあるスクリプトをユーザーのブラウザで実行させ、個人情報の盗み取りやマルウェア感染などを行う」手法です。20年以上前からある古典的ともいえるサイバー攻撃ですが、今なお猛威を振るい、今後も多くの被害を生むことが予想されます。

XSSが起きてしまうのは、「攻撃者が不正なスクリプトを埋め込める環境」のままWebサイトを稼動しているからです。

重大な被害や損失が起きてしまう前に、WEBアプリケーションを開発する側・利用する側双方が、適切な対策を行うことが必要です。サニタイジングや入力値の制限、「Webアプリケーション脆弱性診断」を受けるなど、適切な対処法を行っていきましょう。

クロスサイトスクリプティング攻撃も未然防止!「セキュリティ診断/脆弱性診断」とは

「Webアプリケーション」の脆弱性を明らかにし
現状課題や対策を専門のベンダーが手厚く支援

資料をダウンロードする

「クラウドサービスのセキュリティ対策」実態調査

中小企業の情シス1,000人に聞いた

「クラウドサービスのセキュリティ対策」実態調査結果を発表!

急増中のクラウド経由の情報漏洩にどう対策している?クラウドサービスを利⽤している企業様の対策状況や課題を調査しました

資料をダウンロードする

【TOP5】Webアプリケーション脆弱性診断で検出数の多い「注意すべき脅威」とは?

MOTEXの診断員がよく発見する「Webアプリの5つのリスク」の概要・対策を解説します!

資料をダウンロードする


失敗しないための脆弱性診断実施のコツ

セキュアな開発・サービス提供に必須!はじめての脆弱性診断 正し進め方ガイド

資料をダウンロードする