クロスサイトスクリプティング(XSS)とは何か?対策7選なども紹介

クロスサイトスクリプティング(XSS)とは何か?対策7選なども紹介のアイキャッチイメージ

目次

クロスサイトスクリプティング(XSS)について


クロスサイトスクリプティングとは「XSS」とも表記されるWebサイトの脆弱性のひとつです。個人情報が盗まれたり、ファイルが破壊されたりする危険性があります。

クロスサイトスクリプティングという脆弱性は、Webサイト外部から実行可能なスクリプトの侵入を許してしまう点にあります。

悪意のあるスクリプトが送り込まれたときに、防御していないサイトでは情報漏洩やファイル破壊を実行されてしまいます。

クロスサイトスクリプティングのメカニズム3選


クロスサイトスクリプティング(XSS)とは、Webサーバーのエコーバックを利用した攻撃です。また第二攻撃(Second-order XSS)も攻撃のひとつとして挙げられます。

どちらの場合も、スクリプト注入されるWebサーバーにて起きており、これはHTML作成時にスクリプト除染が充分でないために起こるとされます。

XSSでは、「攻撃者」「標的サイト」「被害者」の3者が関係しており、以下のようなメカニズムで攻撃される可能性があるとされます。

メカニズム1:攻撃ページ

攻撃者はスクリプト注入攻撃のための攻撃ページを用意し、被害者を巧みに騙して閲覧させます。またHTMLメールで送ってくる場合もあります。

メカニズム2:標的とするプログラムを呼び出す

攻撃ページは被害者が日常的に利用しているWebサイトの特定プログラムを呼び出します。

この際に、悪意があるJavaScriptコードがその特定プログラム(標的となるプログラム)に与えられます。

標的とされるプログラムには、与えられた文字列をそのままHTMLページ内にエコーバックしてしまうものが狙われます。

メカニズム3:悪意あるスクリプトの実行

攻撃ページからのHTTPリクエストに呼応して、攻撃スクリプトが被害者のブラウザで実行されます。

そして不正なページに誘導し意図しない商品を購入させる、ニセのログインフォームに入力させてIDとパスワードを盗むなどさまざまな被害が起こります。

クロスサイトスクリプティングで受ける影響3選


クロスサイトスクリプティングにより、対策されていないWebサイトを使って、個人情報の取得やプログラムの実行などの悪意ある行動ができてしまいます。

ここでは、クロスサイトスクリプティングによってもたらされる影響について、具体例を交えて紹介します。クロスサイトスクリプティングの脆弱性がみつかったときに問題視される意味や、自分の生活への影響なども考えながら参照してみてください。

影響:Webページの改ざんが可能

クロスサイトスクリプティング攻撃に対する防御策が講じられていないWebサイトでは、Webサイトそのものを改ざんされてしまう危険性があります。

Webサイトを構成しているhtmlやcssなどのコードを書き換え、不正なプログラムを組み込んでしまうこともできます。

内部コードが書き換えられるだけでは、ユーザーに気付かれず、不正なプログラムによってIDやパスワードが盗まれる事態にもつながりかねません。

影響:Cookie情報が抜き出されてしまう

クロスサイトスクリプティングの脆弱性をついた被害の中でも多いのが、Cookie情報の盗難です。

本来、Cookieに保存されている情報は、盗まれても問題にならない類の情報に限られるべきですが、利用しているサイトによってはCookieにIDやパスワードを保存させるサイトもあります。

ユーザーは自分の情報が危険な状態にあることに気付かないまま、IDとパスワードを晒しているような状態になりかねません。

影響:ユーザーに気づかれずに通信ができる

クロスサイトスクリプティングでは、ajaxという技術を使って、脆弱性のあるサイトの内部や、脆弱性のあるサイトを経由して、外部サイトへデータを受け渡せます。

ajaxは非同期の通信を可能とする技術です。クロスサイトスクリプティングの脆弱性を利用した攻撃では、Webサイトの当事者が気付かぬうちに外部サイトに通信を行うので、通信相手からは攻撃された脆弱性のあるWebサイトからの通信だと認識されます。

クロスサイトスクリプティングで受けた被害例


クロスサイトスクリプティングの脆弱性の発見や、脆弱性をついた攻撃はニュースになることも増えており、耳にしたことがあるという人も多いでしょう。/mark>

ここでは、近年ニュースになったクロスサイトスクリプティングの脆弱性に関する事例の中でも、影響範囲が世界規模となった具体例を紹介します。自分の利用環境と照らし合わせながら、クロスサイトスクリプティング攻撃の危険性について考えてみましょう。

Twitterワーム拡散事件

