記事カテゴリ
MENU

セキュリティ

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

このエントリーをはてなブックマークに追加

クロスサイトスクリプティング(XSS)とは、脆弱性のある入力フォームや掲示板などに、悪意のある第三者が罠を仕掛け、個人情報などを盗む被害をもたらします。罠が仕掛けられたリンクをクリックすると、別WEBサイトに遷移し、悪意のある画面が表示され、マルウェア感染などを引き起こします。

この記事で紹介している
サービスはこちら

クラウドWAF
セキュリティオペレーションサービス24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

目次

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

「クロスサイトスクリプティング」とは、脆弱性のある入力フォームや掲示板などに、悪意のある第三者がそこへ罠を仕掛け、ユーザーがアクセスしたときに、個人情報を盗むなどの攻撃です。

実際にクロスサイトスクリプティング攻撃により個人情報やアカウント情報が流出したケースが多数確認されており、情報処理推進機構(IPA)の調査によると、2021年第2四半期(4月~6月)に届出された脆弱性の種類別の内訳ではもっとも多い92件を数え、全体の58%を占めています。

参考:情報処理推進機構(IPA)「ソフトウェア等の脆弱性関連情報に関する届出状況[2021年第2四半期(4月~6月)]」

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

「クロスサイトリクエストフォージェリ(CSRF)」攻撃は、クロスサイトスクリプティングと同様にWebアプリケーションに存在する脆弱性を利用した攻撃方法のことです。
ただし、こちらは攻撃の手段として正規ユーザーを装ってサーバーに偽のリクエストを送信し、意図しない行動を取らせる攻撃です。ログイン中のSNSに勝手に投稿される、登録したショッピングサイトで勝手に高額な商品を購入される、などの被害を受ける可能性があります。

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

「SQLインジェクション」攻撃は、クロスサイトスクリプティングと同様にWebアプリケーションの脆弱性を標的とした攻撃です。ただし、こちらは攻撃の手段としてデータベースへの命令文である「SQL」を使用し、脆弱性を突いてアプリケーションが想定しない不正な処理を実行させるものです。
攻撃を受けたデータベースは、結果としてデータの消去や改ざん、情報漏えいなどの被害を受ける可能性があります。

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

攻撃者はメールやSNSなどを通じて罠のしかけられたリンクをクリックするようユーザーを誘導します。ユーザーが誤ってこのリンクをクリックしてしまうと、脆弱性のあるサーバーに転送され、悪意あるスクリプトを含んだWebページがユーザーのPCへと返送されます。
そしてWebページが表示される過程で悪意あるスクリプトがユーザーのPC上で実行されます。
これによりPCに保存されているクッキー情報の漏出、個人情報の漏えい、偽のWebページの表示などの被害を受ける可能性が発生します。

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

クロスサイトスクリプティング(XSS)攻撃の5つの対策

クロスサイトスクリプティングにはどのように対処すればよいのでしょうか。

セキュリティサービスWAFを導入し防御する

最も簡単で効果の高い方法は「WAF(Web Application Firewall)」を導入することです。WAFを導入すれば、従来のファイアウォールでは防ぐことが難しかった、脆弱性を狙った攻撃からWebアプリケーションへの攻撃を防ぐことができます。
また、近年ではクラウド型のサービスや他のセキュリティ対策を併せて提供するサービスも登場しており、常に最新のセキュリティを維持できます。

クラウドWAF
セキュリティオペレーションサービス24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

エスケープ処理、サニタイジングを行う

Webアプリケーション側での対策も有効です。まずは動的Webページに表示するすべての要素に対して、クロスサイトスクリプティングに使用される危険な文字を無害な文字に置き換える処理を実装します。これはエスケープ処理、サニタイジングとも呼ばれる処理で、「<」、「>」はそれぞれ「<」「>」に置き換えます。
例えば動的なWebページを生成する際によく用いられるスクリプト言語「PHP」では、HTMLを構成する文字をエンティティ化する「htmlentities()」という関数が用意されています。

常に最新の環境を保つ

セキュリティの基本ですが、ブラウザ等すべての動作環境を最新に保つことが重要です。
また、動的Webページの生成環境にも注意が必要です。例えばJavaScriptのライブラリjQuery、サイトやブログの作成に使われるWordpressなどでは、過去にクロスサイトスクリプティングに対する脆弱性が指摘されましたが、バージョンアップにより対策されています。こちら常に最新の環境保つよう留意しましょう。

httpやhttpsから始まるURLのみ出力を許可する

動的Webページの生成環境側での対策は他にもあります。例えばユーザーが入力したURLを「<a href="リンク先のURL">」の形式で動的なWebページに出力するケースでは、リンク先のURLに「javascript:」等から始まる文字列を指定された場合などにスクリプトが実行されてしまう可能性があります。
URLを出力する場合にはhttpやhttpsで始まるもののみを許可する処理を組み込むことで、不正なスクリプトの実行を防ぐことができます。

入力値を制限する

さらに入力する文字が英数字などに限定されている場合には、入力された文字列が規定に沿ったものかを判定する「バリデーション処理」を実装することも動的Webページの生成環境側で講じることのできる選択肢のひとつです。
スクリプトによりWebアプリケーションの仕様に沿った文字列かを判定し、規定外の文字が入力された場合、再入力を促すなどの処理を通じて予期しないスクリプトの実行を防ぎます。
その他、Webアプリケーション側の対策としてscript要素は動的に生成しない、外部からのスタイルシートの読み込みを防止する、などの対策も考えられます。

