クロスサイトスクリプティング(XSS)とは?基礎知識・リスクから対策方法までを網羅

「クロスサイトスクリプティング(Cross-Site Scripting:XSS)」は古くから知られる、有名なサイバー攻撃の一つです。対策方法は確立されているものの、開発上のわずかなミスで発生するため、現在でも多くの脆弱性発見や被害の報告が寄せられています。

本記事では、クロスサイトスクリプティング(XSS)の仕組みやビジネスへの影響から、具体的な対策方法まで、わかりやすく解説します。外注開発を進める中でセキュリティ対策に不安を感じている方、自社サービスの安全性を向上させたい方は、ぜひ参考にしてください。

 

 

クロスサイトスクリプティング(XSS)とは?対策前に知っておきたい基礎知識

クロスサイトスクリプティング(XSS)とは、WebサイトやWebアプリケーションの脆弱性を悪用する攻撃手法です。ブラウザ上で不正なプログラムを実行させる手法で、正規のサービスに悪意のある仕掛けを施し、アクセスしてきたユーザーを狙います。

クロスサイトという名称は、登場初期において、異なるサイトを経由・横断して攻撃が行われたことに由来します。完全な対策が難しく、知らず知らずのうちに被害に遭う、危険なサイバー攻撃です。

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

クロスサイトスクリプティング(XSS)の攻撃は、入力フォームやコメント欄など、セキュリティ上の弱点となりやすい部分に、悪意のあるスクリプト(*1)を仕込むところから始まります。ユーザーがそのページを開いた瞬間、ブラウザは不正なプログラムを正規コンテンツの一部と誤認し、そのまま実行してしまうのです。

例えば、ECサイトのレビュー欄に悪意のあるスクリプトが投稿されていた場合、そのページにアクセスしたユーザーのブラウザは、自動でプログラムを実行してしまいます。これにより、フィッシングサイトへの誘導や、なりすましの原因となるセッション情報の窃取など、深刻な被害が引き起こされます。

*1:Webサイトの動的な表現や作業の自動化などに使われる簡易的なプログラム

主な種類

クロスサイトスクリプティング(XSS)は、攻撃の手口によって大きく3つの種類に分類されます。

種類 詳細
格納型クロスサイトスクリプティング(蓄積型)

・掲示板などに不正なプログラムを投稿し、サーバーに保存させる手法
・ページを閲覧する全ユーザーが標的となるため、非常に危険

反射型クロスサイトスクリプティング

・正規のURLと不正なプログラムを組み合わせたリンクをメールやSNSなどで送り、クリックさせる手法
・被害はリンクを踏んだ本人に限られる

DOMベースクロスサイトスクリプティング

・リンクにプログラムを仕込む点は反射型と同じ
・サーバーを経由せず、ユーザーのブラウザ上だけで攻撃が完結するため、ログが残りにくく、検知が特に困難

いずれの手法も、正規のWebサービスを使っている感覚のまま被害に遭うのが特徴です。また、手法によってはサービス提供者側の記録にも残りにくく、発見・対処が遅れるケースもあります。

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

Webサイトの脆弱性を狙う攻撃には「SQLインジェクション」もありますが、両者は標的と手法が明確に異なります。

攻撃手法 標的 手法
クロスサイトスクリプティング サイト・アプリを利用するユーザー Webブラウザ上で動作するJavaScriptやHTMLなどを悪用
SQLインジェクション Webサイトの裏側にあるデータベース データベースを操作する言語・SQL文を悪用

実店舗に例えるなら、店を訪れたお客さんをだます行為がクロスサイトスクリプティング(XSS)、店に侵入して売上や顧客の情報を盗む行為がSQLインジェクションです。前者は顧客が、後者は企業そのものを対象にしています。

なぜクロスサイトスクリプティング(XSS)への対策を徹底すべきなのか

クロスサイトスクリプティング(XSS)は長年知られている攻撃手法ですが、現在でも徹底した対策が求められている背景には、いくつかの理由があります。

古典的な攻撃手法ながらも深刻な脅威として存続

クロスサイトスクリプティング(XSS)は、20年以上前から存在が確認されている非常に古い脆弱性です。しかし、Webサイトを安全に開発するためのツールが進化した現在でも、その脅威はいまだに消滅していません。

なぜなら、開発者のケアレスミスやチェック漏れによって、簡単に脆弱性が生み出されるからです。実際に、独立行政法人情報処理推進機構(IPA)へ寄せられる脆弱性の報告においても、XSSに関する届出は毎年多くの割合を占めています。

完全な対策が困難で、大手IT企業も被害に遭っている

クロスサイトスクリプティング(XSS)は少しのミスで発生しやすい反面、すべての脆弱性を検出して完全に修正することは非常に困難です。本番環境に脆弱性が紛れ込むリスクは常に存在し、世界的な大手企業でも以下のような被害が報告されています。

  • YouTube:デマニュースへの誘導やコメント非表示などの被害が発生(2010年)

  • Twitter(現X):特定の投稿にマウスを重ねるだけで不正なポップアップが表示される事象が発生(2010年)

