クロスサイトスクリプティングとは、特定Webサイトに罠を仕掛けて、訪れたユーザーを情弱性のある別のWebサイトに誘導し、個人情報などを詐取する攻撃のことを指しています。
Webサイトを制作・運営している担当者は、クロスサイトスクリプティングについて理解し、対策をしっかり行いましょう。
ここでは、クロスサイトスクリプティングに関する種類や攻撃の流れ、対策方法までを解説します。
目次
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案
クロスサイトスクリプティング(XSS)とは?
クロスサイトスクリプティングとは、Webアプリケーションの脆弱性を利用した攻撃手法のことです。
例えば、インターネット掲示板やブログなどの動的なWebサイトの入力フォームなどに、脆弱性のあるWebサイトに誘導するスクリプト(プログラミング言語で書かれたプログラムを即時に実行できるようにしたもの)を含んだリンクを仕掛けます。設置されたリンクを、ユーザーがクリックしてサイトに誘導されると、仕掛けてあったスクリプトが実行されて、ユーザーが入力フォームに登録した情報が攻撃者に漏えいしたり、マルウェアの感染を引き起こしたりするなどの被害を発生させてしまうものです。
IPA(独立行政法人情報処理推進機構)が公開している、「ソフトウェア等の脆弱性関連情報に関する届出状況:2021年第2四半期(4月~6月)」によると、届出された脆弱性のうち、全体の約58%がクロスサイトスプリングを占めている結果となりました。それだけ多くの被害が発生している攻撃手法なため、しっかりとクロスサイトスクリプティングを理解し対策することが大切です。クロスサイトスクリプティングを理解するためにも、より具体的な種類や攻撃手法、対策方法について確認していきましょう。
クロスサイトスクリプティング(XSS)の種類と攻撃の流れ
クロスサイトスクリプティングには、主に「Reflected XSS(反射型)」「Stored/Persistent XSS(格納型/蓄積型/持続型)」「DOM Based」といった3つの種類があります。
●Reflected XSS(反射型)
Reflected XSSの代表的な攻撃パターンは、偽メールや偽サイトに不正なスクリプトを含んだリンクを用意し、ユーザーに脆弱性のあるWebサイトにリクエストさせます。ユーザーのブラウザで不正なスクリプトを実行させて、情報の詐取やマルウェア感染などを行います。「Reflected XSS」とは、リクエストしたものにスクリプトが変えってくることから「反射型XSS」と呼ばれているのです。
●Stored/Persistent XSS(格納型/蓄積型/持続型)
Stored/Persistent XSSの代表的な攻撃パターンは、Webアプリケーションに直接スクリプトを格納して、ユーザーがページを閲覧するたびに、不正なスクリプトが実行されるものです。その結果、ユーザーの情報が詐取されたり、マルウェア感染が発生したりします。罠を仕掛けたWebサイトを準備する必要がなく、さらに攻撃の成立が効率的である点が、Reflected XSSとの違いです。
●DOM Based XSS
DOMは「Document Object Model」の略です。主に、Webブラウザで動作するJavaScript上のコードの脆弱性を悪用して、Webブラウザ上で不正なスクリプトを実行させてユーザーの情報の詐取やマルウェア感染を引き起こします。DOM Based XSSの特徴は、クライアント側の処理のみで攻撃が成立してしまうことです。
クロスサイトスクリプティング(XSS)の被害の例
クロスサイトスクリプティングの主な被害としては、以下のようなものがあります。
-
セッションハイジャック
-
個人情報の流出
-
正規サイトに偽の情報も表示する
●セッションハイジャック
セクションハイジャックとは、Webサイトで使用しているIDやパスワード、Cookie(PCやスマホ内のブラウザに保存される情報)を、なんらかの形で入手して本人に成り代わって乗っ取ってしまうサーバー攻撃のことです。
セクションハイジャックをされてしまった場合、攻撃者がサーバー内に侵入して、正規ユーザーになりすまして機密情報を搾取したり、オンラインバンクなどから不正出金をしたりするなどが挙げられます。そのほかにも、登録情報の漏えい、改ざん、クレジットカードを不正に利用するなど、大きな被害につながりかねません。
●個人情報の流出
クロスサイトスクリプティングの攻撃を受けることで、個人情報が流出するケースも多くみられます。攻撃により入手された、氏名、住所、電話番号、クレジット情報などは、ダークウェブサイト(違法性の高い情報・物品の取引が多く見受けられるWebサイト)などで売買されて、情報リストに載ってしまうことにつながります。その情報リストを基に、別の攻撃者がリスト攻撃の標的として定めて、個人情報をゆすりのネタに高額な金銭要求を行うといった被害が発生する可能性もあるのです。
●正規サイトに偽の情報も表示する
クロスサイトスクリプティングでは、Webサイトの脆弱性を基にして、正規サイトの一部に偽の情報を表示させることが可能です。この場合、Webサイト自体は正規のものなので、ユーザーも管理者も気づくことなく攻撃を受けてしまい個人情報を抜き取られてしまうといった被害も起こっています。偽の情報が表示され続ければ、混乱も被害も広がってしまい、フィッシング詐欺の温床になりかねません。
実際にあった被害の事例
クロスサイトスクリプティングの攻撃の事例として以下が挙げられます。
-
YouTubeの事例
-
Twitterの公式アプリケーションの事例
-
出版社のオフィシャルサイトの事例
-
ECサイト構築システムの事例
●YouTubeの事例
2010年に、大規模動画共有サイトであるYouTubeを狙ったクロスサイトスクリプティングの攻撃が発生しました。
YouTubeのコメントシステムに存在するクロスサイトスクリプティングの脆弱性が悪用されたことにより、コメントが表示できなくなる影響、デマ情報がポップアップで表示される、悪質なWebサイトにリダイレクト(自動的に別の新しいページに転送)されるなどの被害が広がりました。Googleは、この攻撃発生から2時間程で対処を行いましたが、被害の影響は大きかったようです。
●Twitterの公式アプリケーションの事例
2010年に、Twitterの公式クライアント・アプリケーションの「Tweet Deck」の脆弱性を悪用した、サイトスクリプティングの攻撃が発生しました。 Tweet Deckは複数のタイムラインを、ユーザーが見やすいインターフェースにしてTwitterをより使いやすくする機能が用意されたアプリケーションです。このTweet Deckに攻撃をしかけ、ユーザーのアカウントが遠隔操作でハイジャックされてしまいました。それにより、大量の意味不明なリツイートを投稿するという被害が広がりました。このクロスサイトスクリプティングの攻撃により、最大で50万人に影響がでたと発表されています。
●出版社のオフィシャルサイトの事例
2014年に、大手出版社のKADOKAWAのオフィシャルサイトで、クロスサイトスクリプティングの攻撃が発生しました。
大手企業のオフィシャルサイトということで高いセキュリティレベルの対策をとっていました。しかし、運営上の理由からセキュリティレベルの低いサイトもあり、そこからセキュリティを突破されて、クロスサイトスクリプティングの攻撃によりトップページが改ざんされるという被害が発生しました。
改ざんされたトップページには、トロイの木馬(マルウェアと呼ばれるコンピューターの安全上、脅威となるソフトウェアのこと)が仕込まれており、閲覧者が感染するとCookie情報、個人情報が漏えいする危険があるものでしたが、幸いなことに大きな被害には至らなかったと発表しています。
●大手ECサイト構築システムの事例
2021年に、大手ECサイト構築システムの「EC-CUBE」における製品で、クロスサイトスクリプティングの攻撃が発生しました。
該当する製品で作成されたECサイトにおいて、攻撃者が特定の入力欄にスクリプトを入力することで、任意のスクリプトが実行され、不正アクセスや個人情報の窃取が行われるというものでした。クロスサイトスクリプティングの攻撃により、クレジットカード情報が流出したことが発表されています。
EC-CUBEの件については既に緊急対応のパッチ(プログラムの一部を更新してバグ修正や機能変更を行うためのデータ)を公開して対応済みとなりますが、こうした被害は後を絶たないのが現状です。
クロスサイトスクリプティング(XSS)の対策
クロスサイトスクリプティング対策の方法としては、「サニタイジング」「入力値の制限」「WAFの防御」の3つが挙げられます。
-
サニタイジング
-
入力値の制限
-
WAFの防御
●「サニタイジング」で有害な文字・文字列を検知し無効化する
サニタイジングとは、HTMLタグとして意味のある文字を、別の文字列に置き換える処理(エスケープ処理)のことです。
例えば、HTMLタグでは「<」や「>」の文字列が、タグの一部としてブラウザに認識されます。これを、サニタイジング処理を行うことで、特別な意味を持たない単なる文字列に置き換えられます。
「<」や「>」は、HTMLタグやプログラミングで良く使われる記号です。これらの記号をサニタイジング処理することで、Webブラウザに表示されるだけの文字列に置き換えられるようになります。そのため、攻撃者が「<」や「>」などのプログラムと認識される文字を書き換えてスクリプトを埋め込もうとしても、サニタイジング処理で単なる文字列となり攻撃を無効化できるようになるのです。
また、適切にサニタイジングを行うことで、有害な文字や文字列を検知することもできるようになり、よりクロスサイトスクリプティングの攻撃を回避できるようになります。
●入力値に制限をつける
入力フォーマットの入力値を制限することもクロスサイトスクリプティングの対策になります。
例えば、電話番号や郵便番号等の入力欄では、数字以外の入力を許可しないことでスクリプトを挿入できないようにできます。また、入力値の入力文字数の長さを制限することで、クロスサイトスクリプティングの攻撃となる有害なスクリプトを挿入できないように制御することも可能です。
入力フォーマットや問い合わせフォームなど、入力値を制限して攻撃を回避することをおすすめします。
●「WAFの防御」で対策する
WAFとは、「Web Application Firewall」の略称で、Webアプリケーション専用のファイアウォールです。WAFを設定することで、Webアプリケーションの通信内容をチェックして、疑わしい内容が検出された際にはブロックされます。WAFは、Webアプリケーションに直接管理や改修することができない場合に、脆弱性を突いた攻撃から防御するためのセキュリティ対策のひとつです。
セキュリティ対策に強いシステム開発会社を探そう
クロスサイトスクリプティングは、Webサイトを閲覧するだけでユーザーの個人情報が盗まれたり、コンピューター上のファイルが壊されたりと様々な被害を引きおこします。このような被害から情報を守るためにも、システム開発やWebサイト開発の初期段階からセキュリティ対策について考え、対応することが大切です。
ITの技術進歩によって、セキュリティはシステム開発及びすべてのシーンで欠かせない要素となっています。
外部から攻撃を受けることで、多大な被害を及ぼす可能性があるため、システム開発の技術面だけではなくセキュリティ対策の面でも信頼できる会社を探して相談しましょう。
セキュリティ対策に強い開発会社を探すなら、システム開発に特化したマッチングサービス「発注ナビ」のご利用をぜひご検討ください。要望に応じて最適な対応会社をご紹介します。専門スタッフが詳細をしっかり伺うことで、IT知識がない方でも安心。スタッフに相談しながら高いスキルを持った法人や企業に依頼することができ、ローリスクで優れた成果物を手に入れられます。もちろん、比較見積りも可能です。
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案