WAFの導入なら低コストで多層防御できる
NTTPCのクラウドWAFがおすすめ

クラウドWAFセキュリティオペレーションサービス

NTTPCの「クラウドWAFセキュリティオペレーションサービス」は、クラウド型WAFに加え、ファイアウォールやIDS/IPSなどの防御機能までを実装したクラウド型のサービスです。クロスサイトスクリプティングはもちろん、SQLインジェクション、OSコマンドインジェクション、パス名パラメータの未チェック/ディレクトリ・トラバーサル、HTTPヘッダインジェクションなど、さまざまな脅威からWebアプリケーションを保護します。
さらに、高度で専門的なセキュリティオペレーション機能(SOC)を標準で提供。
NTTPCのセキュリティ対策パッケージなら、安価で簡単に御社のWebサイトをお守りします。

クラウドWAF
セキュリティオペレーションサービス24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

クロスサイトスクリプティング(XSS)の攻撃種類

クロスサイトスクリプティングにはどのような種類があるのでしょうか。攻撃のタイプ別に3つを紹介します。

Reflected XSS(反射型XSS)/Non-persistent XSS

ユーザーのリクエストに含まれるスクリプトが、そのままユーザーに返送されるタイプです。送信者にスクリプトが戻ってくることから、Reflected-XSS(反射型XSS)と呼ばれます。また、次のPersistent XSSと比較してNon-persistent XSSと呼ばれることもあります。

Stored XSS(格納型/蓄積型XSS)/Persistent XSS(持続型XSS)

あらかじめ悪意ある第三者によりスクリプトがWebアプリケーション内に保存されているタイプです。リクエストにスクリプトが含まれていなくても、アクセス時にはスクリプトが実行されてしまいます。スクリプトが保存されることから、Stored XSS(格納型XSS/蓄積型XSS)、Persistent XSS(持続型XSS)などと呼ばれます。

DOM Based XSS

上記2つはWebアプリケーション側の動作の脆弱性を突いたものでしたが、DOM Based XSSはJavaScriptなどによるWebブラウザ内部での処理の脆弱性を突いたものです。
クライアント側の処理のみで攻撃が成立するため、Webアプリケーションとの通信が行われない場合もあります。

クラウドWAF
セキュリティオペレーションサービス24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

クロスサイトスクリプティング(XSS)で起こる被害内容

次に、実際にどのような被害が想定されるのか、詳しく見てみましょう。

正規のサイト上に偽の情報が表示される

クロスサイトスクリプティングにより、正規のサイトの一部に偽の情報が表示されるという事態が起こり得ます。虚偽情報が表示されれば混乱が起こりますし、フォームが表示されればフィッシング詐欺等の温床ともなりかねません。

クッキーの情報が漏出する

ブラウザが保存するクッキーには、さまざまな情報が含まれます。ログインIDやパスワードが含まれるクッキーが漏出した場合には、なりすましの心配がありますし、さらに個人情報が漏えいする場合も考えられます。

任意のクッキーの保存

任意のクッキーを保存することも可能です。例えば悪意ある第三者があらかじめ作成したあるサイトに対応するクッキーをユーザーのPCに保存した場合、ユーザーがそのサイトにアクセスしてログインすると、その後に不正にサービスを利用される「セッションIDの固定化」といった被害を受ける恐れがあります。

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

多くの企業が実際にクロスサイトスクリプティングの被害を受けていますが、その中には著名なサイトも含まれます。主なものを3つ紹介します。

YouTubeの例

2010年7月、動画共有サイト大手のYouTubeでは、コメント投稿に関連するシステムがクロスサイトスクリプティングを受け、デマニュースのポップアップが表示されたり、無関係なWebサイトにリダイレクトされたりといった被害が発生しました。

Twitterの例

2010年9月には、クロスサイトスクリプティングを通じて大手投稿サイトのTwitter内で「マウスカーソルを載せただけで勝手に任意のテキストが投稿される」というワームが瞬く間に拡散。仕組みが単純だったこともあり、さまざまな亜種が作成され、Twitterが意味不明な投稿で溢れました。

ユニクロの例

2020年9月には、衣料品の製造小売大手であるユニクロのAndroidアプリ「ユニクロアプリ」にクロスサイトスクリプティングの脆弱性が存在することが分かり、脆弱性情報対策データベース(JVN iPedia)にて注意喚起が行われました。迅速な対策が取られたため幸いにして被害は確認されませんでしたが、クロスサイトスクリプティングは現在進行形の問題であることが再認識されました。

まとめ

今回は、クロスサイトスクリプティングについて解説しました。
クロスサイトスクリプティングによる攻撃は現在もっとも猛威をふるっていると言えるでしょう。情報漏えいやマルウェア感染、フィッシング詐欺などの二次被害を防ぐためにも、対策を徹底しましょう。

※ICT Digital Columnに記載された情報は、リリース時点のものです。
商品・サービスの内容、お問い合わせ先などの情報は予告なしに変更されることがありますので、あらかじめご了承ください。

この記事で紹介している
サービスはこちら

クラウドWAF
セキュリティオペレーションサービス24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

関連するおすすめ記事