2019.04.05

クロスサイトスクリプティングの攻撃とは?原因と対策を解説!

セキュリティが脆弱なサイトやwebアプリケーションを放っておくと、サイバー攻撃の対象になり、取引先や顧客に多大な迷惑をかけることになってしまうかもしれません。たとえば、クロスサイトスクリプティングというwebアプリケーションへのサイバー攻撃の手法も、適切な対策を取ればリスクの回避は可能です。きちんと対策を取って、迷惑をかけずに使える状態にしましょう。この記事では、クロスサイトスクリプティングの原因や被害の影響、対策方法などについて解説します。

リンクをクリップボードにコピーしました

1.クロスサイトスクリプティング攻撃の流れと原因

クロスサイトスクリプティング攻撃という名前すら初めて聞いたというのでは、適切な対策を取ることができません。まずは、クロスサイトスクリプティング攻撃について知るところから始めましょう。ここでは、クロスサイトスクリプティング攻撃の流れと原因について紹介します。

1-1.攻撃の流れ

攻撃者は、最初にクロスサイトスクリプティング(XSS)に対して脆弱な企業を重点的に探します。ただし、ターゲットとなる企業を発見しても、すぐにその企業のサイトに侵入するわけではありません。ターゲットとなる企業が見つかったら、今度はその企業に興味を持ちそうなユーザーが訪れる掲示板サイトを探して、サイト上に罠を仕掛けます。たとえば、スクリプト付リンクを貼るなどの方法です。ターゲット企業に興味を持ったユーザーが、掲示板サイト上で仕掛けられた罠にかかると、攻撃者が掲示板サイト内でスクリプトを実行する仕組みになっています。

ユーザーはスクリプト情報を持ったままターゲット企業のページに移動することになるのですが、実は、ジャンプ先はターゲット企業を装った偽サイトです。だまされたユーザーがうっかり個人情報やクレジットカード情報などを入力してしまうと、PCがマルウェアに感染したり、攻撃者に情報が漏れてしまったりします。

1-2.攻撃の原因

クロスサイトスクリプティングの被害に遭う大元の原因は、攻撃者が自社サイトに不正なスクリプトを挿入させられる余地を与えてしまっていることです。クロスサイトスクリプティングに対する脆弱性を持ったまま可動しているサイトが放置されているため、被害が発生、拡大してしまいます。脆弱性を利用するために、不正スクリプトを含んだ攻撃用URLを作りこむのが攻撃者の常套手段です。スクリプトの文章には、標的サイトとは別のサイトにエンドユーザーが持っている個人情報を送るように設定されています。これがクロスサイトスクリプティングの被害に遭う直接的かつ最大の要因です。

1-3.攻撃被害の影響

クロスサイトスクリプティングは、脆弱な企業サイトを直接攻撃するのではありません。ターゲットになった企業のサイトをよく利用するエンドユーザーが被害に遭ってしまいます。サイト上に書き込むスクリプトの内容によって、被害内容が異なる点も、特徴的です。代表的な被害例としては、cookie情報を悪用して不正にアクセスするセッションハイジャック、HTMLタグを使った入力フォームを偽装した情報収集、偽サイト作成して行うフィッシング詐欺などがあります。いずれも、引っかかった瞬間に被害を受けたことがすぐにはわかるわけではありません。クロスサイトスクリプティングが仕掛けられていたことが発覚するまでに多くの被害が発生してしまいます。

2.クロスサイトスクリプティングの具体的な被害

クロスサイトスクリプティング攻撃によって、過去にどのような被害が生じているのかを見てみましょう。具体的な被害実態を知ることで、企業として取らねばならない対策が浮き彫りになってくるはずです。ここでは、クロスサイトスクリプティング攻撃による被害について紹介します。

2-1.セッションハイジャック

セッションハイジャックはなりすましの一種です。不正に入手したIDやパスワードを悪用する形で発動します。正規のユーザーを装ってネットワークやシステムにログインするなど、ユーザーとサーバーの正規セッションのあいだに割り込む形になるのが特徴です。セッションを奪い取る行為で企業サイトとユーザーの双方に攻撃をしてくるため、セッションハイジャックといわれています。セッションハイジャックの目的は、正規クライアントになりすましてサーバーに侵入することや、正規サーバーになりすましてクライアントの機密情報を盗むことです。

2-2. web改ざん