また、近年でもAmazon AlexaやMicrosoft 365、Copilotといった有名ツールにおいて、脆弱性の存在が報告されています。

生成AI開発の普及により新たなリスクが顕在化

近年は、AIに自然言語でコードを書かせる開発手法が急速に普及し、開発スピードは劇的に向上しました。しかし、AIが生成したコードには人間が記述したものより高い確率で脆弱性が含まれるという指摘もあり、セキュリティ面での懸念が広がっています。

納期を優先した開発が行われた場合、依頼先がセキュリティレビューを十分に実施しているかどうか、発注側には判断しにくいのが実情です。脆弱性を抱えたままのシステムがリリースされるリスクは、外注開発においても決して小さくありません。

クロスサイトスクリプティング(XSS)がもたらすビジネスへの影響

クロスサイトスクリプティング(XSS)の被害は、単なるシステム上の不具合にとどまりません。

被害状況によっては、企業の経営基盤を揺るがす深刻なビジネスリスクにも発展します。

情報漏えいによる財務的・法的な損害

クロスサイトスクリプティング(XSS)によって、ユーザーのログイン情報やクレジットカード情報が盗まれると、情報漏えいインシデントに発展します。万が一、管理者権限を持つアカウントのセッションID(*2)が窃取されると、なりすましによる不正アクセスを許し、大規模な漏えいや乗っ取りといった、深刻な事態にも発展します。

仮に大規模な漏えいが起きれば、被害者への損害賠償やシステムの復旧費用など、数千万円規模の財務的負担は免れません。さらに、各種データ保護規制の違反による重いペナルティや、法的責任を追及される事態にも陥ります。

*2:ユーザーを識別するための一時的な識別子で、Cookieに保存される

サービス・システムの停止による機会損失

クロスサイトスクリプティング(XSS)単体でシステムが完全に停止するケースは稀です。しかし、セッションIDの窃取といった二次的な被害が発生した場合、状況は一変します。

深刻な不正アクセスやデータの改ざんが発覚すれば、原因究明と対策のためにサービスやシステムを停止せざるを得ません。復旧までの間、事業活動そのものがストップするため、企業にとって甚大な売上減少と機会損失をもたらします。

ブランドイメージと信用の失墜

セキュリティインシデントがニュースやSNSで拡散されると、企業のブランドイメージは著しく低下します。セキュリティ対策が疎かな企業と認識されると、既存顧客の退会や新規顧客の減少などを招きかねません。

また、取引先からの信用失墜、上場企業であれば株価下落にもつながるリスクがあります。さらに、一度失った信用を回復するには、多大な費用と労力、時間が必要です。

クロスサイトスクリプティング(XSS)への対策方法

自社のサービスや顧客をサイバー攻撃から守るためには、クロスサイトスクリプティング(XSS)への対策が欠かせません。

ここでは、押さえておきたい5つの対策方法とその効果を解説します。

エスケープ処理

Webブラウザ上で不正なプログラムが実行されるのを未然に防ぐため、「エスケープ処理(サニタイジング)」の徹底が求められます。エスケープ処理とは、Webページを構成する言語・HTMLで特別な意味を持つ記号(「<」「>」「&」など)を、意味を持たない無害な文字列に変換する処理です。

この処理により、悪意あるスクリプトが単なる文字の羅列として認識されるため、被害を直接的に防止できます。なお、開発ツールは自動でエスケープ処理を行う機能を備えていますが、設定により機能が無効になるケースもあるため、こまめな確認が不可欠です。

入力値の検証(バリデーション)

入力値の検証(バリデーション)とは、許可する文字種や形式を定義し、その定義から外れた入力を排除する対策です。文字の種類や形式、長さで制限する手法で、クロスサイトスクリプティング(XSS)だけでなく、SQLインジェクションの防止にも活用されます。

特に有効とされるのが、許可したもの以外をすべて排除する「ホワイトリスト方式」です。英字と数字のみを受け付け、記号を許可しないといった制限が可能なため、攻撃を受けにくい状態を構築できます。

JavaScriptのライブラリやCMSを最新に保つ

プログラミングの効率化に役立つオープンソースのライブラリや、Webサイトの構築を支援するCMS(Contents Management System)は、古いバージョンのまま運用すると攻撃者の標的となります。なぜなら、過去に発表された脆弱性への対策が行われておらず、狙われやすい状態になるからです。

そのため、ライブラリとCMSは常に最新の状態に保ち、広く知られた抜け穴を確実に塞ぎましょう。

WAFの導入

WAF(Web Application Firewall)とは、Webサービスへの通信を常時監視し、不審なアクセスを自動で検知・遮断するセキュリティツールです。クロスサイトスクリプティング(XSS)特有の攻撃パターンをシグネチャベースで判定し、悪意のあるスクリプトを含む通信をブロックします。

開発側の対策では防ぎきれなかった攻撃に対しても機能するため、万が一の備えとして非常に有効です。ソースコードを改修することなく導入できるため、既存の環境にも容易に後付けできます。

脆弱性診断の定常的な実施

