かなり権威のある雑誌 「日経サイエンス」 1998 年 10 月号WAVE という欄に、コンピューターウイルスに関する記事を載せてもらいました。 なお、この記事をその著者が使うことは、雑誌社の了解済み。


コンピューターウイルス検出の落とし穴


 コンピューターウイルスは現在 (1998 年時点で) 1 万種、変種も含めると 2 万種もあり、しかも、平均すると毎日 6 個ものペースで新たなウイルスがぞくぞくと作られているという。これに対し、何種類ものウイルスを検出するプログラムが提供されている。

 ウイルス検出プログラムは、警察と同じような難しい立場に立たされている。犯人を検挙しそこなうと無能だといわれかねないし、無実の人を犯人だとすると非難される。ところが、ウイルス誤認に対する非難があまりなされていないためか、ウイルス検出プログラムは、“ウイルスではないものをウイルスだと誤認することがあっても、ウイルスを見逃してしまうよりは良い” という安易な考えに流れがちだ。

 私の会社はソフトウエアを開発・販売しているが、1 年ほど前 (1997 年)、ソフトのサンプルが、あるウイルス検出ソフトによってウイルスに感染していると警告表示されるというとんでもない誤認事件に巻き込まれてしまった。サンプルソフトの中にたまたま、“Attr という文字列の後ろに 114 バイトおいて 「ライブラ」 という 4 文字のバイト列” があり、このことだけでウイルスだと決めつけられたのである。

 このような誤認騒ぎは、1 ヵ月に 1 度ほどの割合で起きているようだが、ウイルスが含まれているという “ぬれぎぬ” を着せられたソフト会社の方はたまったものではない。私が巻き込まれた誤認騒ぎの場合、雑誌社からサンプルソフトの添付を拒否されそうになり、また信用を落とすことになりかねなかった (誤認事件の詳しいてん末は、「ウイルスの被害者は?」 をご覧ください)。

 このような誤認はどうして起こるのだろうか。

スキャナーという検出プログラム

 ウイルス検出にはスキャナーと呼ばれる方式の検出プログラムが広く用いられている。スキャナーは、個々のウイルスに特徴的なバイト列を頼りにしてウイルスを検出しようとするソフトである。そこでは、「四角頭の丸顔の細目」といったような個々のウイルスの特徴を記した “人相書き” (すなわち個々のウイルスを特徴づけるバイト列) が使われる。

 このタイプのウイルス検出方法では、人相書きをうまく作ることが最も重要だといえる。 コンピューターウイルスの中には自分の形の一部を変えるものもあるし、ウイルス作者が形の異なる何種類ものウイルスの亜種 (変種) を作成することもある。ウイルスという犯人は、いわば、細目のこともあれば、ぱっちり目に変装することもあるわけだ。だから「四角頭の丸顔の細目」という人相書きでは犯人を取り逃がす場合がある。人相書きをうまく作らないと、ウイルスを検出しそこなうことになりかねない。

 犯人を検出しそこなわないようにする安直な方法は、人相書きを簡略化することだ。 たとえば、「四角頭の丸顔の細目」ではなく「四角頭の丸顔」という短い人相書きにすれば、細目やぱっちり目に変装されても犯人を検出しそこなうことはない。ところが、このような粗雑な人相書きにすると、犯人ではない人を犯人と誤認することになる。その結果が冒頭の事件というわけだ。

 スキャナーによるウイルス検出の難しさを一言で言うと、誤認の確率を十分に小さくすると同時に、ウイルスの検出率を落とさないようにすることである。このためには、“変装や整形” をしても変えることができないような特徴をたくさん見つけ出して、それを人相書きにすることが必要だ。特徴をたくさん記せば記すほど、誤認の可能性は低くなる。しかし、個々のウイルスを研究して不変的な特徴をたくさん見つけることは手間のかかる仕事である。

誤認に対する現実的な対応策

 一般に、スキャナーによるウイルス検出は、ある程度の誤認は避けられない。重要なことは、検出プログラムに引っ掛かっても、ウイルスが発見されたのではなく、ウイルスの容疑者が見つかった段階だということをみんなが知ることである。

 そこで私は、ウイルス検出プログラムが表示するメッセージを 「ウイルスらしきもの、すなわちウイルスの容疑者が見つかった」 というように変更すべきであり、その際に誤認の確率をわかりやすい形で添えるべきだ、とウイルス検出プログラムの供給者に提案している。

 ウイルス検出プログラムにウイルスだと判断された場合は、どう対処すべきだろうか。そうした場合、容疑者検挙の事実をウイルス検出プログラムの供給者に連絡して、本当にウイルスかどうか判定してもらうことを是非ともお勧めする。ウイルス検出プログラムの供給者は、その詳しい内容を調査することで、本当のウイルスなのか、あるいはウイルス検出プログラムが誤認したのかを、ウイルス検出プログラムよりも正確に判断してくれる。彼らは、このために必要な十分な情報をもっているのである。

 こういったフィードバックはまた、検出プログラムの検出能力を向上させることにもつながることだろう。


シマンテック社の Norton による誤認識


Copyright © 1998 by AppliTech, Inc. All Rights Reserved.