お問い合わせはこちら

クロスサイトスクリプティングって何?サイトのセキュリティを高めるために

公開
更新

クロスサイトスクリプティングとはどういったものかご存知ですか?ここでは、図を使ってわかりやすく説明します。
その上で被害事例や、この攻撃による被害を予防するための対策(入力値制限・サニタイジング・WAF)を徹底解説します。

クロスサイトスクリプティング脆弱性

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

クロスサイトスクリプティング(XSS)とは、攻撃対象のウェブサイトに、脆弱性がある掲示板のようなウェブアプリケーションが掲載されている場合に、悪意のある第三者がそこへ罠を仕掛け、サイト訪問者の個人情報を盗むなどの被害をもたらす攻撃です。また該当するような脆弱性をさしてクロスサイトスクリプティングと呼ぶこともあります。

XSS自体は、代表的なサイバー攻撃の1つとして以前から知られています。ウェブサイトの管理者は、この攻撃に対する対策をしておくことが必要です。

XSSの仕組みを分かりやすく解説

クロスサイトスクリプティング(XSS)の簡単な概要については、理解いただけたでしょうか。この項では、XSSの攻撃が実際にどのように行われるのか、図を使って代表的な例を解説します。具体例がイメージできると、XSSについての理解も進むでしょう。

クロスサイトスクリプティング

  1. 攻撃者がXSSの脆弱性があるA社のサイトを見つける。次にA社のユーザーがよく閲覧するようなサイトの掲示板へ罠を仕掛ける
    (ア) ※スクリプトが埋め込まれたリンクのURLを掲示板へ投稿するなど
    (イ) ※スクリプトとは、文字列の記載のみで実行できるプログラムのこと
  2. ユーザーが、罠が仕掛けられたサイトを訪問
  3. ユーザーがスクリプトが仕込まれたリンクをクリックする。
    (ア) 仕掛けられた罠にはまる。スクリプトが実行される。
  4. ユーザーのパソコンにスクリプトの情報が保存された状態で、仕掛けられたリンクからA社のサイトへ移動する※クロスサイト
  5. スクリプトによって、A社サイトに似せた偽サイトへ移動してしまう。
  6. 偽サイトにてユーザーがA社サイトと思い込んで、個人情報などの入力を行う。
  7. ユーザーは悪意のある第三者により個人情報が奪われたり、マルウェアを感染させられたりする。

いかがでしょうか。XSSのイメージがつかめましたか?
XSSでは、この例で示したように複数のサイトをまたいだ攻撃が実行されます。そしてXSSに対して脆弱性があるサイトに、スクリプトが埋め込まれてしまうところから攻撃が始まっているのです。

XSS攻撃の被害事例

不正アクセス

XSS攻撃による被害は数えきれないほど報告されています。小さな企業のサイトを狙ったものだけでなく、世界中を巻き込んだ大ニュースになったものもあります。

その1つが数年前にTwitter上で展開されたXSS攻撃です。この攻撃では、Twitterのタイムライン上に罠が仕掛けられ、ユーザーは該当のツィートをマウスオーバーしただけで、埋め込まれたスクリプトが実行されてしまう状態でした。そしてこのスクリプトが実行されると、スクリプトが埋め込まれた(罠が仕掛けられた)ツィートを勝手にリツィートしまい、それがフォロワーに広がりました。

そのほか、世界中でニュースになったXSS攻撃の事件としては、有名な動画共有サイト「YouTube」での事例があげられます。この事例では、YouTubeのコメント欄に存在した脆弱性を狙いXSS攻撃が行われてしまいました。コメント欄に罠が仕掛けられ、それを閲覧したユーザーのブラウザでは、コメントが表示されなくなったり、デマのニュースがポップアップされたり、はたまた悪趣味なウェブサイトへリダイレクトされるなどの被害がありました。

この2つは実害のない事件のようにも見えますが、実害が生じかねない攻撃が行われた事例もあります。その1つがオークションサイト「eBay」を標的としたXSS攻撃の事例です。この事例では、eBayの出品リストのなかに攻撃用のスクリプトが埋め込まれ、ユーザーが閲覧すると偽のログインページが表示されました。このときユーザーがID・パスワードを入力するとその情報が攻撃者に盗まれてしまうことになります。結果、攻撃者がそのユーザーのID・パスワードを使ってeBayを不正に利用することができたわけです。

このように、XSS攻撃による事例はさまざまあります。ウェブサイトの管理者は有効な対策をしておかなければなりません。

XSS攻撃被害の影響

XSS攻撃による被害も、その時々でさまざまです。以下、XSS攻撃による主な被害の例を簡単に紹介します。

フィッシング詐欺

事例でも紹介した被害の例です。不正なスクリプトが仕込まれたページを閲覧すると、勝手に正規のサイトを模した偽サイトへ移動してしまい、気づかずIDとパスワードなどを打ち込むとその情報が攻撃者に盗まれてしまうというものです。攻撃者は盗んだID・パスワードを使いユーザーのふりをしてサイトを利用できる状態となります。たとえばショッピングサイトなら、ユーザーのふりをして商品を購入できてしまうわけです。正規のショッピングサイトに偽装しクレジットカードの情報を入力させて、その情報を盗むといった例もあります。

