[柔軟すぎる]IEのCSS解釈で起こるXSS − @IT(情報元のブックマーク数)

はせがわようすけさんの、クロスサイトスクリプティング汗まみれ(違

第3回でも引き続き、IE特有の機能がXSSを引き起こす例ということで、“スタイルシートを利用したクロスサイトスクリプティング”という攻撃方法を紹介しましょう。

[柔軟すぎる]IEのCSS解釈で起こるXSS (1/3):教科書に載らないWebアプリケーションセキュリティ(3) - @IT

IEにおいてスタイルシート内にJavaScriptを含める方法はいくつかありますが、最も柔軟性が高いのは、「expression(JavaScript文)」という表記方法でしょう。IEではスタイルシート内にこのような記述を含めることで、スタイルの評価時にJavaScriptを実行させることができます。

[柔軟すぎる]IEのCSS解釈で起こるXSS (1/3):教科書に載らないWebアプリケーションセキュリティ(3) - @IT

このExpressionによるクロスサイトスクリプティングは、はてなダイアリーが最初?!に修正して、内容を見てはせがわさんが、食らいついたんでしたっけ。ナツカシス。

一方、ブラックリストによるスタイルシートの検査としては、はてなダイアリーの対策方法が広く知られています。

 スタイルシート内から「expression」をはじめ、危険性にありそうな文字列を削除するという方法になっていますが、そもそもこの対策方法は、前述のさまざまな「expression」の表記方法の模索とともに、破られては改修するという流れを何度も繰り返してできたものです。また、はてなダイアリー自身にXSSが見つかり対策した場合でも、この対策方法の内容が改定されていないこともありました。そのため、この対策方法だけをうのみにスタイルシートの検査を実装することは、正直お勧めできません。

[柔軟すぎる]IEのCSS解釈で起こるXSS (3/3):教科書に載らないWebアプリケーションセキュリティ(3) - @IT

すげぇーーーー!!!Microsoftに声が届いている!!!やっぱり言い続けることも大切ってことか。

IE8での標準モードでのexpressionの未サポートなどを見ていると、マイクロソフト自身が過去の互換性と安全で標準に準拠した実装のバランスをとることに苦心していることが見てとれるようです。

 前述のように、2007年ごろには全角で「expression」と記述した場合でもスクリプトは動作していました。当時マイクロソフトに問い合わせたところ、やはり「仕様に基づく動作です」という回答だったのですが、現在のIE6ではこの記述ではスクリプトが動作しないようになっており、いつの間にか安全な方向に仕様を転換したようです。

[柔軟すぎる]IEのCSS解釈で起こるXSS (3/3):教科書に載らないWebアプリケーションセキュリティ(3) - @IT

id:teraccさんが反応。へぇ一部動くそうです。(ところで、id:teraccさん、まっちゃ445の講師お願いしたいのですが・・・・)

記事中では、(5) 全角文字、(6) 特定のUnicode文字、の2つは、Windows XP SP3のIE6では動作しなくなっていると書かれていますが、うちの会社と自宅のIE6*1ではなぜかいまだに動いてます。

2009-06-04

screenshot