web改ざんとは、webサイト内のコンテンツやシステムが、攻撃者によって運営者の意図しない状態に変更されることをいいます。攻撃者の思想をサイト上に掲載するものや、いたずら目的でサイトの見た目をまるっきり変えてしまうものなど、改ざんの内容はさまざまです。なかには、webサイトの閲覧者にウィルスを感染させ、被害の拡大を目的とするものもあります。管理者のPCからアカウントIDやパスワードが漏えいしてしまうことによって、PCがwebサイト改ざんの経路になってしまうことも少なくありません。

正規の形でwebサイトにアクセスする権限が利用されてしまうため、直接的にwebサイトの内容を書き換えられてしまいます。微妙な書き換えしか行われない場合は、管理者自身が書き換えられたことに気付きにくいため、長い間放置されてしまいがちです。

2-3.フィッシング

フィッシングは、ウィルスなどのマルウェアと同じくネット犯罪の手口のひとつです。しかし、ターゲットに大きな違いがあります。マルウェアがPCをターゲットとして悪さを仕掛けるのに対して、フィッシングのターゲットは人です。攻撃者にとって、ターゲットがどのようなPCを使用しているかは関係ありません。インターネットに接続できて、フィッシングサイトを正常に表示させられるものなら、どんなOSのどんなPCでもターゲットになり得ます。

最も大事なことは、フィッシングサイトで得た個人情報やクレジットカード情報などを、攻撃者のところまで無事に運べるかどうかです。フィッシングの被害を防ぐための対策としては、送られてきたメールなどを不用意に開かないこと、SSLサーバー証明書を導入しているかを確認するなどが有効と言えます。

3.クロスサイトスクリプティングの被害事例

クロスサイトスプリング攻撃が、さまざまな形で身近なトラブルにつながっていることがわかったのではないでしょうか。ここでは、さらに、クロスサイトスクリプティング攻撃が企業と多くの顧客を巻き込むことにつながった被害事例について紹介します。

3-1. YouTube不正アクセス事件

2010年7月、アメリカの動画共有サイトYouTubeが狙われた事例です。コメントシステムにクロスサイトスクリプティングの脆弱性あり、それが狙われ悪用される結果となりました。クロスサイトスクリプティングの影響により、コメントが正常に表示されなくなったのをはじめ、さまざまな形で被害が出たのが特徴です。ショッキングなデマやゴシップがポップアップされたケースや、悪趣味なwebサイトに誘導されたケースも多数見られました。

この場合、コメントアプリケーションで使われていた出力データを暗号化処理する部分に、cookie情報を不正に取得したり、JavaScriptコードを仕込んだりする余地があったと見られています。2時間ほどで対処されましたが、大勢のユーザーを持つ動画共有サイトのシステムに脆弱性があったことが浮き彫りになり、一時的にでもサイトの信頼度が揺らぐ結果となりました。

3-2. Twitterワーム拡散事件

インターネットユーザーの身近なところでクロスサイトスクリプティングによる被害を受けた事例として、2010年9月21日のTwitterワーム拡散事件があります。Twitterの公式クライアント・アプリケーション「TweetDeck」に何者かが攻撃を仕掛けたという事例です。ユーザーのアカウントが遠隔操作によってハイジャックされ、大量の意味不明のリツイートを一気に投稿するという状況になりました。クロスサイトスクリプティングの影響で、プレーンテキストとして投稿されたJavaScriptコードが、ユーザーのブラウザで実行可能な状態になったのが原因です。

この事件は、PCの乗っ取りや情報の漏えいなどを試みたものではなく、セキュリティの穴を利用したら何ができるかという少年の好奇心によるものでした。しかし、単なるいたずらで済む状態ではなくなり、セキュリティ会社のKaspersky Labの発表によると、最大で50万もの人に影響を及ぼした可能性があるとのことです。

4.クロスサイトスクリプティングの対策方法

クロスサイトスクリプティング攻撃の手口の悪質さと、多大な損失につながる被害の実態がわかったところで、今度はどのような対策が有効なのかを見ていきましょう。ここでは、クロスサイトスクリプティング攻撃に対して企業が取り得る有効な対策方法について紹介します。

4-1.企業のIT管理者の場合

クロスサイトスクリプティング攻撃に対しては、迅速かつ有効な対策を取ることが求められます。対策を任されることになる企業のIT管理者にとって、試行錯誤を繰り返している余裕はありません。最初から確実に効果を上げられる対策を選ぶ必要があります。ここでは、企業のIT管理者として行うことができるクロスサイトスクリプティング対策方法を紹介します。

4-1-1.総合的なセキュリティソフトを導入する

