EDA・ソフトウエア 強いLSIやボードを設計するための
 

コードから見るDOM Based XSSの原因と対策方法

谷口 隼祐=情報処理推進機構(IPA)
2013/06/11 00:00
印刷用ページ

 前回は、DOM Based XSSの脆弱性の概要や対策が必要なアプリについて解説した。今回は、脆弱なコード例を交えて対策方法を解説する。

DOM Based XSSの脆弱性が作り込まれてしまったコード例

 DOM Based XSSの脆弱性は、「アプリの開発者が用意した正規のJavaScriptに問題があるため作り込まれたXSS」である。今回は、Webサイトのアクセス解析用CGIの設置コードを用いて、DOM Based XSSの脆弱性の原因と対策について解説していく。

アクセス解析用CGIの設置コード
<script>
document.write('<img src="http://example.jp/accesslog.cgi?ref='
+ document.referrer
+ '" width="1" height="1">');
</script>

 上記設置コードは、アクセス解析用のCGI開発者が用意した正規のJavaScriptで記述されている。このJavaScriptは、アクセス解析したいWebページに設置するためのものである。Webページを閲覧した利用者がどこのWebページからアクセスしてきたのかを集計するために、参照元のWebページのURLである「document.referrer」の情報をaccesslog.cgiに渡しているが、この処理に問題があるため、DOM Based XSSの脆弱性が作り込まれてしまっている1)。なぜこのコードが問題なのかを、DOM Based XSSの流れを見ながら攻撃を解説することで示そう。

1)ブラウザーによってdocument.referrerの情報の扱いが異なるため、例示している脆弱なコードを狙った攻撃が成立するかどうはブラウザーに依存する。IPAでは、Internet Explorer 8および9で再現することを確認した。

 DOM Based XSSの脆弱性を悪用した攻撃は下記の通りである(図1)。

[画像のクリックで拡大表示]
攻撃の流れ
  • (1)利用者が悪意ある者が設置した「罠ページ」(下記URL)にアクセスする
    URL:http://evil.example.com/?"><script>不正なJavaScriptの基データ</script>

  • (2)罠ページは自動的に、アクセス解析用CGIの設置コードを含むページ(下記URL)にリダイレクトするように細工されている(URL:http://victim.example.jp/)。
  • (3)アクセス解析用CGIの設置コードは、(1)でアクセスしたURL情報(=http://evil.example.com/?"><script>不正なJavaScriptの基データ</script>)をdocument.referrerで取得し、それを現在閲覧しているページにdocument.writeで埋め込むため、(1)に含まれる攻撃者が用意したJavaScriptが利用者のブラウザー上で実行される。

 利用者は罠サイトを訪れただけであるが、最終的に、利用者のブラウザー上で攻撃者が用意した不正なJavaScriptが実行されてしまう。不正なJavaScriptは、http://victim.example.jp/と利用者のブラウザーの間でやりとりしているCookie情報や、ブラウザーに表示しているページの内容を操作することができるため、Cookieにログイン状態を管理するセッションIDが含まれていれば、攻撃者はセッションIDを盗み、罠にひっかかった利用者になりすますことが可能である。

ここから先は日経テクノロジーオンライン会員の方のみ、お読みいただけます。
・会員登録済みの方は、左下の「ログイン」ボタンをクリックしてログイン完了後にご参照ください。
・会員登録がお済みでない方は、右下の会員登録ボタンをクリックして、会員登録を完了させてからご参照ください。会員登録は無料です。

【9月15日(火)開催】触るインタフェース(応用編)
~ウエアラブルと身体性から読み解く次世代インタフェース~


ウエアラブルデバイスで触覚情報を利用するための基礎と最新技術や、全身触覚と身体性に着目した新しい触覚インタフェースの新潮流について解説する。この分野に精通する3人の講師が、様々な研究開発例とその実装方法を紹介する。詳細は、こちら
会場:BIZ新宿 (東京・西新宿)

マイページ

マイページのご利用には日経テクノロジーオンラインの会員登録が必要です。

マイページでは記事のクリッピング(ブックマーク)、登録したキーワードを含む新着記事の表示(Myキーワード)、登録した連載の新着記事表示(連載ウォッチ)が利用できます。

協力メディア&
関連サイト

  • 日経エレクトロニクス
  • 日経ものづくり
  • 日経Automotive
  • 日経デジタルヘルス
  • メガソーラービジネス
  • 明日をつむぐテクノロジー
  • 新・公民連携最前線
  • 技術者塾

Follow Us

  • Facebook
  • Twitter
  • RSS

お薦めトピック

日経テクノロジーオンラインSpecial

記事ランキング