Twitterもクロスサイトスクリプティングの脆弱性を攻撃され、脆弱性を悪用したワームが拡散されました。すでにこの脆弱性は修正されていますが、ワームツイートにマウスを合わせるだけでリツイートされてしまうという現象が起きていました。

脆弱性はTwitter.comのみだったため、Twetter.com以外のTwitterクライアントに問題はありませんでした。JavaScriptの無効化も防御として有効でした。

YouTube不正アクセス事件

YouTubeも攻撃を受けたことがあります。YouTubeを介してデマが流され、コメントも表示されなくなりました。

YouTubeが受けた攻撃は、コメントシステムの脆弱性を悪用したものでした。クロスサイトスクリプティングの脆弱性が発見され、攻撃者はクロスサイトスクリプティングを利用してcookieを盗み、不正なコードを仕込んでユーザーのWebブラウザ上で動作させました。

クロスサイトスクリプティングの対策7選


クロスサイトスクリプティングの脆弱性は、簡単に攻撃でき、甚大な影響を与えることも可能です。Webサイトの管理者は、攻撃に備えて対策しておくことが必須です。

クロスサイトスクリプティング対策とは、どのようなことをしておけば良いのでしょう。ここでは、クロスサイトスクリプティングに対する対策を7つ紹介します。Webサイト管理者は、管理するWebサイトが対応できているか確認してください。

クロスサイトスクリプティングの対策1:アプリケーションを最新に保つ

クロスサイトスクリプティングに限らず、セキュリティを保つためにはWebサイトの構築で利用しているアプリケーションを常に最新に保つことが大切です。

OSを含めアプリケーションの開発元では、システムの脆弱性が発覚した場合、脆弱性を改修し、対策アプリケーションを公開します。

アプリケーションの最新版は、システムに自動で適用されることはないので、運用担当者が最新版の情報を入手し、適宜対応する必要があります。脆弱性のあるアプリケーションを使い続けることは、攻撃を受けるリスクが高いので絶対に避けなければなりません。

クロスサイトスクリプティングの対策2:入力値を制限してみる

クロスサイトスクリプティングは、Webサイトの入力エリアを利用して実行されることも多いので、不正な文字列が入力されないよう、入力値を制限したりチェックしたりすることは大変有効です。

入力値のチェックとしては、文字の種別や文字数の制限を行いましょう。チェックはJavaScriptを使ってクライアント側で行う方法と、サーバー側プログラムで行う方法があります。

クライアント側でJavaScriptの無効設定がされているとチェックが行われないので、サーバー側のチェックは必ず実施した方が安全性が高くなります。

クロスサイトスクリプティングの対策3:サニタイジングを実行する

プログラム実行に使用する文字列を使って、Webサイトの入力項目から実行されることを防ぐため、プログラム実行に関する特殊な文字を別の文字へ置き換える「サニタイジング」が必要です。

サニタイジングとはエスケープとも呼ばれ、「<」は「<」、「>」は「>」など、決められたエスケープ文字に置き換えを行います。エスケープ文字は、使用する環境によって異なります。

クロスサイトスクリプティングの対策4:不正メールをブロックする

メールに添付されたURLやファイルから不正サイトに誘導されたり、パソコンに不正なプログラムを常駐させられたりする被害が多発しています。

不正なURLやファイルが添付されたメールは受け取らないようにブロックしておくことも、クロスサイトスクリプティングの対策になります。

メールのブロックは、メールクライアントでも設定できますが、一般的にはメールサーバー側で対応します。

クロスサイトスクリプティングの対策5:ネットワークからの不正サイトをブロックする

Webサイトのクロスサイトスクリプティング対策として、ネットワーク内部から不正サイトへの通信や、不正サイトからネットワーク内部へのアクセスをブロックすることも可能です。

不正サイトが明らかな場合は、あらかじめブロック設定しておくべきでしょう。セキュリティ上の防御策として、自社のセキュリティポリシーから外れるサイトを不正サイトとみなし、アクセス制御を設定しておくことも有効です。

クロスサイトスクリプティングの対策6:セキュリティソフトを導入する

クロスサイトスクリプティングだけでなく、想定される脆弱性を網羅し、防御してくれるセキュリティソフトは、サーバー側にもクライアント側にも導入不可欠です。

セキュリティソフトを導入していても、未知の脆弱性が発覚した場合は危険にさらされることになりますが、既知の攻撃からは確実に守ってくれます。サーバーやパソコンだけでなく、クライアントとして使うタブレットやスマホにも導入が必要です。

クロスサイトスクリプティングの対策7:WAFを導入し防御する

WAFはWebアプリケーションファイヤーウォールと呼ばれる仕組みで、Webアプリケーションとアクセス元との通信内容を検査して攻撃を検知できます。