脆弱性診断とは、自社のWebサービスに潜むセキュリティ上の弱点を、プロが専門家や攻撃者の視点で洗い出す検査です。問題が発覚してから対応するのではなく、被害が発生する前に修正できるため、情報漏えいやブランド毀損といった深刻なリスクを未然に防げます。

脆弱性の情報や攻撃手法は日々変化するため、開発完了時だけでなく、運用開始後も定期的に実施することが重要です。

関連記事:脆弱性診断のやり方を徹底解説!種類や実践ポイント、役立つツールも

被害の防止には多層防御・被害を最小限に抑える設計が不可欠

クロスサイトスクリプティング(XSS)への対策は、一つの手段だけで完結するものではありません。エスケープ処理や入力値の検証といった開発時の対策と、WAFによる通信レベルの防御を組み合わせることで、はじめて実効性のあるセキュリティ体制が整います。

さらに、クロスサイトスクリプティング(XSS)による被害を広げないための設計も重要です。管理者を含むユーザーのセッションIDが盗まれた際に被害が拡大しないよう、セッションの有効期限を短く設定したり、重要操作時に追加認証を求めたりする対策が有効です。また、脆弱性や異常が発見された際に誰が・どう対応するかを事前に決めておくことで、被害の拡大を最小限に抑えられます。

関連記事:セキュリティインシデント対策の重要性。発生時の対応手順、事前に行うべき備えを徹底解説

対策を進めるうえで多くの組織が直面する課題

クロスサイトスクリプティング(XSS)への対策方法は確立されていますが、これらを自社で完璧に実施するのは容易ではありません。

いざ対策を進めようとした際に、実際のビジネス現場が直面する3つの課題を解説します。

攻撃の入口が多様すぎて完全な対策が困難

Webサイトにはログインフォームや検索窓など無数の入力カ所が存在し、漏れなく対策を施すのは容易ではありません。さらに外部ツールとの連携によってデータの入力経路は複雑化する一方で、攻撃手法も日々巧妙化しています。

そのため、サービスの提供者と開発者がすべての経路を把握し、万全なセキュリティ状態を維持し続けることは困難です。

委託先の作業がブラックボックス化しやすい

システムの開発や運用を外部ベンダーに委託している場合、適切な対策が確実に実装されているかどうか、発注側からは見えにくいのが実情です。専門的な領域を非エンジニアが評価するのは難しく、結果として委託先任せになり、気づかぬうちにインシデントリスクを抱えるケースは少なくありません。

万が一問題が発生した際の説明責任は委託元である自社が負うことになるため、対策の要件をどのように定義し、管理するかは多くの企業が頭を悩ませています。

高度なセキュリティ人材の慢性的な不足

クロスサイトスクリプティング(XSS)への対策を適切に進めるには、委託先に対してセキュリティ要件を正しく定義し、実装内容を評価できる知識が必要です。しかし、国内ではセキュリティ人材が約11万人不足しているとされており、的確な判断ができる人材を社内に確保できている企業も多くありません。

発注はできても要件の妥当性を判断できないまま開発が進むと、脆弱性が見過ごされるリスクは高まります。また、いざインシデントが発生した際、エスカレーションや初期対応を適切に行える人材が社内にいないことも見過ごせない課題です。

参考:経済産業省|「サイバーセキュリティ人材の育成促進に向けた検討会最終取りまとめ」を公表しました

TDCソフトならセキュリティ診断から対策、監査・監視支援までトータルでサポート

さまざまな課題がある中、自社だけで完璧な対策を実施し、説明責任を果たすのは至難の業です。インシデントによるブランド毀損を防ぎ、安全なサービスを提供するためには、専門家のサポートが欠かせません。

TDCソフトでは、セキュリティの専門家がお客様の課題をヒアリングし、特定製品に依存しない一気通貫のサポートを提供します。第三者視点での脆弱性診断や具体的な対策はもちろん、セキュリティ教育にも対応しています。さらに、継続的な監視体制の構築、リリース後の監査支援までトータルなサポートが可能です。

日々の運用から、インシデント時の対応まで、サービスと組織のセキュリティ強化を全面的にバックアップします。クロスサイトスクリプティング(XSS)をはじめとするリスクに不安を感じている方は、ぜひご相談ください。

【脆弱性対策をプロに相談】TDCソフトのセキュリティ支援の詳細はこちら

多層的な防御でXSSを防止し、安心・安全なサービスの実現へ

クロスサイトスクリプティング(XSS)は、顧客の個人情報漏えいやブランドイメージの失墜といった、重大なビジネスリスクをもたらします。開発現場に任せているから大丈夫と安易に考えるのではなく、サービス提供者としてセキュリティ対策へ主体的に関与する姿勢が強く求められます。

エスケープ処理や入力値の検証といった基本事項の徹底はもちろん、WAFの導入など複数の防壁を組み合わせる多層防御の実装が不可欠です。同時に、万が一の事態の被害を抑える設計も取り入れましょう。

また、自社のみでの対応や人材確保が難しい場合は、専門家の知見を積極的に活用することが解決の近道です。TDCソフトではXSSはもちろん、全般的な対策からインシデント対応までトータルでサポートしますので、セキュリティの不安を解消したい方はお気軽にご相談ください。

お問い合わせ