JPEG 画像処理の脆弱性ってなに?

Windows で、GDI+ コンポーネントJPEG 画像検証処理に脆弱性が発見されている。

@IT - GDI+のJPEG処理部分に未チェックバッファの緊急レベルの脆弱性
http://www.atmarkit.co.jp/fwin2k/hotfix/ms04-027-028/ms04-027-028.html
マイクロソフト セキュリティ情報 (MS04-028) - よく寄せられる質問
http://www.microsoft.com/japan/technet/security/bulletin/fq04-028.asp

おおざっぱに言うと、GDI とは Windows のグラフィック機能のことで、画面 (ウィンドウとかボタンとか) の表示に使われている。今回脆弱性が見つかった GDI+ はその強化版で、Windows XP で追加された新機能のひとつ。具体的には、gdiplus.dll という DLL ファイルに収められていて、オフィスアプリケーションやゲームなどが GDI+ の機能を使いたい場合は、アプリケーションからこの DLL を呼び出すことになる。
今回の脆弱性は、この GDI+ のうち、JPEG 画像を読み込む機能のバグ。ある方法で JPEG 画像に命令を仕込むと、勝手にその命令を実行させることができてしまうという。例えば、ネットで見つけた JPEG 画像をワープロ文書に貼ろうとしたとする。そのワープロアプリケーションが GDI+ を使って JPEG を読み込もうとすると、その瞬間、中に仕込まれた命令が実行されてしまう。どんな命令を仕込むかは、仕込む人の好きなようにできるので、「ハードディスクの中身をまっさらに戻す」とか「アドレス帳に登録されてる人全員にウィルスメールを送りつける」とか「作ったファイルをネットに流す」とか、なんでもアリ。
で、今回とくに問題になっているのは、上記の GDI+ コンポーネント (gdiplus.dll のこと) が、Windows 本体以外のソフトに同梱されている場合がある、ということ。例えば、GDI+ の必要なゲームを Windows 2000 にインストールする場合、そのゲームと一緒に GDI+ コンポーネントがインストールされることがある。そして、同じようなソフトを他にもひとつインストールすると、さらに 1 つ GDI+ コンポーネントがインストールされる。
つまり、自分の PC の中に、GDI+ コンポーネントがいくつあって、どれとどれがバグ修正の必要なバージョンなのかを調べるには、使っているアプリケーションを全部調べて、どれが GDI+ を使っているか、確認しなければならないのだ。そして、見つけものをすべて、バグ修正済みの新しい GDI+ コンポーネントで置き換えなければならない。中には、「アプリケーションが .NET ランタイムを使っていて、.NET ランタイムが GDI+ を使っている」というような多段構成のパターンも存在するので、調べるには Windows に関する知識が (ある程度は) 必要になる。
ちなみに、Microsoft はチェック用ツールを無償で公開しているが、これは Microsoft 以外のソフトまでは面倒を見てくれない。Windows Update も同様なので、「Windows Update でパッチを全部あてたから、うちのマシンは大丈夫」とは言えないのだ。