WAFでは過去の不正な通信や攻撃パターンに合致する情報を検知し、通信を遮断したり、アクセス情報を記録したり、警告(alert)を発したりできます。

WAFを導入しておくと、不正なアクセスが発生したときに通信を遮断してくれるので、被害を最小限に抑えられます。

クロスサイトスクリプティングの種類3選


クロスサイトスクリプティングには複数の種類がありますが、主な種類は次にあげる3つといえます。

クロスサイトスクリプティング対策としては、いずれの種類も網羅する形で語られますが、対策ツールによって得意とするクロスサイトスクリプティングの種類が異なることもあるので、各種類の動作の違いを知識として覚えておきましょう。

ここでは、持続型XSSと反射型XSS、DOM Based XSSを紹介します。

クロスサイトスクリプティングの種類:持続型XSS

持続型XSSは格納型XSSともStoredXSS、蓄積型XSSとも呼ばれます。脆弱性のあるWebサイトに攻撃コードが埋め込まれ、このサイトを利用したユーザーに危害が及びます。

持続型XSSは蓄積型とも呼ばれるように、Webアプリケーションが利用するデータベースに不正な動作をするスクリプトが書き込まれます。ユーザーはWebアプリケーションを通常通り使うだけで攻撃コードが実行されてしまいます。

クロスサイトスクリプティングの種類:反射型XSS

反射型XSSは、non-persistent型、reflected型とも呼ばれます。反射型XSSは、ユーザーが不正なWebサイトやメールを使うことで、脆弱性のあるWebサイトに対してユーザーのクライアントから攻撃をしかけてしまう仕組みです。

JavaScriptやphpで書かれたプログラムをメール添付のURLやWebサイトに貼られたURLから実行させて、クライアント経由で情報を盗み出します。

クロスサイトスクリプティングの種類:DOM Based XSS

DOM Based XSSでは、スクリプトにより動的にWebページを生成する際に、管理者が意図していないスクリプトを含むページが生成されます。

クライアント上で実行されるスクリプトは正規のスクリプトですが、そこで表示されたWebページの操作の結果として不正なスクリプトが実行されます。このクロスサイトスクリプティングは、サーバー通信が発生しないプログラムでも脆弱性が作りこまれることがあります。

どのクロスサイトスクリプティング対策にも限界があることを知っておく


クロスサイトスクリプティングの対策にも限界があることを理解したうえで、既知の問題については完全に防げるように対策しておくことが大切です。

Webアプリケーション導入の際は、テストサイトを使って、既知の問題を一通りテストしておくべきでしょう。知識の積み上げとして、わかりやすく図解されたセキュリティ対策書籍も利用してみましょう。セキュリティソフトやWAFの導入も必須と考えておいた方がよいでしょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。

合わせて読みたい

エンジニアなら判断できて当たり前!シャドーITと「BYOD」の違いとは... 会社側が把握していないIT機器を使い業務を行うことを「シャドーIT」といいます。 それに関連した言葉として「BYOD」があります。 この2つは同じように語られることも多いですが、明確な違いがあります。 本記事ではシャドーITとBYODの違いについてご紹介します。 BYODの概要 BYOD(...
FortiGateとは?特徴やメリット・導入ポイントから役立つ分野を徹底解説... FortiGateとは FortiGate(フォーティゲート)は米Fortinet社の開発した統合脅威管理(UTM)アプライアンスで、同分野では世界一のシェアを有します。 複数の強固なセキュリティ機能による多層防御を提供する統合型セキュリティアプライアンスで、ネットワークセキュリティを1...
Windows 10のセキュリティソフトとは?性能や導入の注意点4つを解説!... Windows10にはセキュリティ対策が必要? Windows10を使用している場合は、セキュリティ対策は重視したいでしょう。Windows10でインターネットに接続した場合、さまざまなサイバー攻撃に遭うリスクがあります。そのため、事前のセキュリティ対策は必須だと言えるでしょう。 この記...
Palo Alto Networksとは?製品ブランドや社歴・ビジネス状況を知ろう!... Palo Alto Networksとは? Palo Alto Networks(パロアルトネットワークス)は、2005年に設立されたネットワークセキュリティベンダーで、アプリケーションの直接的な識別と制御を可能にした次世代型Firewallの先駆者として、市場で高い評価を得ています。 Pa...
ネットワークセキュリティの新たな概念「ゼロトラストネットワーク」とは... ほとんどの企業では、社外からのトラフィックに関しては検査やログ取得を行っています。一方で、社内のトラフィックに関しては信用しているため、特にセキュリティ対策を講じていないことが多いです。 しかし、それでは充分な安全性を確保できないことが増えてきました。 そのような中で注目されているゼロトラストネ...