2012/06/30

MS12-023: IE9のself-XSS防止機能のバイパス


マイクロソフト セキュリティ情報 MS12-023 - 緊急 : Internet Explorer 用の累積的なセキュリティ更新プログラム (2675157)
http://technet.microsoft.com/ja-jp/security/bulletin/ms12-023
このセキュリティ情報に組み込まれている多層防御についてマイクロソフトと協力してくださった Masato Kinugawa 氏

2012年4月のMicrosoftの月例アップデートに含まれる、MS12-023で修正されたこの件について書きます。

Internet Explorer 9では、悪意ある者に誘導されてアドレスバーで不本意なJavaScriptを実行してしまうこと(self-XSS)を防止するために、「javascript:alert(1)」や「vbscript:alert(1)」のような、スクリプトを実行できる文字列をアドレスバーにペーストすると、「javascript:」や「vbscript:」という文字列が除去され、即座にスクリプトの実行ができないようになっています。

しかしながら、「javascript:」という文字列の間に、タブ文字(0x09)が挿入されていると、この制限を迂回し、即座に実行することができていました。 IEは普段から、アドレスバーに入力された文字列にタブ文字が含まれていた時、タブ文字を除去したアドレスを読み込もうとします。例えば、以下の文字列をアドレスバーにペーストして読み込もうとすると、example.comへ飛ばされます。



以下のような文字列が、MS12-023以前まですりぬけていました。


 
パッチをきちんとあてた人のIE9では、アドレスバーへのペースト時に先頭部分が除去されるはずです。

報告したのは2011年11月18日です。ちょうどこの頃、self-XSSを利用した攻撃がFacebookで行われたことが話題になっており、IE9の防止がきちんとできているか確かめてみたところ、抜けがあることに気が付きました。これにより攻撃者がより単純な手順で、self-XSSの実行へ導くことができていました。