Introduction
「クロスサイトスクリプティング」というサイバー攻撃の存在は知っていても、具体的にどのような攻撃なのかわからない人も多いでしょう。企業サイトやECサイトを運営する場合、クロスサイトスクリプティング対策が必須です。セキュリティリスクを避けるためには、セキュリティの脅威について理解を深めていく必要があります。
この記事では、クロスサイトスクリプティングの詳細や具体的な被害事例、対策などについて詳しく解説します。これからECサイトや企業サイトを構築する場合、脆弱性診断を受けたことがない場合などに、この記事を参考にしてみてください。
目次
クロスサイトスクリプティング(XSS)とは?
クロスサイトスクリプティングとは、どのようなものでしょうか?クロスサイトスクリプティングの対策について知るために、まずはその詳細についてご説明します。
スクリプトとは?
クロスサイトスクリプティングに含まれている「スクリプト」とは、簡易的なプログラムのことです。もともとスクリプトは、台本、原稿などを意味しますが、ITの世界では簡単なコンピュータープログラムのことを指します。
クロスサイトスクリプティングの仕組み
クロスサイトスクリプティングの仕組みは、IPA(情報処理推進機構)の『安全なウェブサイトの作り方 – 1.5 クロスサイト・スクリプティング』によると、以下のように記されています。
クロスサイトスクリプティングの仕組み
ウェブアプリケーションにスクリプトを埋め込むことが可能な脆弱性がある場合、これを悪用した攻撃により、利用者のブラウザ上で不正なスクリプトが実行されてしまう可能性があります。
具体的には、ネットの掲示板やECサイトなどに、攻撃者により悪意あるスクリプトが埋め込まれ、ユーザーがそのサイトを閲覧した際にそれが実行されるなどです。メールで送りつけられた不正なリンクをクリックしてしまい、不正なWebサイトに誘導され、不正なスクリプトを実行してしまうこともあります。
ユーザー側の端末で不正なスクリプトが実行されると、ユーザーの情報が格納されたCookieが盗まれてしまいます。そして、盗み出したCookieの情報を悪用してSNSアカウントを乗っとられる、ネットバンキングにログインされるなどの被害が起こってしまうのです。
クロスサイトスクリプティングの種類
クロスサイトスクリプティングには、いくつかの種類があります。ここでは、その種類についてご説明します。
反射型XSS
ユーザーからのリクエストにスクリプトが含まれており、それがユーザーに送り返されて実行されるタイプを反射型XSSといいます。
格納型XSS・持続型XSS
悪意あるスクリプトが、Webアプリケーションに格納されているタイプを格納型XSS、または持続型XSSといいます。そのようなWebアプリケーションにアクセスすると、悪意あるスクリプトを実行してしまいます。
DOM Based XSS
JavaScriptなど、Webブラウザ内部の脆弱性をついて実行されるタイプです。サーバー側にアクセスすることなく、ユーザー側の処理のみで攻撃が成立します。
SQLインジェクションとの違い
Webアプリケーションの脆弱性をついたサイバー攻撃として、SQLインジェクションがあります。
SQLインジェクションは、データベースを操作する命令文のSQL文をWebサイトの入力フォームなどに入力し、データベースの不正操作を行うものです。データベース内の個人情報を閲覧されたり、データを不正に更新、削除されたりします。
SQLインジェクションはサーバー側で不正な命令が行われますが、クロスサイトスクリプティングはユーザー側の端末で不正なスクリプトが行われます。どこで不正な命令が実行されるかが、異なる点です。
SQLインジェクションについてはこちらもご覧ください。
>>SQLインジェクションとは?手口や被害事例、対策をわかりやすく解説のページへ
クロスサイトリクエストフォージェリ(CSRF)との違い
クロスサイトリクエストフォージェリも、クロスサイトスクリプティングと同じく、Webアプリケーションの脆弱性をついたサイバー攻撃です。
クロスサイトリクエストフォージェリでは、正規のユーザーのふりをして、サーバーに偽のリクエストを送信します。その結果、ECサイトで勝手に高額な商品を購入される、SNSでなりすまされるなどの被害が起こるのです。
ユーザーの端末で不正なスクリプトが実行され、Cookie情報などを盗まれるクロスサイトスクリプティングとは、性質が異なります。
クロスサイトスクリプティングによって起こりうる被害
クロスサイトスクリプティングの攻撃を受けると、どのような被害にあうのかをご説明します。
正規のWebサイト上に偽のページ・情報が表示される
正規のWebサイトにアクセスしたはずなのに、偽のページ、偽の情報が表示されてしまいます。
たとえば、ECサイトにログインしようと正規のサイトにアクセスしたつもりが、偽のログイン画面が表示されたとします。それに気づかずにログイン情報を入力すると、ログイン情報が盗まれて悪用されてしまうでしょう。
また、正規のサイトで偽情報が表示されると、企業活動が妨げられてしまいます。
Cookieの情報が漏洩する
ユーザー側の端末で不正なスクリプトが実行されることで、Cookie情報が盗まれることがあります。Cookie情報には、セッションIDや個人情報が格納されており、セッションIDを利用したなりすましや個人情報の漏洩などが起こります。
たとえば、SNSのセッションIDが盗まれると、第三者がそのユーザーのSNSアカウントになりすますことが可能です。なりすましたアカウントを使って、ギフトカードを購入させるなどの犯罪が行われることもあります。
ブラウザに任意のCookieを保存させられる
Cookie情報を盗まれるだけでなく、攻撃者からCookie情報を送りつけられることもあります。
Cookie情報には、SNSアカウントのセッションIDが含まれています。悪意ある攻撃者が、あらかじめ取得しておいたセッションIDを使った状態でSNSにログインすると、攻撃者がそのユーザーになりすますことが可能です。その結果、なりすましたSNSアカウントが犯罪に利用されるなどの被害にあう可能性があります。
クロスサイトスクリプティングの被害事例
実際に、クロスサイトスクリプティングの被害にあった事例についてご説明します。
市のふるさと納税特設サイト が狙われた事例
ある地方自治体のふるさと納税特設サイトが、クロスサイトスクリプティングの被害にあいました。サイトを通じて、クレジットカード決済を行った人のクレジットカード情報、ログイン情報などが、約1,000件漏洩した可能性があります。
対応として、サイトの利用者にクレジットカード再発行の手続きについて周知し、カードの再発行手数料の負担などが発生しています。また、当該のふるさと納税特設サイトの信頼性が損なわれてしまいました。
オムニECシステムが狙われた事例
2021年に11社のECサイトがクロスサイトスクリプティングの被害にあい、顧客情報が流失しました。流出した可能性がある顧客情報は、のべ43万件以上と大規模な被害です。
被害が発覚した際には、サーバーへの外部からのアクセスを遮断し、対応に追われました。ECサイトの信頼は失われ、売上の低下などが発生した可能性もあります。
このように、クロスサイトスクリプティング攻撃にさらされることで、企業や地方自治体に多大な被害が発生したことがわかります。
クロスサイトスクリプティングの対策
クロスサイトスクリプティングを防ぐための対策について詳しくご説明します。
IPAが示すやり方に従って対策する
IPA(情報処理推進機構)が『安全なウェブサイトの作り方 – 1.5 クロスサイト・スクリプティング』で紹介している、クロスサイトスクリプティングを防ぐための対策をいくつかご説明します。
エスケープ処理
Webサイトを構築する際には、HTMLタグなどの記述に「<」「>」「&」のような特殊な記号が使われます。HTMLタグの属性値を「”」で囲ったうえで、ユーザーの入力値を特殊な記号として扱わないように出力時に変換する処理がエスケープ処理です。
クロスサイトスクリプティングを仕かける攻撃者は、上記のような特殊記号を悪用して、悪意あるスクリプトを仕かけようとします。その際に、外部から渡される入力値にエスケープ処理を行うことで、特殊記号を悪用した攻撃を防ぐことが可能です。
「http://」や 「https://」ではじまるURLのみ許可する
URLには「http://」や 「https://」以外にも「javascript:」ではじまるものもあります。しかし、「javascript:」ではじまる場合、IPA(情報処理推進機構)の『安全なウェブサイトの作り方 – 1.5 クロスサイト・スクリプティング』によると、以下のような危険性があると記されています。
「javascript:」ではじまる場合
ウェブページに出力するリンク先や画像のURLが、外部からの入力に依存する形で動的に生成される場合、そのURLにスクリプトが含まれていると、クロスサイト・スクリプティング攻撃が可能となる場合があります。
そのため「http://」や 「https://」ではじまるURLだけを使える仕様にすれば、悪意あるスクリプトを埋め込まれないので、安全に利用できます。
<script>...</script>の内容を動的に生成しない(<>は半角)
<script>…</script>で囲われた要素を動的に生成する仕様にすると、悪意あるスクリプトを埋め込まれてしまう可能性があります。そのため、そもそも<script>…</script>で囲われた要素を動的に生成しないように、サイトを構築しておくとよいでしょう。
入力できる文字の種類(入力値)を制限する
Webサイトなどから入力される入力値をチェックし、仕様にあわない入力値を制限することも、ある程度の対策になります。たとえば、英数字のみの入力を可能にするように入力チェック処理を実装する、入力できる文字数を限定するなどです。そうすることで、悪意あるスクリプトを入力しづらくなります。
ただし、幅広い文字の種類が使える入力欄の場合は、対策になりません。限定的な対策ですが、効果があるケースに活用するとよいでしょう。
WAF(ウェブアプリケーションファイアウォール)を導入する
WAF(ウェブアプリケーションファイアウォール)なら、従来のファイアウォールでは防げないアプリケーションの脆弱性を狙う攻撃を防げるようになります。ネットワークレベルの防御を高めるだけでなく、アプリケーション側の対策も講じることで、よりセキュリティレベルを高くできるでしょう。
ただし、攻撃パターンによってはWAFで防げない場合もあります。原則Webアプリケーションで対策し、万が一に備えてWAFを導入するのがよいでしょう。
ブラウザのセキュリティ 設定を変更する
これはユーザー側の対策ですが、ブラウザの設定を変更することで対策になることがあります。
クロスサイトスクリプティングで狙われるCookie情報のなかでも、とくに問題を起こしやすいのがサードパーティーCookieです。これは、クロスドメインCookieとも呼ばれ、もともと使われていたWebサイトのドメインとは異なるドメインから発行されるCookieのことです。サードパーティーCookieを悪用して、個人情報を収集されることもあり、クロスサイトスクリプティング攻撃を受ける可能性があります。
Webサイトやメール上のURLを安易にクリックしない
こちらもユーザー側の対策ですが、Webサイトやメールに表示されたURLを安易にクリックしないようにしましょう。また、Webサイトにアクセスする際には、ブックマークからアクセスするなど、正規のサイトにアクセスする対策も有効です。
定期的な脆弱性診断を行う
脆弱性診断とは、社内システムやネットワークの脆弱性を洗い出して検出するサービスです。社内ネットワーク通信ポートを総当たりして、ネットワークの脆弱性を探し出すなどの診断を行います。脆弱性はさまざまな箇所に潜んでいるので、ネットワークだけでなく、アプリケーションやOSなどに対して幅広く診断します。
脆弱性診断は、新サービスや新システムの利用を開始する際や機能追加、システム更新などを行う際に必ず実施するべきです。そして、新たに発見される脆弱性に対応するために、その後も定期的に受けることをおすすめします。
脆弱性診断についてはこちらもご覧ください。
>>脆弱性診断とは?診断の種類や必要な理由、やり方やツールについても解説のページへ
>>脆弱性診断とペネトレーションテストの違いとは?自社に必要なのはどちらか、選び方を解説のページへ
>>セキュリティ診断サービスとは?比較・選定ポイントについて解説のページへ
>>脆弱性診断の適切な頻度とは?項目ごとの違いやタイミングについて解説のページへ
SHIFTのセキュリティ(脆弱性)診断について
SHIFTでは、国際基準に基づいた判断基準で、次のようなセキュリティ(脆弱性)診断を対応しています。
<SHIFTのセキュリティ(脆弱性)診断>
・Webアプリケーション診断
・スマートフォンアプリケーション診断
・クラウド診断
・ペネトレーションテスト
・エンドポイント診断
・診断内製化支援
・負荷テスト
・プラットフォーム診断
・ソースコード診断
SHIFTには、診断の実行チームに200名以上のスタッフが在籍しており、その上級チームとして設計チーム、標準化チームがいます。高度な対応を行える標準化チームが作業を標準化することで、属人化を排除し、手動検査でもブレのない高品質な脆弱性診断をご提供します。
関連サービスについて
まとめ
この記事では、クロスサイトスクリプティングの詳細や具体的な被害事例、対策などについて詳しく解説しました。
クロスサイトスクリプティングの被害にあうと、情報漏洩が発生するなど、企業経営に大きな打撃を受けることもあります。そのため、日ごろから脆弱性診断を受け、セキュリティリスクに対する対応を行っておきましょう。