「クロスサイトスクリプティング(XSS)」は、Webサイトのユーザーにも運営する企業にも大きな被害をもたらしうるサイバー攻撃です。Webサイトの黎明期から存在するにもかかわらず、昨今でも多くのWebサイトが被害を受けています。
自社のWebサイトがクロスサイトスクリプティング攻撃を受けないか、不安を抱えている方も多いのではないでしょうか。
そこで今回は、クロスサイトスクリプティングとは何か、概要について詳しく解説します。本記事で手口や対策を知っておきましょう。
- もくじ
1.クロスサイトスクリプティング(XSS)とは
クロスサイトスクリプティング(XSS)とは、特定のWebサイトに不正なスクリプト(プログラム)を埋め込み、ユーザーに実行させるサイバー攻撃のことです。
ユーザーがWebサイトを訪れるとスクリプトが実行され、個人情報の不正取得といった被害が生じます。
クロスサイトスクリプティングにおいて、悪質なスクリプトが実行されるのはユーザーのブラウザ側です。そのため、直接的に被害を受けるのは主にユーザーであり、Webサイトは「踏み台」となります。
しかし、XSS攻撃を許したWebサイトも間接的な被害は避けられません。Webサイトを運用する企業や個人にとって必ず対策すべきサイバー攻撃です。
2.クロスサイトスクリプティング(XSS)の代表的な手口・攻撃例
クロスサイトスクリプティング(XSS)の代表的な手口を、具体的な攻撃例を交えて見ていきましょう。
まず攻撃者は、踏み台とするWebサイトを決め、悪質なスクリプトを埋め込みます。埋め込み方法は複数ありますが、サイトURLの後ろに情報を付加する「クエリパラメータ」を悪用した手口がイメージしやすいため、この具体例を用いて説明します。
たとえば、次のサイトURLには「あなたのパソコンはウイルスに感染しています。」とポップアップ表示するクエリパラメータが付加されています。「query=」以降の部分が不正なスクリプトです。
https://example.com/search?query=<script>alert('あなたのパソコンはウイルスに感染しています。');</script>
ここでは、ブラウザ上で実行されるプログラミング言語「JavaScript」のalert()関数を用いています。一般的なWebサイトで広く採用されているJavaScriptが、XSS攻撃のスクリプトとして悪用されることが特に多いです。
攻撃者は、このサイトURLを含むリンクを、メールやSMSなどで標的者へ送信します。攻撃者はリンクをクリックさせたいため、標的者がクリックしたくなるような文章を添えるでしょう。有名Webサイトからの連絡を装ったメッセージも少なくありません。
そして、標的者がそのリンクをクリックすると、ブラウザ上で不正なスクリプトが実行される場合があります。たとえば、クエリパラメータが検索機能のキーワードだった場合、
Webページ上に「〇〇の検索結果」といった文言が表示されるでしょう。この部分がユーザーのブラウザ上でスクリプトとして解釈されると、実行されてしまうのです。
上記のスクリプトは悪質なメッセージを表示させるだけですが、ユーザーの個人情報を不正取得するものも多々あります。このように、Webサイトを踏み台にして不正なスクリプトを実行させるのがXSS攻撃の手口です。
偽サイトを用意するケースもある
攻撃者が偽サイト(偽ページ)を用意し、そこに罠を仕掛けるケースもあります。この場合、有名なWebサイトに似せてユーザーを誤認させることが通例です。偽サイトには、踏み台サイトに不正なリクエストを送るリンクなどを仕掛けておきます。ユーザーが偽サイトからリクエストを送ると、先ほどと同様にスクリプトが実行されてしまうのです。
クエリパラメータを用いた手口だと、メールソフトのフィルタリング機能で迷惑メールとして除外されるケースもあります。しかし、偽サイトを用意するケースではクエリパラメータが必須ではなく、こうした防御機構をすり抜けることも少なくありません。
このように、一見問題のないWebサイトがXSS攻撃の窓口となるケースも十分考えられます。URLにクエリパラメータがなくても絶対に安心とはいえないため、注意しましょう。
3.クロスサイトスクリプティング(XSS)の標的にされやすいWebサイトの特徴
クロスサイトスクリプティング(XSS)において、どのようなWebサイトが標的となるのでしょうか。ここでは、XSS攻撃の標的にされやすいWebサイトの特徴を2つ紹介します。
3-1 あまり更新されていない・見た目が古い
あまり更新されていないWebサイト、見た目が古いWebサイトだと標的にされやすくなります。XSSは古くから周知されているサイバー攻撃であり、最新のWebサイトでは対策されているケースが多いためです。
反対に、あまり更新されていないWebサイトや見た目が古いWebサイトの場合、最新のセキュリティ対策が施されていないケースも少なくありません。攻撃者の心理としては、成功の見込みが高いWebサイトを狙ってXSS攻撃を成功させたいと考えるでしょう。
3-2 誰でも手軽に投稿できる
誰でも手軽に投稿できる機能や画面をもつWebサイトも、標的にされやすいといえます。
先ほどは、検索機能にクエリパラメータを悪用した手口を紹介しましたが、投稿機能を悪用したXSS攻撃も少なくありません。投稿欄に不正なスクリプトを入れて投稿し、ほかのユーザーがその投稿をブラウザ上で表示する際に実行させるのです。
ユーザーが手軽に投稿できるWebサイトだと、この手口を試行しやすくなります。特に、未ログイン・匿名でメッセージを投稿できる場合は足が付きにくい分、標的にされやすいでしょう。
4.クロスサイトスクリプティング(XSS)攻撃を受けたWebサイトの被害
クロスサイトスクリプティング(XSS)において、Webサイト自体は基本的に踏み台です。しかしXSS攻撃を受けたWebサイトも、結果として大きな被害を受けることになります。Webサイトに懸念される被害について、事例も交えて見ていきましょう。
4-1 ユーザーからの信頼失墜
XSS攻撃を許したWebサイトの信頼失墜は免れません。XSS攻撃が成功すると、ユーザーの個人情報を攻撃者に取得されるなど、ユーザーに被害が及ぶためです。
不特定多数のユーザーが閲覧するWebページに不正なスクリプトが埋め込まれた場合、数十万単位の被害者が生じることもあります。そうなれば、数十万件を超える情報漏えいがメディアで報じられ、「危険なWebサイト」のレッテルを貼られてしまうでしょう。
あるECサイトの事例では、XSS攻撃により最大で40万件を超える情報漏えいが発生しました。このような被害が広まれば、Webサイトのユーザー離れは加速してしまいます。
4-2 対応にともなう金銭的損失
XSS攻撃を受けたWebサイトの運営企業は、対応にともない多額の金銭的損失を余儀なくされます。ステークホルダーへの謝罪や報告、ユーザーからのクレーム対応など、人件費の増大は避けられません。
また、Webサイトのユーザーから訴訟を起こされる場合、裁判費用もかさみます。被害範囲が拡大すればするほど、こうした金銭的損失も増大するでしょう。
4-3 Webサイトでの迷惑行為
XSS攻撃の内容によっては、Webサイトで迷惑行為を働かれる恐れもあります。ユーザーのブラウザには、Webサイトとのやり取りを管理するために必要な「セッションID」が保存されることが一般的です。
このセッションIDを攻撃者に盗み取られた場合、被害ユーザーになりすましたログインが可能となってしまいます。そうなれば、被害ユーザーの情報を不正に書き換えたり、被害ユーザーの名前で悪質な投稿を繰り返したりされかねません。
なお、このような攻撃を「セッションハイジャック」と呼びます。XSS攻撃はセッションハイジャックに発展するケースもあることを覚えておきましょう。
5.クロスサイトスクリプティング(XSS)にWebサイトを悪用されないための対策
クロスサイトスクリプティング(XSS)は、適切な対策を施すことでリスクを軽減できます。XSS攻撃でWebサイトを悪用されないための対策方法3つを知っておきましょう。
5‐1 エスケープ処理を施す
Webサイトの入出力部分に「エスケープ処理」を施すことが効果的といえます。エスケープ処理とは、データに含まれる特殊な文字を、無害なものに置き換えることです。
たとえば、JavaScriptのコードを記述できる「scriptタグ」に使われる"<"を、無害な「<」に置き換えます。すると、単なる文字列としか解釈されなくなり、不正なスクリプトがブラウザ上で実行されることを防げるのです。
ユーザーからの入力データを受け付ける処理、Webページにデータを出力する処理の双方で行うことで堅牢になります。エスケープ処理専用のライブラリ(再利用なプログラムの部品)を使うことで、手軽にエスケープ処理を実装できるでしょう。
5‐2 ユーザーの入力内容に対してバリデーションを行う
ユーザーの入力内容に対して「バリデーション」を行うことも効果的といえます。バリデーションとは、入力内容が妥当であるかどうかを検証することです。
たとえば、あるWebサイトの投稿機能は特殊な記号を許容しない仕様であるとしましょう。この場合、投稿内容に"<"などの特殊な記号が含まれた場合、エラーメッセージを表示して投稿不可とします。そうすることで、スクリプトの埋め込みを防止可能です。
ただし、仕様として特殊な文字を許容したい場合、過剰なバリデーションによって本来の機能が阻害される懸念があります。仕様に合わせて適切な範囲で取り入れましょう。
5‐3 JavaScriptによるCookieへのアクセスを禁止する
JavaScriptによる「Cookie」へのアクセスを禁止する対策方法もあります。Cookieとは、ユーザーのブラウザに保存されるWebサイトの利用情報のことです。
具体的には、サーバー側のプログラムでCookieに「HttpOnly属性」を設定することで、アクセスが禁止されます。そうすることで、JavaScriptのスクリプトによってユーザーのCookieを盗み見ることを防げるのです。XSS攻撃ではCookieを盗み見るケースが多いため、特別な理由がなければ施しましょう。
6.効果的なクロスサイトスクリプティング(XSS)対策を施すためには
クロスサイトスクリプティング(XSS)の対策を施すためには、どこに脆弱性(セキュリティ上の弱み)があるかを特定する必要があります。しかし、さまざまな機能や画面をもつWebサイトに潜む脆弱性を漏れなく検出することは、簡単ではありません。
効果的なXSS対策を施したい場合は、脆弱性診断サービスの活用がおすすめです。最新の手口や脆弱性を把握したセキュリティのプロが精査すれば、高い精度でソフトウェアの脆弱性を検出できます。また、多くの人的リソースを費やさずに済むでしょう。
なお、当サイトを運営するバルテスでも、Web・モバイル・IoTデバイスなどの幅広いIT資産の脆弱性診断サービスを提供しています。ツールによる効率性の高い診断に、プロによる確実性の高い手動診断を組み合わせたサービスです。
「XSS攻撃を自社だけで防げるか不安」「労力をかけずに高品質な診断結果を得たい」といった場合は、ぜひご利用ください。
また、継続的にクロスサイトスクリプティング等の被害を防ぐためにはWAFの導入も検討しましょう。
WAFとは、ネットワークを介した攻撃を防ぐ、Webアプリケーションに特化したセキュリティ対策です。ファイアウォールやIPSでは防ぎきれなかった不正アクセスを判別し、Webアプリケーションを保護できる強みがあります。
そのため、クロスサイトスクリプティングのようなWebサイトを狙った攻撃にも有効です。
バルテスでもクラウド型のWAFサービスを提供しています。良心価格で使いやすいツールとなっていますので、まずはトライアルからお試しください!
まとめ
クロスサイトスクリプティング(XSS)とは、特定のWebサイトに不正なスクリプトを埋め込み、ユーザーに実行させるサイバー攻撃のことです。多くのユーザーに被害が及びかねないばかりか、Webサイトを運営する企業も間接的に多くの被害を受けます。
XSS攻撃の標的にされやすいWebサイトの特徴や効果的な対策方法を知り、しっかりセキュリティ対策を施しましょう。XSS攻撃への対策を講じる際には、今回の内容をぜひ参考にしてください。
なお、WebサイトはXSS攻撃以外にもさまざまなサイバー攻撃の標的となります。そのため、XSS攻撃への脆弱性に対処するだけでは不十分です。
Webサイトの脆弱性について理解を深め、効果的に対策したい場合は、弊社の脆弱性に関するレポートをご覧ください。