サイバーセキュリティランド » サイバーセキュリティとは【基礎知識と用語集】 » か行 » クロスサイトスクリプティング(XSS)
更新日 

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

クロスサイトスクリプティング(XSS)は近年見かける機会が増えているサイバー攻撃のひとつです。サイト閲覧時に気づかないうちにクロスサイトスクリプティング(XSS)に遭遇している可能性もあります。ここではクロスサイトスクリプティング(XSS)について、特徴やほかの攻撃との違いなどを紹介しています。

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

クロスサイトスクリプティング(XSS)とは、脆弱性の深刻度が高い入力フォームや掲示板に悪意のある第三者が罠を仕掛けることです。

ページを閲覧したユーザーに第三者が埋め込んだスクリプトを実行させることで、罠を仕掛けたサイトとは異なるサイトを攻撃することもできることから「クロスサイト」と名付けられ、多くのWebサイトにて注意が必要なものです。

クロスサイトリクエストフォージェリ(CSRF)との違い

Webページにアクセスすることで不正なスクリプトが実行されるXSS(クロスサイトスクリプティング)に対し、CSRF(クロスサイトリクエストフォージェリ)は利用者自身が意図していない処理が行われてしまうものです。ユーザーは無意識でありながら、悪意を持つ攻撃者が意図した操作を実行するもので、具体的にはログイン機能を設けているWebサイトで正規ユーザーを装う行為が挙げられます。ログイン状態を維持するユーザーが多いECサイトで多く見られるのが特徴的です。

SQLインジェクション(SQI)との違い

SQLインジェクションもWebサイトやアプリケーションの脆弱性を利用し、悪意のある人間が攻撃を行うものです。SQLはデータベース言語のひとつで、そのSQLに不正なプログラム・コマンドを含ませてデータベースを不正に操作することを目的としています。結果、顧客情報・個人情報の流出や改ざん・消去など、既存のデータに被害が及びます。脆弱性をついた攻撃を行う点はXSSと同じですが、データベース言語を使用している点がSQLの特徴です。

XSSを受けるとどうなる?

本物のサイト上に偽のページが表示される

XSSを受けると本物のサイト上に偽のページが表示され、偽ページの内容次第では更に大きな被害を受けるおそれもあります。例えば偽のページ上で個人情報を入力するページが表示されてしまい気付かずに個人情報を入力してしまった場合には、個人情報の漏洩を招くことになります。「偽のページが表示される」だけであれば、サイトがリニューアルしたのか?と混乱するだけですが、そのようなトラブルだけでは済まないことが多く更なる被害が想定される点がXSSの厄介な点です。

Cookie情報が盗まれる

PCに保存されているcookie情報を盗まれる可能性があります。cookie情報は個人情報そのものです。訪れるサイトの情報だけではなくログイン情報も記載されていることから、サイトに「本人」としてログインされた上に個人情報を盗まれたり、あるいは本人に成りすまして何らかの悪意ある行動に及ぶことで自分自身の信用を傷つけられたり、場合によっては知らない間に犯罪行為に巻き込まれてしまうこともあります。

Cookie情報が改ざんされる

cookie情報を改ざんされてしまう可能性もあります。改ざんされることでそれまでのように利用できなくなるだけではなく、本来のデータを利用されてしまったり、知らない間に本来の自分ではないデータを使用していたりといった二次被害のほうが影響が大きいでしょう。どのように改ざんされるのかはXSSを仕込んだ相手次第というのも悩ましい点です。

XSSへの対策

XSS対策はサイト運営者・ユーザーそれぞれ必要になります。それぞれの視点から、対策を紹介します。

サイト運営者の対策

WAFを導入

WAF(Web Application Firewall)を導入することで、ファイアウォールでの防御が難しいとされた脆弱性を狙った攻撃から守ることができます。シグネチャを用いての攻撃検知は、従来のファイアウォールはネットワークの対策であって、外部へと後悔するアプリケーションへの制限が難しいものでしたが、WAFであれば可能です。また、IPS/IDSよりも詳細に検知することができます。

エスケープ処理・サニタイジング

アプリケーション側での対策として、危険な文字を無害な文字に置き換えるエスケープ処理・サニタイジングが挙げられます。「<」、「>」をそれぞれ「&lt;」「&gt;」に置き換えるなど、本来特別な意味を持つ記号を、別の表現方法にて出力するものです。結果、XSSに含まれているスクリプトを無害な文字に置き換えることで、スクリプトとして動作させません。

出力値の制限

ユーザーが入力したURLに関して、「http://」「https://」で始まるもののみを許可することでもXSS対策となります。ユーザーが入力したURLをすべて動的ページとして出力する場合においてはjavascriptで始まる文字列を実行させることになるので、出力値を制限することでjavascriptとしての動作を阻害します。結果、XSSから守ることができます。

入力値の制限

上記をより強固にするために、入力値を制限することでもXSSの対策となります。入力された文字列が規定に沿っているのかを判断するもので「バリデーション処理」とも呼ばれています。仕様に沿っていない文字列が含まれていた場合、データを受け取らないよう設定しておくことで、スクリプトなど規定外の入力を防止できます。ただし、あまりにも強固な入力制限を行うと通常の入力にも支障をきたし、悪意のない一般ユーザーに不便を強いることになる点は注意が必要です。

ユーザーの対策

ブラウザを最新に保つ

最新のブラウザに保つことでXSS対策になります。ブラウザは常に改良が加えられており、最新のバージョンであればそれまでに発生して被害を生じたXSSの対策が実装されていることがほとんどです。ブラウザを提供している側はそれまでに発生したトラブルを改善し、最新バージョンをリリースしますが、新しく生まれるXSSの防止ができるとは限りません。XSSに限らず、インターネット上の悪意ある攻撃は「生まれては対策が講じられ」のいたちごっこです。最新のブラウザを保つことは、XSSを完全に防ぐためではなく「最低限の対策」となるのを念頭に置いておきましょう。

ブラウザのセキュリティ設定を行う

ブラウザには細かくセキュリティを設定する機能が搭載されています。デフォルトでもそれなりに機能しますが、セキュリティを設定することでXSSから身を守ることが可能です。設定できる項目はブラウザによって異なりますが、手動設定で高いセキュリティを発揮するブラウザもあります。改めてブラウザの設定を見直すだけでも、XSS対策を含めて高いセキュリティ環境を構築できる場合があります。インストールされているものやダウンロードしたブラウザをそのまま使用するのではなく、設定を見直すことをおすすめします。

リンクを安易にクリックしない

XSSは画面を見ているだけでは発生せず、ユーザーのアクションに反応する攻撃です。そのためリンクを安易にクリック・タップしないだけでもXSS対策となります。気になるキャッチコピーが書かれたリンクがあるとつい押してしまいたくまるもの。XSSはこのような人間心理に付け込んだ攻撃です。

ウイルス対策ソフトウェアを導入

ウイルス対策ソフトウェアを導入することで防げるXSSもあります。ウイルス対策ソフトウェアはブラウザよりも防御機能が高いのが特徴です。ブラウザはあくまでも「サイトを閲覧する」ためのもので、防御に特化したものではありません。一方、ウイルス対策ソフトウェアは防御に特化したものです。報告されているXSSに対し効果的な防御方法を構築しますので、積極的に導入したいツールです。

XSS対策のまとめ

XSSとは何を意味するものなのかや、管理者・ユーザーそれぞれの立場からの対策法まで紹介しました。原理さえ理解すれば決して複雑ではありませんが、分からなければ混乱させられるものです。対策はもちろんですが、XSSを理解することこそ対策の一歩です。