セッションハイジャック

ウェブサイトを閲覧する際には、cookieという個人情報のデータが利用されることがあります。cookieにはユーザーのさまざまな個人情報が保存され、なかにはID・パスワードなどの重要な情報も含まれています。

本来cookieは、対象のサイトで一度ID・パスワードを入力すると、2回目以降は自動的に入力されるなど、ユーザーの利便性をあげるものです。しかしながらXSS攻撃によりスクリプトが埋め込まれたページを閲覧することにより、このcookie情報が盗まれてしまうことがあるため、取り扱いの注意を必要とする情報ともいえます。またセッションハイジャックとは、Cookieを盗む攻撃手法をさします。

ウェブサイトの改ざん

XSS攻撃によって対象のウェブサイトが書き換えられてしまう(改ざんされてしまう)ことがあります。そのサイトのサービス提供の妨げになるような改ざんだけでなく、ユーザーをマルウェアに感染されることを目的とした別のウェブサイトへ誘導するような改ざんの例も多いです。

XSS攻撃されないための対策3つ

クロスサイトスクリプティング

それではXSS攻撃による被害を防ぐために、ウェブサイトの管理者はどのような対策をうつべきでしょうか。もちろん大前提として利用しているウェブサーバーやアプリケーションを最新の状態に保つことは必須です。それにあわせ以下にあげる代表的な3つの対策を行うことで、XSS攻撃を受ける危険性を大幅に軽減することができます。

対策①入力値の制限

XSS攻撃では、サイトへ不正なスクリプトを埋め込もうとします。これを防ぐのが入力値制限の目的です。たとえば郵便番号を入力するフォームでは、数字以外の文字種を入力できないように制限します。

そのほか、ID・パスワードを入力するフォームでは半角英数字●文字までしか入力できないなどの制限をしておきます。このように、入力内容に応じて入力値を制限することが重要です。なお文字種の制限が難しいフォームでは、入力可能な文字数を制限するだけでも効果があります。

なお入力値制限で注意が必要なのは、サーバー側での制限をしなくてはならないということです。入力値の制限は、JavaScriptを使ってユーザーのブラウザ側で行わせる方法もあります。けれどユーザーがJavaScriptを無効にしていれば、入力値の制限が行われないのでXSS攻撃の対策にはなりません。

対策②サニタイジング(エスケープ)

サニタイジング(エスケープ)とは、サイトのフォームなどへスクリプトの構成に必要となる文字が入力された場合に、その文字を別の文字へ書き換えてしまう手法のことです。これによって、仮に攻撃者がスクリプトを埋め込もうとしても無効化することができます。

サニタイジングすべき文字は環境によって異なりますが、代表的な例として以下があります。

対象の文字変換後の文字例
<&lt;
>&gt;
&&amp;
&quot;
#39;

対策③WAF設定

WAF(Web Application Firewall)とは、簡単にいうとウェブアプリケーション専用のファイアーウォールです。ファイアーウォールといえば、ポート番号やIPアドレスなどにより攻撃を防御するネットワークレベルのファイアーウォールの方がよく知られています。ですがネットワークレベルのファイアーウォールでは、掲示板などで入力された内容までチェックはしません。そこでWAFが必要になるということです。

WAFは、Webアプリケーションに対する通信内容をチェックし、疑わしい内容があればブロックすることが可能です。WAFはネットワーク機器の1つとして配置するタイプや、サーバーにインストールして使うソフトウェアタイプなどがあり、環境にあったものを利用します。最近ではWAFが利用できるレンタルサーバーも多くなっています。サーバーの設定などにそれほど詳しくない管理者の方は、そういったサービスを利用するのも良いでしょう。

※カゴヤの共用レンタルサーバーでは、WAFを標準搭載しています。詳細は以下URLをご覧ください。
WAF(Web Application Firewall)についてはこちら

まとめ

現代では、ウェブサイトの運営をするにあたりXSS攻撃への対策は必ずしておく必要があります。脆弱性があるサイトは、攻撃者にとっては都合の良い攻撃対象となってしまいます。仮に攻撃を受け、サイトの利用者に被害が出てしまった場合は、信頼の損失にもつながりかねません。この記事を参考に、XSS攻撃の内容などを理解し、対策の準備に役立てていただければ幸いです。

最大1ヶ月分が無料で利用できる!

「WordPressを導入したい」「色々な用途に使いたい」という人に!

なんでもできるKAGOYAのレンタルサーバー

法人利用率80%、多数の導入実績。
自社国内データセンターで25年以上の実績。障害に強いサーバー構成で、多くの法人様から選ばれています。
サーバー移転に伴う作業も専門スタッフにおまかせ下さい。