マイクロソフトが最近出したセキュリティアップデートですが、 原因はWMFファイル(Windows Meta File)にあったそうです。 WMFというファイル形式は、Win3.0時代に開発されたにしては、けっこう賢くて、FlashのようなベクターとBMPのようなビットマップピクセルを両方混在させたような形式です。 個人的にはTeXのEPS画像を作るのに最も適した形式です。 あとは表に見えてきませんが、Ctrl+Cしたときのクリップボード内部でもWMFのオブジェクトはよく使われているのではないかと思います(Officeなど)。 まあそういう基本的な形式なのでWindowsVistaもリリースされようという昨今に「WMF形式に悪意のコードが自由に実行できる」なんてセキュリティホールは「え、それバグor工程ミスなんじゃないの?」というぐらいの激震なのではないかと思います。 で、こんなニュースが出てました。 「MS、自社製品のコードを徹底調査へ—-WMF脆弱性を受け」 http://japan.zdnet.com/news/sec/story/0,2000052528,20094095,00.htm なるほど、言っていることはもっともですが、そういやGDIにも似たような問題ありましたよね?GDI+と同時期にチェックツールなるものが配布されていましたが…。どうしてそのときにWMFがスルーしてしまったのか、そこが問題なのではないかと思います。 以下勝手な憶測ですが、Windowsがコンピュータプラットフォームの核になったとき、実際には画像などの取り扱いを含めたマルチメディア機能の強化が大きかったんですよね。具体的にはWindows95でMacOSを模倣して打ち負かした時代のことですが。この頃作ったGDIはGraphic Device Interfaceといいながらも、サポートしているようでサポートしてい ない画像形式などが沢山あって、まあそれをMS式に「動くように実装」ってな感じでみんな付き合ってきたわけですが。 このところ問題になってるのはそういった過去の遺産ファイルフォーマットとコード資産のサポート問題というところかもしれませんね。 例えばGDI+になってもいっこうに、画像ファックスビューワのDLLはTIFFをフルサポートしませんでした。てゆかファックスってTIFFファイル形式のサブセットじゃん!と思うんですが、それでもファックスビューワを語るソフトウェアなのに、ピュアなTIFFファイル形式をサポートしてませんでした(それどころかFAXの縦横比やマルチページも自動で認識できない体たらく)。ちなみにTIFFファイルというのはMS自身も初期の策定に参加している画像フォーマットですが奥深くて、自由度ありすぎるので「完璧な実装はせんでいい」と宣言されているフォーマットでもあります。 http://ja.wikipedia.org/wiki/Tagged_Image_File_Format でもタグにちゃんと必要な情報は書いてあるので、やれないことはないはずなんですがね。MS様ともなれば。 そういう意味では最近デジカメで使われているExifなんてのもTIFF拡張ですしね。 まあいろいろ雑言書きましたが「見落としていた」というわりに、かなり露出度の高いモジュールだったわけで、MS内部のソースコード流用がセキュリティ至上主義になっていまさら問題になった、という例なんででしょうかね。システム担当者は「頼むよオイ」というところなんでしょうけど。 ※正月休み返上で配布前倒しにしたのは企業努力として評価したいとは思います。 てゆか、そもそもWindowsって要らん機能多すぎですよね。 なんでWebServerエディションとかまで出しているのに、FAXビューワーぐらい削除できないのか、と。 盛りだくさんにしてCPU負荷かけてそんなに楽しいんですか、と。 64bitの「カーネルだけエディション」とか出さないかなーとか。速そー。 ところで古い画像フォーマットで他にもコード実行可能な形式ってあったように思うんだけどなあ、とりあえず似た形式という意味ではEMF、EPSが危ないのかな。 そういや「WMF2EPS」のアップデートってされないのかな。 2004年に1.32が出たっきりアップデートされてない。 http://www.wmf2eps.de.vu/ これまた研究者以外には全く興味のないネタで本件終わり。 以下WMFファイル問題の公式リンク。 一般向け情報 http://www.microsoft.com/japan/security/bulletins/ms06-001e.mspx もうすこし技術向け情報、でも穴が多いドキュメント http://www.microsoft.com/japan/technet/security/bulletin/MS06-001.mspx