クロスサイトスクリプティング(XSS)
クロスサイトスクリプティング(XSS)とはWebサイトの脆弱性を利用した攻撃で、ユーザーの個人情報を不正に取得したりマルウェアに感染させたりすることが目的の攻撃です。
クロスサイトスクリプティングによる脅威
クロスサイトスクリプティングによって次のような脅威が発生します。
Webサイトの改ざん
クロスサイトスクリプティングによる攻撃を受けると、対象のWebサイトが改ざんされ偽の情報が表示されたりします。また、マルウェアなどが仕込まれた別サイトへの誘導を目的とした改ざんが行われることもあります。
セッションハイジャック
ブラウザが保存するcookieには、さまざまな情報が含まれおり、なかにはWebサイトへログインするためのIDやパスワードなどが含まれていることもあります。セッションハイジャックとは、これらのcookie情報を盗み出す攻撃手法のことで、クロスサイトスクリプティングよって、これらの情報が盗まれることもあります。
フィッシングサイトへの誘導
クロスサイトスクリプティングにより正規のサイトを模した偽のサイトへと誘導され、入力したIDやパスワードなどが盗み出されることがあります。
クロスサイトスクリプティングの仕組み
クロスサイトスクリプティングでは次のような流れで攻撃が仕掛けられます。
- 攻撃者は脆弱性のあるWebサイトXを見つける。
- 攻撃者は掲示板サイトなどにスクリプトが埋め込まれたリンクのURLを投稿する。
- ユーザーがスクリプトの埋め込まれたリンクをクリックすると、脆弱性のあるWebサイトXに誘導され、攻撃者によって仕掛けられたスクリプトが実行される。
- ユーザーがWebサイトXに個人情報を入力すると、攻撃者に情報を奪われたりする。場合によってはマルウェアに感染することもある。

クロスサイトスクリプティングによる被害事例
クロスサイトスクリプティングはWebサイトへの攻撃手法の代表的な存在で、毎年多くの被害が報告されています。過去にクロスサイトスクリプティングによって攻撃された事例をいくつか紹介します。
エムゲームジャパンへの攻撃事例(2009年)
2009年4月頃、エムゲームジャパンが運営するオンラインゲームへの不正ログインが相次いで報告されました。同社が調査を実施したろころ、公式サイトの一部に脆弱性が含まれていたことが判明。cookie情報が盗まれユーザーのアカウントが乗っ取られていました。
YouTubeへの攻撃事例(2010年)
2010年7月、動画共有サイトYouTubeを狙った攻撃が発生しました。この攻撃により、「ジャスティン・ビーバーが交通事故で死亡」などといったデマ情報がポップアップで表示されたり、コメントが閲覧できなくなるなどの被害が発生しました。このときの攻撃の原因は、コメント欄の暗号化処理に脆弱性があり、cookie情報が盗まれたためでした。
Twitterへの攻撃事例(2014年)
2014年6月、Twitterの公式クライアント・アプリケーションの1つである「TweetDeck」がクロスサイトスクリプティングによる攻撃を受けました。この攻撃により、ユーザーがTweetDeckにログインするとランダムなメッセージがポップアップで表示されました。また、タイムラインに表示された特定の投稿がで自動的にリツイートがされる現象が発生。世界中で多くのユーザーが被害に遭いました。
クロスサイトスクリプティング対策
クロスサイトスクリプティングを防ぐためには次のような対策方法があります。
HTMLのエスケープ処理
一般的な対策として、HTMLのエスケープ処理があります。これは、入力フォームなどにスクリプトの構成文字の一部である「<」「>」「&」などが入力されたときに、HTMLエンティティと呼ばれる文字の代替コードに置換する処理のことです。このように、エスケープ処理をしてスクリプトを無害化することをサニタイジングと呼ぶこともあります。
WAFの導入
WAF(Web Application Firewall)とは、Webアプリケーションの脆弱性を悪用した攻撃からWebサイトを保護するセキュリティ対策のことで、WAFを導入することでクロスサイトスクリプティングなど、従来のファイアウォールでは防ぐことの難しかった攻撃を防御することができます。WAFにはネットワーク上に専用の機器を設置するゲートウェイ型と、サーバーにインストールするホスト型があります。
最新の環境を保つ
クロスサイトスクリプティングに限らず、セキュリティ対策の基本となるのは、OSやWebブラウザなどにアップデートがあった場合は常に最新の状態を保つことです。また、WordPressなどのCMSを利用している場合は、これらを最新のバージョンにアップデートすることも大切です。過去には、WordPressなどでクロスサイトスクリプティングに対する脆弱性が発見されたこともありますが、アップデートにより脆弱性は改善されています。
「HTMLのエスケープ処理」や「WAFの導入」はWebサイトの制作者側しかできない対策ですが、最後の「最新の環境を保つ」は、Webサイトを利用するユーザー側も容易に行える対策です。被害を最小限に抑えるために、OSやブラウザなどは常に最新の状態を保つようにしてください。