キヤノンMJ/サイバーセキュリティ情報局

ウェブサイトの脆弱性を突く攻撃手法のひとつ「クロスサイトスクリプティング」とは

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はキヤノンマーケティングジャパンが提供する「サイバーセキュリティ情報局」に掲載された「クロスサイトスクリプティング(XSS)とは?Web改ざんを招かないための注意点と対策」を再編集したものです。

 クロスサイトスクリプティングとは、ウェブサイトの脆弱性を突く攻撃手法の1つであり、サイトを横断(クロス)させようとすることから名付けられた。比較的古くから存在する攻撃手法ながら、現在でも大きな脅威となっている。この記事では、クロスサイトスクリプティングの仕組みや有効な対策について解説する。

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

 クロスサイトスクリプティングは対象とするウェブサイトの脆弱性を突いて不正に侵入し、そのウェブサイトにスクリプトを仕込み、情報を窃取する別のウェブサイトへと誘導する攻撃のことである。ウェブサイトへ訪問したユーザーを悪質な別のウェブサイトへ誘導(サイトをクロス)することから、クロスサイトスクリプティング(XSS)という名称で呼ばれるようになった。

 クロスサイトスクリプティングは、比較的古くからある攻撃手法であるが、今なお主要な攻撃手法として知られている。IPAが公開した2022年4月~6月の「ソフトウェア等の脆弱性関連情報に関する届出状況」によると、ウェブサイトの脆弱性の種類別の届出状況において「クロスサイトスクリプティング」が全体の58%を占め、最も多くなっている。このような数字からも、クロスサイトスクリプティングが今なお危険性の高い攻撃手法であることがわかるだろう。

 クロスサイトスクリプティングによる被害は大きく分けると以下の3つとなる。

・個人情報漏えい
住所や名前、クレジットカード情報などの個人情報が窃取され、ダークウェブなどで個人情報リストとして売買されてしまう可能性がある。そうしたリストに載ってしまうと、別の攻撃の標的にされたり、金銭要求の脅迫を受けたりといった二次被害に発展する可能性がある。

・セッションハイジャック
 ウェブサイトにログインするためのIDやCookie情報を不正に入手し、セッションを乗っ取るサイバー攻撃をセッションハイジャックと呼ぶ。この手の攻撃を受けると、ユーザーになりすましてウェブサービスにアクセスされる危険性が高まり、ネットバンキングからの不正出金やSNSアカウントの乗っ取りなどの被害を受ける恐れがある。

・マルウェアのダウンロード
 クロスサイトスクリプティングにより、ユーザーにプログラムのダウンロードを促す、不正なウェブサイトに誘導されることがある。要求に応じてこうしたプログラムをダウンロードしてしまうと、マルウェア感染につながる可能性もある。OSやウェブブラウザーの脆弱性を突く攻撃の場合、ユーザーが操作しなくても自動的にマルウェアがダウンロードされてしまうこともある。

ドライブバイダウンロード攻撃が招くセキュリティリスクとは?
https://eset-info.canon-its.jp/malware_info/special/detail/220531.html

インジェクションのさまざまな手法

インジェクションとは、プログラムが想定外のコードやデータを処理した場合に生じるバグを悪用して不正な命令を実行する攻撃手法の総称であり、クロスサイトスクリプティングもインジェクションに含まれる。クロスサイトスクリプティング以外にも、以下のようなインジェクションの手法がある。

・SQLインジェクション
 データベースを操るためのSQLを悪用した攻撃であり、ウェブサイト側が想定していないSQL文を入力し、データベースに不正な命令を与えることで、データを改ざんしたり、盗み取ったりする手法である。

・メールヘッダーインジェクション
 「問い合わせフォーム」や「アンケート」のような、特定の相手にメールを送信する機能の脆弱性を突く攻撃。入力データを改ざんすることでメールヘッダーを悪用して、迷惑メールの送付などを行なう攻撃手法だ。

・HTTPヘッダーインジェクション
 ウェブアプリケーションにおけるHTTPレスポンスヘッダーに生じる脆弱性を突く攻撃のこと。攻撃者により、HTTPレスポンスヘッダーに対して、勝手にヘッダーフィールド、あるいはボディを追加することで、偽のページ内容が表示されてしまう、スクリプトが実行されてしまうといった被害が生じる。

・ディレクトリトラバーサル
 相対パスの表記を絶対パスに変換する「正規化」の仕組みを悪用した攻撃のこと。閲覧可能な公開ファイルが存在するディレクトリから、非公開ファイルのあるディレクトリ階層に「横断する(トラバーサル)」かのように移動して不正にファイルを閲覧する攻撃手法だ。

・クロスサイトリクエストフォージェリ(CSRF)
 
ログイン状態を狙った攻撃であり、悪意を持った攻撃者が作成したウェブサイトにユーザーがアクセスしてしまうと、本人の意思とは関係なくユーザーの情報やリクエストを勝手に送信されてしまう手法である。

クロスサイトスクリプティング攻撃の仕組み

 クロスサイトスクリプティングの攻撃の仕組みは、以下のようになる。

 

図1:クロスサイトスクリプティング(XSS)の攻撃の仕組み

・悪意のある攻撃者がウェブサイトに罠を仕掛ける
・罠を仕掛けられたウェブサイトをユーザーが閲覧
・ユーザーによるクリックなどのアクションによりスクリプトが実行し、別のウェブサイトへ転送
・入力した個人情報、もしくは保持するCookieがスクリプト実行で漏えい
・漏えいしたデータが攻撃者の手にわたる(情報漏えい)

 図1のような順序を経て、ユーザーの個人情報が漏えい、あるいはCookieが盗まれ、セッションハイジャックなどが可能となってしまうのだ。

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

 クロスサイトスクリプティングの基本的な攻撃の仕組みは先述のとおりだが、最近では「クロスサイト」しない攻撃でもクロスサイトスクリプティングと呼ばれるものもある。主なクロスサイトスクリプティングの種類は次の3つである。

