ブラウザに関する話が聞けるということで第 13 回 Admintech.jp 勉強会に行ってきました。他の勉強会 (といっても私の場合は Kanasan.JS がほとんどですが) と比べると、Admintech.jp 自体が ITプロ(システム管理者やネットワークエンジニア)向け
のコミュニティということもあってか、学生が少ない印象を受けました。また、参加者のノートパソコンを見渡すと、会場 (マイクロソフト大阪オフィスセミナールーム) のせいではないでしょうが近年ではまれに見る Mac 率の低さだったようです。
はせがわようすけさんによる、IE 以外のブラウザでは問題ないが、IE では XSS につながるパターンの紹介でした。発表資料ははせがわさんの記事から参照できます。
文書の文字符号化方式を UTF-7 や US-ASCII と誤認識させることによる XSS の話が出ていましたが、HTML 4 で文字符号化方式の判定がどのように規定されているかについては「文字符号化方式判定の優先順位」@水無月ばけらのえび日記に解説があります。「常に valid な HTML を出力するようにしておけば XSS の 9 割は防げる」と聞いたこともありますし、HTTP、HTML といった標準を抑えておくことはセキュリティの面からも重要なのではないかと思います。発表にもあった IE の Content-Type 無視のように、標準に従っていてもブラウザ側の動作によって問題がおきることもありますが。
IE 8 では HTML 文字列からスクリプトなどを取り除く toStaticHTML メソッドが導入される予定ですが、IE 8 Beta 2 時点ではダイナミックプロパティ (CSS expression) による XSS を防ぎきれないといった問題があるそうです。
「レジストリに登録されていない MIME タイプ」という話がありましたが、このレジストリとは HKCR\Mime\Database\Content Type のことでしょうか? だとすると私の XP SP3 環境では application/javascript が登録されておらず、application/rss+xml は登録されているのですが、安全だ安全でないというにはまた別の基準があるのでしょうか?
Google の及川卓也さんによる発表ですが、Google Chrome には特に触れず、WebKit の特徴と Windows でのアプリケーションへの組み込み方が主な内容でした。IE はコンポーネントが簡単に利用できますし、Firefox も Mozilla ActiveX Control や GeckoFX が公開されていますが、WebKit にはいまだそういう手軽に組み込む仕組みがほとんど存在しないそうです。
JavaScriptCore が、もともとは AST をたどって実行していたのが、SquirrelFish の導入で中間言語を用いるようになり、さらに SquirrelFish Extreme で機械語を出力するようになるなど、JavaScript エンジンがどんどんハードウェアに依存するレイヤーに近づいているというのが印象に残りました。
セコメントをする