「多くのユーザーに大変な迷惑をかけてしまった。トレンドマイクロ全社員になりかわり,心からお詫びする」。トレンドマイクロCEOのエバ・チェン氏は4月26日,ウイルス対策ソフト「ウイルスバスター」による広範囲なパソコン障害についての記者会見でこのように発言した。「今後このようなことが起きないよう,今まで以上に製品の品質向上に精力を傾ける。挽回するチャンスをもう一度いただきたい」とした。

 今回の障害は,「Windows上のファイルがUltraProtectという形式で圧縮されているかどうか」をウイルスバスターが判定する過程で起こる。UltraProtect形式で圧縮したファイルの中に,特定のワームが潜んでいるか調べるプロセスの一部である。障害が起こり得る検索エンジンのバージョンは「7.5.1」または「7.5.0」で,パターン・ファイル「2.594.00」と組み合わせて実行したとき,パソコンが“無限ループ”に陥ってしまう。

 トレンドマイクロが明らかにしたところによると,ウイルスバスターは2つの条件を同時に満たすWindowsのDLLを検査するときに障害を起こす。1つは,DLLファイルのヘッダー情報に関係がある。WindowsのDLLファイルには,ヘッダーの中にプログラム・コードの実行開始位置(エントリ・ポイント)を含むものとそうでないものがある。後者の実行開始情報を持っていないDLLであることが,障害を起こす第1の条件となる。

 第2の条件は,そのDLLの内部が「プログラム・コード」や「データ」など複数のセクションに分かれておらず,プログラム・コードが1つのセクションに書き込まれている場合である。

 2つの条件を満たしたDLLファイルに対してウイルスバスターが検査を開始すると,ファイルがUltraProtect形式で圧縮されているかどうかを正しく判定できず,何度も同じ判定作業を繰り返してしまう。その結果,CPUの使用率が100%近くに張り付いてしまう。

 Windows XP Service Pack 2やWindows Server 2003には,上記の条件を満たすDLLファイルを数多く含まれている。そのため,これらのOSが稼働するPCで大量の障害が発生した。同様に,Windows MeやOffice XPにも不具合を引き起こすDLLファイルが含まれているという。

 通常ならば,こうしたバグはテストによって判明するはずだ。しかしトレンドマイクロは,Windows XP Service Pack 2に関してはテストを実行していなかった。そのほかのOSでは,UltraProtect形式の圧縮の有無をチェックする機能のない検索エンジン「7.0.0」でテストしていた。そのためにバグを見つけ出すことができなかった。

 トレンドマイクロでは再発防止策として,パターン・ファイルの作成から検証,公開までのフローを見直した。まず,テスト工程の中で作業内容を評価するチェックポイントを以前より増やした。また,これまで1人のエンジニアが実行していたテストを複数人で別々にテストすることにした。さらに,テスト対象とするOSの範囲も広げる。従来はマイクロソフトがサポート対象としているOSだけだったが,今後はサポート切れのOSに関してもテストを実行する。

(松浦 龍夫=日経システム構築)