・反射型XSS
 
リクエストを実行したユーザーにスクリプトが戻されることから「反射型XSS」と呼ばれる。いわゆる基本的なクロスサイトスクリプティングの手法である。攻撃者は偽メールや偽サイトに不正なスクリプトを含んだリンクを用意し、ユーザーを脆弱性のあるウェブサイトへ誘導し、ユーザーのウェブブラウザー上で不正なスクリプトを実行させることで、個人情報やCookieなどの窃取を試みる。

・格納型XSS
 格納型XSSでは、攻撃者があらかじめウェブサイトに直接スクリプトを格納する。ユーザーが当該ページにアクセスするだけで攻撃できてしまうため、反射型XSSのように罠を仕掛けたウェブサイトを別途用意せずとも攻撃が可能だ。

・DOMベースXSS 
 DOM(Document Object Model)とは、HTMLやXMLを取り扱うためのAPIやデータ構造を定義したものである。JavaScriptのスクリプトに存在する脆弱性を悪用した攻撃で、サーバー側ではなく、クライアントのウェブブラウザー上にて攻撃用の不正なスクリプトが実行される。また、DOMベースXSSの場合、静的なHTMLでもJavaScriptが利用されていれば攻撃対象となり得る。

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

 クロスサイトスクリプティングによる被害は後を絶たないが、適切な対策を講じることでリスクは低減できる。クロスサイトスクリプティングへの対策は、大きくユーザー側の対策と企業(ウェブサイト)側の対策に分けられる。

1) ユーザー側で行なう対策

・ウェブブラウザーやソフトウェア、アプリを最新版にアップデート
 クロスサイトスクリプティング攻撃を防ぐためには、ウェブブラウザーやソフトウェア、アプリを最新バージョンにしておくことが重要だ。クロスサイトスクリプティング攻撃に限らず、ソフトウェアは時間の経過に伴い、何かしらの脆弱性を抱えることが少なくない。そのため、そうした脆弱性を解消するためのアップデートには迅速に対応するようにしたい。

・セキュリティソフトを導入、不審なスクリプトをブロック
 「ESET PROTECTソリューションシリーズ」などの法人向けのセキュリティソリューションにもクロスサイトスクリプティング攻撃を防ぐ機能が用意されているものがある。例えば、不正なスクリプトを検出してくれる機能や、正規のサイトを装った不正サイトへのアクセスをブロックする機能などがあるため、利用を検討してみてもよいだろう。

・メール内やウェブ上の不審なURLを安易にクリックしない
 怪しいメールやウェブサイトに表示されているURLを安易にクリックしないことも肝要だ。そうしたURLは悪意のあるウェブサイトへの誘導を狙うものが多い。メールなどでURLが送られてきた場合、クリックする前に、そのウェブサイト自体の安全性を十分に確認することが望ましい。

2) 企業(ウェブサイト)側で行なう対策

・WAF(ウェブ Application Firewall)の設置
 WAFなどのウェブアプリケーションに特化したファイアウォールを設置することで、ウェブアプリケーションへの攻撃を防ぐことが可能だ。通信を監視することにより、攻撃と判断された通信を遮断するため、ウェブサイトの脆弱性が攻撃されることから保護する。

・バリデーション処理の実施
 ウェブフォームなどのユーザーの入力を受け付けるシステムにおいて動作にバリデーション処理を組み込むことで、攻撃を無効化する。例えば、電話番号なら数字のみを許容するなど、想定外の値が入らないようにする。あるいは、リンクとして出力する場合にURLが「http://」または「https://」で始まるケースのみ受け付けるようにすることで、クロスサイトスクリプティング攻撃を受け付けなくなる。

・サニタイジング処理の実施
 スクリプトの構成要素となる「<」、「>」、「&」、「'」」などの文字列をエスケープ処理することによって攻撃を無効化できる。先述のバリデーション処理と合わせ、セキュアコーディングと呼ばれる。ここで挙げた以外にも、信頼できる提供元以外のスタイルシートを利用しない、ウェブページ内に埋め込むスクリプトについて外部の参照先の安全性を十分注意する、といったものがある。IPAが提供する「安全なウェブサイトの作り方」に詳しく記載されているため、ウェブサイトの制作時には目を通しておくと良いだろう。

攻撃傾向から考える!ウェブサイトの最適なセキュリティ対策とは
https://eset-info.canon-its.jp/malware_info/special/detail/211125.html

クロスサイトスクリプティングの脅威を正しく理解することが重要

 クロスサイトスクリプティングの手口はウェブサイトの脆弱性を突くものであり、その手法も巧妙化、悪質化の一途を辿っている。ユーザー側の対策は先述のとおりだが、基本的な対策は脆弱性が解消されたソフトウェア、アプリケーションを利用し、不審なURLへのリンクやボタンなどは安易にクリックしないことだ。また、何かしらのヒューマンエラー、ミスが生じることを前提に、万一の際に備えてセキュリティソフトをインストールしておくことも大切だ。

 企業側においても、コンプライアンス重視の社会において、クロスサイトスクリプティングによる被害が拡大してしまうと、直接的な損害に加え、信用失墜など間接的な被害も計り知れない。ウェブサイトの安全性を高めるための情報は先述のIPAをはじめ、さまざまな行政機関からも提供されているため、適宜参照し、積極的に活用するようにしたい。被害の拡大を見据えて、善処を尽くす対策がユーザー、企業双方に求められているのだ。