クロスサイトスクリプティングに限らず、サイバー攻撃による情報漏えいを防ぐためには、セキュリティ管理を徹底することが欠かせません。特に企業で利用するPCやスマートフォンなどの情報端末においては、セキュリティ強化が必須です。もちろん「業務に利用している端末は社外に持ち出さない」「資料の共有にはパスワードを設定する」「メールの誤送信を防ぐ」など、既に物理的な対策を行っているという企業は少なくないでしょう。しかし、マルウェアなど インターネット接続時の脅威は、物理的な対策だけでは避けられません。エンドポイントへの総合的なセキュリティ対策ソフトを導入する必要があります。

4-1-2.入力値を制限する

クロスサイトスクリプト対策としては、入力値の制限が有効です。たとえば、郵便番号の入力では、数字以外を入力できないように設定しておけば、スクリプトを入力さaれる危険性はなくなります。文字種の制限ができない場合でも、入力値の長さを制限しておけば、スクリプトの埋め込みを制限できるので、クロスサイトが悪さをすることも防げるはずです。ただし、入力値の制限についてはサーバー側で行う必要があります。ブラウザ側でJavaScriptを使用して入力チェックを行ったのでは、クロスサイトスクリプティング対策ではなくユーザーのチェック用だけでしか機能しなくなってしまうからです。クロスサイトスクリプティング対策として正しく機能するように、必ずサーバー側で実行するようにしましょう。

4-1-3.不正アクセスの抑止・検知につながるシステムを導入する

インターネットの内側から不正サイトへアクセスすることをブロックするためには、不正アクセスの抑止と検知が最重要ポイントになります。手っ取り早くかつ確実に不正アクセスを防止するには、ファイアウォールの設置が有効です。また、不正アクセスを検知するためには、IDS(侵入検知システム)を設置することも効果があります。検知対象をインターネット側からのすべてのアクセスにする場合は、インターネットとファイアウォールとのあいだに、IDSを設置するとよいでしょう。一方、ファイアウォールで防げなかったアクセスを検知の対象とする場合は、ファイアウォールとDMZ(非武装地帯)、または内部ネットワークとのあいだにIDSを設置するのが効果的です。

4-2. web制作管理側の場合

クロスサイトスクリプティングは攻撃対象がwebアプリケーションということもあり、web制作管理側で行わなければならない対策もあります。IT管理者が行う対策とは異なるものなので、web制作管理側で責任を持って行うようにしましょう。ここでは、web制作管理側が取るべきクロスサイトスクリプティング対策の方法について紹介します。

4-2-1. webアプリケーション作成時から対策を意識する

クロスサイトスクリプティングに対する根本的な対策としては、webサーバー側で脆弱性を把握して相応の対処をすることが欠かせません。脆弱性につけ込まれないように、webアプリケーションを作成するときからクロスサイトスクリプティングを意識して、セキュリティ対策など講じておく必要があるでしょう。クロスサイトスクリプティングからの攻撃を想定したうえで、その攻撃に耐えられるwebアプリケーションを構築することが大事です。

4-2-2.webサーバーやアプリケーションを最新の状態に保つ

サイバー攻撃に対する対応というと、webサーバーやOSなどwebアプリケーションのセキュリティ対策をしておけば十分と思いがちです。しかし、ミドルウェアが最新の状態でなければ、そこがセキュリティホールとして狙われます。webサーバーやwebアプリケーションはミドルウェアまで常に最新の状態を保つことが大事です。セキュリティソフトなどを使用して、脆弱性を狙う攻撃を未然に防ぐようにしましょう。

4-2-3. URLフィルタを導入する

URLフィルタを導入することもクロスサイトスクリプティング対策になります。URLフィルタとは、有害または業務に関係のないサイトへのアクセスを遮断するソフトウェアです。もともとは、従業員が就業中に業務に無関係なサイトへアクセスすることを制限する目的で開発された製品でした。業務効率の低下を防止することが目的で開発された製品ですが、情報漏えい対策としての注目が集まっています。

5.クロスサイトスクリプティングの脅威から情報を守る対策を!

過去に起こった複数の大規模不正アクセス事件から、クロスサイトスクリプティングがいかに危険なサイバー攻撃の手段かがわかったことでしょう。しかし、クロスサイトスクリプティングの目的や手段がわかれば、企業側にも対抗する方法はあります。たとえば、webサイトの制作者は、過去の被害実例など情報をしっかりと調査したうえで、被害を受けにくいサイトを作り込むことが大事です。IT管理者は、ほかのサイバー攻撃に備えるのと同様に、対応可能なセキュリティソフトの導入を行いましょう。web制作者はクロスサイトスクリプティングを予測してwebアプリケーションを構築するという対策が取れます。そのうえでwebサーバーやアプリケーションを最新の状態に保つ対策を行えば良いでしょう。