はてなダイアリー日記 - スタイルシートにおけるXSS脆弱性の修正について

はてなからの発表

上記からちょっと引用。強調部分は私によります。

はてなダイアリースタイルシート設定では、セキュリティ確保のため expression 関数は使用できないよう制限を設けさせていただいておりますが、一部ブラウザで、全角文字を利用すると expression 関数を実行できてしまう脆弱性が見つかりましたので、対応を行いました。

2006年1月6日追記:この問題の報告者さん発見

おお!はてなダイアリー日記 - スタイルシートにおけるXSS脆弱性の修正について :: ぷろじぇくと、みすじら。

まぁなんにしても、危険なものを取り除いてして安全なものだけ利用できるようにするというのは難しいことだなーと改めて思ったのでした。

激しく同意です。ちょっと話題はずれますけれど、Windowsプラットホーム上では、ある程度市場をつかんでいるブラウザごとに、いまだ公知ではないフィルターのすり抜け方があるように思います。各ブラウザでは、設計上、かくかくしかじかの時にスクリプトが起動しうります、といった情報を詳細に、公にお知らせすべきと強く感じます。これこれは仕様ですからと。通常では知られていないスクリプト起動方法が存在すればすなわちそれはXSS攻撃者のメシの種でしょうから。私はバグについて言っているのではありません。仕様の解釈のブレを問題にしています。RFCやHTML(XHTML)の標準仕様を鑑みて防衛の為のフィルターをせっかく作成しても、悪意ある既述がフィルターをスリ抜けてしまう、そんな蓋然性を極力減らしたいのです。ブラウザのバグについては、いたしかたありませんけれども、仕様外ということで尽力して修正していただければと思います。以上で12/19付きへの追記は終わりです。

感想

正直、愕然としています。はてなスタイルシートのフィルタリングについては自分でも何度も調べて来ましたし、今まで何かあれば連絡して修正をお願いして来ていたので、かなり安心してきただけに…これ発見した人はエライなあ。ううむ。EUCだんべ?変だなあ。UNICODEのほうかなあ。正規表現による危険物フィルターをバイパスするためのまぜものは、恐らくバックスラッシュと関係があるのかもしれませんねえ。expression()に影響が出てbackground:url()に影響が出ないのですから。url()の中身はまたルールが違いますしねえ。単純でもないなあ。

はてなさんなり報告者さんなり、IPAを通じてMicorosoft社に申し入れをしていただくと嬉しいかなあ。これ、きっと重要なバグだと思います、はい。はてなのサービスばかりではありません、弱いのは。ブラウザ側の変な仕様が残っている限り、皆が幸せにはなることは難しいですから。しばらく気になってしょうがないかもです。いったいどんな脆弱性なのでしょう。自分でみつける能力ないしなあ。コード系のチェックだとプログラムなりスクリプトなりで検証しなけりゃいけないのかなあ。力づくでするものじゃないとすると、もっと早くからわかっちゃっていそうだし。ううむ。

※expressionが意味を持つブラウザのエンジンってあれくらいですから。(強調部分の補足説明)

…その後、例が見つかりました。(様子見中…)こんなの世界中のサーバーサイドに注意しろったって無理だよう、とほほほ。いかにも日本的な。url()の中身には使えなさそうな感じなのでスタイル属性の中ではexpressionだけをとりあえず気にするのかな。

さらにその後。あ・・・全角ばかりではないのですね、ってなんだこれはっ!!っていうかヨタワロス脱力でした。なお、ヨタはペタよりもはるか上の単位です。(実在)。葉っぱさんありがとうございました。全角でないものをみつけた葉っぱさんエラすぎです。

一ユーザとしての自衛策

ログインする時にはIEJavaScriptを切っておく。普段も切っておく。Firefoxに乗り換える。ぐらいでしょうか。