Written by 岩瀬めぐみ
目 次
クロスサイトスクリプティング(XSS)攻撃とは
クロスサイトスクリプティング(XSS)攻撃の基本的な流れ
クロスサイトスクリプティング(XSS)攻撃の被害件数は増加傾向
クロスサイトスクリプティング(XSS)攻撃を受けると、どんな被害がある?
1.偽のWebページ表示による、情報漏えいや金銭被害のリスク
2.Cookie情報の窃取
クロスサイトスクリプティング(XSS)の注意が必要な、WEBサイトの特徴
クロスサイトスクリプティング(XSS)の被害事例
1. SaaSサービスがXSS攻撃被害、43万件の顧客データが流出した事例
2.ECサイトの決済機能をXSS攻撃にて改ざん、507件のカード情報が流出した事例
クロスサイトスクリプティング(XSS)のセキュリティ対策
開発側の対策①:サニタイジング(スクリプトの無害化)
開発側の対策②:入力値を制限する
運営側の対策:WAFを導入する
開発側・運営側共通の対策:Webアプリケーション脆弱性診断を受ける
クロスサイトスクリプティング攻撃の対策なら「LANSCOPE プロフェッショナルサービス」にお任せ
その他、クロスサイトスクリプティング(XSS)でよくある質問
Q. クロスサイトスクリプティングの種類には、どんなものがありますか?
SQLインジェクションとの違いを、わかりやすく教えてください
クロスサイトリクエストフォージェリとの違いを、わかりやすく教えてください
まとめ
クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性をつき悪質なスクリプトを埋め込むことで、なりすましや不正操作を行う、サイバー攻撃の1種です。
クロスサイトスクリプティング攻撃を受けることで、以下のような被害を受けるリスクがあります。
- Webページに偽の入力フォームを表示させ、ユーザーの個人情報や機密情報を窃取する
- Cookieに保存されたセッションIDを窃取し、ユーザーのアカウントに不正アクセスする(セッションハイジャック)
- Webページ上で不正な処理を実行させ、ユーザーの意図しない動作をさせる(不正送金や悪意ある情報発信など)
こういった攻撃の被害を低減するためには、webサイトやアプリケーションを制作する「開発・提供側」の企業と、それを利用する「運営管理側」の企業の双方が、適切なセキュリティ対策を行う必要があります。
この記事では、クロスサイトスクリプティング攻撃の仕組みや被害事例、狙われやすいWebサイトの特長、対策などをご説明します。
中小企業の情シス1,000人に聞いた
「クラウドサービスのセキュリティ対策」実態調査結果を発表!
急増中のクラウド経由の情報漏洩にどう対策している?クラウドサービスを利⽤している企業様の対策状況や課題を調査しました。
クロスサイトスクリプティング(XSS)攻撃とは
クロスサイトスクリプティング(XSS)攻撃とは、Webサイトのセキュリティ上の欠陥につけこんで不正なスクリプト(簡易プログラム)を埋め込み、サイトを閲覧した不特定多数のユーザーにスクリプトを実行させる、悪質なサイバー攻撃のことです。
Webサイトにやってきたユーザーを、偽のWebサイトへ誘導して個人情報を窃取するなど、サイトをまたいで(クロスして)攻撃する手口が多いことから「クロスサイトスクリプティング」と呼ばれています。
「掲示板」や「アンケートサイト」あるいは「個人情報の入力画面」があるフォームなど、ユーザーが入力した情報を表示する機能を備えたWebサイトは、クロスサイトスクリプティング攻撃の対象とされやすいです。
クロスサイトスクリプティング(XSS)攻撃の基本的な流れ
セキュリティに欠陥がある=脆弱性があるWebサイトに対して、攻撃側はクロスサイトスクリプティング攻撃を仕掛けます。攻撃手順の「一例」は、以下の通りです。
《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などに不正アクセスされたり、マルウェアに感染したり、といった被害を受ける可能性があります。
クロスサイトスクリプティング攻撃は「脆弱性のあるWebサイト」を対象とするため、被害を防ぐには、そもそもWebサイトやアプリケーションの脆弱性を改善し、攻撃の余地をなくすことが重要です。
また利用者が、クロスサイトスクリプティング攻撃の被害を軽減するためには、不審なWebサイトやURLを、安易にクリックしないよう意識することが大切です。
クロスサイトスクリプティング(XSS)攻撃の被害件数は増加傾向
Webサイトの脆弱性をつく、クロスサイトスクリプティング攻撃は、20年以上前から存在するサイバー攻撃の手法です。古くからある手口である一方、いまだに多くの組織やwebサイトがクロスサイトスクリプティング攻撃の被害にあっているのが現実です。
情報処理推進機構(IPA)が公開する活動報告レポートによると、2023年の1~3月に登録された脆弱性の種類別件数のうち、クロスサイトスクリプティング(CWE-79)が最多の「343件」に上ることが報告されています。
出典:IPA(情報処理推進機構)│脆弱性対策情報データベースJVN iPediaに関する活動報告レポート(2023年第1四半期1月~3月)
クロスサイトスクリプティング(XSS)攻撃を受けると、どんな被害がある?
クロスサイトスクリプティング攻撃を受けることで、ユーザーは以下のような被害を受ける危険性があります。
1.ユーザーがフィッシング詐欺などの被害にあう
2.Cookie情報を搾取される
それぞれの詳細を説明します。
1.偽のWebページ表示による、情報漏えいや金銭被害のリスク
クロスサイトスクリプティング攻撃のよる、1つ目の被害リスクは「偽のWebページに個人情報を入力することにより、情報漏洩や金銭的な被害にあってしまう」ことです。
XSS攻撃による偽サイトは「正規のサイト上」に表示されるため、ユーザーはもちろんサイト管理者であっても、悪意あるページに気づくことは困難です。
攻撃者は偽ページにユーザーを誘導し、正規サイトを名乗って、ログイン情報やクレジットカード・口座情報などを入力させます(フィッシング詐欺の手口)。攻撃者に個人情報を盗まれることにより
- 通販やSNS等のアカウントへ不正ログイン・乗っ取られる
- 住所やカード情報などが流出・ばらまかれる
- ネットバンキングを装った悪質なWebページより、不正送金を行う
などの被害を受けてしまうリスクがあります。
2.Cookie情報の窃取
2つ目の被害リスクは「Cookie情報を不当に窃取される」ことです。
Cookieとは、Webサイトに訪れたときに付与される「テキストファイル」のことです。ログイン時に必要なIDやパスワードをはじめ、ネットショッピングでカートに入れた商品、フォームに入力した住所や氏名情報など「閲覧履歴」と「設定/入力情報」をユーザーのブラウザに保存します。
Cookieを利用することで、ユーザーは毎回ID等を入力する手間が省け、webサイトの利便性向上を図ることが可能です。しかし、XSS攻撃で仕掛けられた「スクリプト」を実行すると、ユーザーがwebサイト上で入力したCookieが、悪意のある第三者に取得されてしまう危険性があります。
Cookieを盗まれることで、サイト内の個人情報を窃取・漏洩されたり、アカウントが乗っ取られたりといった被害が想定されます。
クロスサイトスクリプティング(XSS)の注意が必要な、WEBサイトの特徴
クロスサイトスクリプティング(XSS)攻撃は、ユーザーの入力情報や趣味嗜好に合わせてページを作成する「動的サイト」の脆弱性を狙ってきます。
いつ、誰が、どこで見ても同じページ・同じ情報が表示される「静的サイト」とは異なり、アクセスしたユーザーなどに応じたページ・情報を表示するのが「動的サイト」です。
▼ECサイトの例
- 企業概要、よくある質問など(いつ誰が見ても同じ情報が表示される)…静的ページ
- おすすめ商品、購入履歴など(ユーザーごとに異なる情報が表示される)…動的ページ
クロスサイトスクリプティング(XSS)に対して注意が必要なのは「動的サイト」「動的ページ」です。中でも以下のような「ユーザーの入力情報に合わせてページを作成・表示するWebサイトやページ」は脆弱性が生じやすくなっています。
<脆弱性が生じやすいWebサイトの例>
- アンケートサイト
- 掲示板、ブログ、SNSなどコメントの書き込みができるサイト
- ログイン時にIDとパスワードなどの入力が求められるサイト
<脆弱性が生じやすいページの例>
- サイト内検索
- ログインページ
- ショッピングや申し込みなど個人情報の入力が必要なページ
- 問い合わせや会員登録など入力内容を確認する画面が表示されるページ
先述した「Cookieを利用してログイン」をするサイトや「個人情報の入力が求められるページ」などは、特に注意が必要です。
クロスサイトスクリプティング(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サイトを停止し、第三者調査機関による調査をスタート。再発防止に努めるとともに、カード会社と連携し、不正利用監視のためのモニタリングを実施するなどの対策を行いました。
クロスサイトスクリプティング(XSS)のセキュリティ対策
クロスサイトスクリプティング(XSS)攻撃は、Webサイトの脆弱性をついてきます。そのため
- Webサイトの「制作・開発」を行う企業・組織
- 自社のWebサイトを「運営」を企業・組織
双方が、XSS攻撃への対策を行う必要があります。「開発側」「運営側」それぞれの企業における、対策方法を説明します。
開発側の対策①:サニタイジング(スクリプトの無害化)
個人情報の登録や問い合わせフォームなど、ユーザーが文字入力をすることが見込まれるWebサイトには「サニタイジング」という対策が有効です。サニタイジングとは、Webアプリケーションにおいて、入力フォームの内容をチェックし、有害な文字・文字列を検知して無害化することです。
サニタイジングの一例として良く用いられる手法に「エスケープ処理」があります。サニタイジングとエスケープ処理は同義で使われることもありますが、厳密にいうとエスケープ処理はサニタイジングの一手法にとどまります。
エスケープ処理は、Webページを作成するための言語であるHTMLにおいて特別な意味を持つ文字列を、意味を待たない単なる文字列へと置き換えることで無害化を図る処理方法です。例えば、HTMLでタグの一部として認識される「<」を 「<」に置き換えるといった処理をします。
開発側の対策②:入力値を制限する
あくまで保険的な対策となりますが、ユーザーが文字入力をすることが見込まれる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)攻撃をはじめとするサイバー攻撃から守るには、こうした診断を定期的に受けることが必要です。
クロスサイトスクリプティング攻撃の対策なら「LANSCOPE プロフェッショナルサービス」にお任せ
「LANSCOPE プロフェッショナルサービス」は、12,000件以上のサービス提供実績と90%以上という高いリピート率を誇るサイバーセキュリティに特化したサービスです。
LANSCOPE プロフェッショナルサービスが提供する「Webアプリケーション脆弱性診断」では、セキュリティ・スペシャリストがきめ細かい診断を行い、クロスサイトスクリプティング(XSS)の要因となる、WEBアプリケーションの脆弱性を明らかにし、有効な対策案を提案します。
診断結果は自サイトが抱えるリスクを「点数」で可視化することが可能。また、報告書には、経営層が自社サイトのリスクを把握するためのエグゼクティブサマリーや、発見された脆弱性の対策・修正提言なども含まれています。
現状と今後行うべきことをしっかり把握することは、クロスサイトスクリプティングをはじめとする、Webサイト経由のマルウェア感染や情報漏洩被害を未然に防ぐことに役立ちます。
LANSCOPE プロフェッショナルサービス の「Webアプリケーション脆弱性診断」はこちら
また、より手ごろな価格帯でWEBアプリケーションの脆弱性診断を受けていただける「セキュリティ診断パッケージ」も提供しております。
低コスト・短期で診断を行う『セキュリティ健康診断パッケージ』の詳細はこちら
その他、クロスサイトスクリプティング(XSS)でよくある質問
最後に、クロスサイトスクリプティング(XSS)の仕組みや対策がわかったところで、さらに理解を深めるべく、よくある質問や疑問についてまとめました。
Q. クロスサイトスクリプティングの種類には、どんなものがありますか?
クロスサイトスクリプティング(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アプリケーション脆弱性診断」を受けるなど、適切な対処法を行っていきましょう。
中小企業の情シス1,000人に聞いた
「クラウドサービスのセキュリティ対策」実態調査結果を発表!
急増中のクラウド経由の情報漏洩にどう対策している?クラウドサービスを利⽤している企業様の対策状況や課題を調査しました