2006年08月02日 (水)

Safari に未改修の脆弱性 危険度は“とても危険”

Secunia - Advisories - Safari "KHTMLParser::popOneBlock()" Memory Corruption」によると Safari 2.0.4 (現時点の最新版) にメモり破壊を起こす脆弱性がある。危険度は 5 段階中 4 の「とても危険」。

同勧告によると KHTMLParser::popOneBlock() という関数に問題があって実行中の Safari のメモリ内容が破壊されてしまう脆弱性が現時点の最新版である Safari 2.0.4 に発見された。メモリ内容が壊されると普通はその実行中のプログラムがクラッシュするのだが、破壊の方法によっては任意のコードが実行できる可能性もある。クラッシュするだけなら Secunia ではたいてい危険度が 5 段階中の 2 の「軽度に危険」となるのだが今回は 4 の「とても危険」にランクされている。これは任意のコードが実行できる可能性があるためと思われる。

元々は「Browser Fun: MoBB #31: Safari KHTMLParser::popOneBlock」からの情報で、そこでは脆弱性の実証コードが公開されている。その実証コードのページを Safari 2.0.4 で開くと見事にクラッシュしてしまう。そのコードは JavaScript によって body 要素の内容(ページの表示部分)に長い文字列を入れるというものになっている。

最新版で再現されるものなので現時点でのユーザの対策としては JavaScript を無効にしておくことしかない。SafariStand でサイト毎にそういう制御をすることができるそうなのでこの際、それを導入してみてはどうだろうか。というか Safari ユーザはそうしたほうがいいと思う。他にもよいツールがあるかもしれない。このカテゴリを継続して読んでいる方ならおわかりだと思うが、ブラウザの脆弱性は JavaScript を無効にするだけでかなり減る。私自身は Safari は検証用にしか使わないのでそういうツールを入れると検証用にならなくなるために入れていません。ですから SafariStand でサイト毎に選択的に JavaScript の有効/無効が便利に制御できるかどうかは実際には知りません。

このアラートを発見してもここにエントリするのにまごまごしていた。危険度が高いのでもっと速攻でエントリすべきだった。Bloglines で作っている Another task - Powered By Bloglines というブログはネタメモに使っていて、脆弱性情報はかなりの割合でそこにポストしてから後ほど選別してここに掲載している。だから情報の選別は面倒だが元ネタを直接読むには平気という人で、Mac OS X の一般ユーザに関連する脆弱性情報に興味がある人はそっちをチェックするのもよいかもしれない。

ここにエントリするかどうかの基準には重要さもあるが、重要でもエントリしない場合もある。例えば先日の Firefox を始めとする Mozilla 製品のアップデートは重要ではあるがエントリしていない。これは Firefox などのアップデートは過去にもこの場でエントリしたからだ。そこでアップデートしていれば自動でアップデートを検知してくれるので敢えてここでアップデートを促す必要もない。そういう様々な理由でここに実際にエントリされるのはかなりふるいにかけられていて、中には単に忘れていたとか、気分がそこまでいかなかったとかそういう理由でエントリが遅れることもある。Another task の方が速いしそういう漏れも少ない。(それでも何かの責任をもってピックアップしているわけではないので、ご承知置きを)

ここの利点としては概要が日本語で読めることと一般ユーザとしての対策に簡単ではあるが触れるようにしていること。Secunia などでは対策がたとえば Disable JavaScript support. とだけ書かれていている。素直に受け取ると Safari のメニューから [環境設定]-[セキュリティ] と辿って [JavaScript を有効にする] のチェックを外すことになるが、これだと全てのサイトで JavaScript が無効になって不便きわまりない。私がわかる範囲で不便さを大きくしない実用的な対策に言及しているつもりなのでそれを参考にしてもらえたら書いている甲斐がある。ときどき気分でコラム的な言葉の説明や私的な意見を書いたりもしている。駄文ではあるが一種の読み物と思ってくださると嬉しい。


Posted: 16:43    | Comment | Trackback


以下、類似エントリです。