XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで本連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部)
皆さんこんにちは、はせがわようすけです。
第1回「[これはひどい]IEの引用符の解釈」と第2回「[無視できない]IEのContent-Type無視」でInternet Explorer(IE)の独自の機能がクロスサイトスクリプティング(XSS:cross-site scripting)を引き起こす可能性があるということについて説明してきました。
第3回でも引き続き、IE特有の機能が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( |
被害者がこのようなメールをWebブラウザ上で開くと、セッション情報を格納しているCookieの値が、攻撃者の用意したサーバに送られてしまうことになります。
Copyright © ITmedia, Inc. All Rights Reserved.