ウイルスの被害者は?


意外に多い誤認識


(誤検知、誤検出)


私どもの会社が巻き込まれた 誤認識 (誤検知、誤検出) 事件一覧
2010 年 シマンテック社の Norton による誤認識 (現在進行中)
1997 年 マカフィー社の (旧製品) VirusScan による誤認識 (詳細はこのページ)

日経サイエンスに掲載してもらった記事 「コンピューターウイルス検出の落とし穴」


マカフィー社の (旧製品) VirusScan による誤認識

目次

  1. VB マガジンの編集長からの告知
  2. ウイルス検出ツールのベンダとの電話
  3. 社会的な観点からウイルス誤認識事件を考えると
  4. 技術的な観点からウイルス誤認識事件を考えると
  5. 大山鳴動してねずみ一匹、いやバグ一匹


 () 翔泳社の Visual Basic マガジンという雑誌の CD-ROM に掲載していた弊社、アプリテック株式会社開発のサンプルアプリが、マカフィー・ジェード株式会社のウイルススキャン v3.0.0 によって DAME ウイルスに感染していると警告表示されます。これは 誤認識 (誤認) です。なお、アプリテック株式会社における開発では、万全のウイルス対策 (開発環境と通信環境の分離) をとっていますので、ウイルス感染の危険はありません。

 マカフィー・ジェード株式会社は、誤認であることを明言してくれました。

 () 翔泳社の Visual Basic マガジンという雑誌のホームページ (http://www.shoeisha.co.jp/pc/vbm/) にもこの件を載せてもらいました。

 アプリテック株式会社の調査の結果、以下のことが判明しました。

 Visual Basic のコードモジュール (bas ファイル) に、全角の“ライブラ”という4文字があると、極めて高い確率で、マカフィー・ジェード株式会社のウイルススキャンにウイルスだと誤認されます。ですから、Visual Basic 関係者には、注意が必要です。

 アプリテック株式会社は、総合的にみて、これはマカフィー・ジェード株式会社のウイルススキャン v3.0.0 のバグであると判断いたしました。ウイルススキャン v3.0.0 のバグが早急に修正されることを希望します。

 このような誤認騒ぎは、1ヶ月に1度ほどの割合で起きているようです。

 ウイルスから直接被害を受けなくても、ウイルス検出ツールによって“ぬれぎぬ”を着せられるという間接的な被害もあるわけです。

 このような問題をどう考えたらよいのか、ここに、今回の事件の詳細も含めて、掲載しました。社会的な観点から、そして技術的な観点から取り上げていますので、是非ともご覧ください。

 マカフィー・ジェード株式会社には、誤認を少なくするための建設的な具体的な提案もしていますが、みなさまにおかれましても建設的なご提案をお願いいたします。そして、マカフィー・ジェード株式会社が、単なるバグ修正だけでなく、何らかの誤認を防ぐ改善策をとられることを強くお願いいたします。

 なお、マカフィー・ジェード株式会社の技術本部本部長の中田秋穂様からは、後刻、以下のお手紙をいただいております。


(筆者注:はじめの挨拶などを省略)

 株式会社翔泳社の VB マガジンに添付されていた CD-ROM に含まれていた貴社製品のモジュール AE_PROC.BAS および AE_RSMR.BAS を弊社製品 VirusScan がウイルスと誤認した件について、開発元である貴社および販売元であるウッドランド株式会社にご迷惑をおかけしたことを大変申し訳なく存じております。

 お電話で対応しました丸藤、松田、青野より既に事情は説明いたしておりますように、誤認の問題はウイルス対策製品の開発を行っている者として最も頭を痛める領域であります。

 かっては、実行型ファイルにしか存在しなかったウイルスがご存じの如く、マクロウイルスの形式でデータファイルに存在するようになり、過去数ヶ月間日本の多くの企業に被害を与え、今でも被害が続出しております。今後 Visual Basic で作成されたウイルス、あるいは ActiveX および Java を利用したウイルスが出現することは必至だと考えています。

 毎日多くの新種のウイルスまたは亜種が発生している今日、誤認の危険を避けるよりは検出力の向上により力が注がれていることは否めません。勿論誤認を必要悪だと認めている訳ではありません。誤認をなくす努力はできる限り行っていますが、実際問題として誤認があるのは事実です。貴殿のおっしゃるとおり通常のアプリケーション・プログラムが誤認対策を行うことは本末転倒であると存じます。つまり誤認対策はあくまでもウイルス対策製品を開発している私どもの義務であると考えております。

 今回 VirusScan 3.0 誤認したモジュール (筆者注:マカフィー・ジェード株式会社のモジュール) は弊社のウイルス研究チーム AVERT (筆者注:ウイルス検出プログラムを開発しているチームをこう呼んでいるとうかがっています) 誤認の原因およびそれを避けるための対策を検討していることを申し添えます。

 敬具


 誤認の原因およびそれを避けるための対策が明確になったら、マカフィー・ジェード株式会社からそれを教えてもらい、ここに掲載したいと考えています。




. VB マガジンの編集長からの告知

 1997年6月2日、3日に開催された VBITS'97 Tokyo (Visual Basic Insiders' Technical Summit) というコンファレンスの2日目の午後でした。以前にメールのやり取りをしたことのある VB マガジンの上野編集長が登録手続き用のカウンタ近くに立っているのをお見かけしました。編集長は、その前の日のミッドナイトマッドネス (ビールを飲みながらのパネルディスカッション) で会場側から担ぎ出されて意見を求められていたので、お顔をしっかりと記憶にとどめることができました。ご挨拶をしなければと思っていましたので、編集長を見つけるやいなや、反射的に名刺を差し出すための動作が始まったというわけです。

 「以前、メールをお出ししたことのあるアプリテックの対馬です。覚えていらっしゃいますか?」

 「ええ。でも、もっとお若い方だと想像していましたよ。」と挨拶をかわした後、編集長は筆者を掲示板のところに連れて行きました。そして、掲示の一つを指し示して言いました。「これをご覧になりましたか? ウイルスチェックで疑いがあると判断されるこのファイルは、対馬さんのところで開発したものですよね。」

 この言葉に、筆者はそんな馬鹿なことがあるはずがないと、一瞬ひるんで戸惑いました。

 その掲示は、確か前の日の10時ごろに張り出されて、人だかりができたことを覚えています。そのとき、筆者は野次馬根性を発揮して、何が書いてあるのだろうと大勢の背中ごしに「ウイルス」「VB マガジン」「CD-ROM」というようなキーワードだけを読みました。しかし、それ以上、中身を読みませんでした。筆者には全く関係がないことと判断したからです。

 そもそも、ウイルスに感染するようなヘマをするのは未熟な点があるのであって、ベテランはそんな目に合わないようにするものだと思っていましたから、確信をもって“関係ない”と判断したのでした。

 実際に、アプリテック株式会社ではウイルス対策として、開発用のパソコン群と通信用のパソコン群は完全に分離しており、通信用のパソコンから開発用のパソコンに移す情報は、メモ帳にペーストしたテキスト情報をフロッピーディスクに入れて移動することだけに限定しています。ですから、ウイルスとは無縁であり、関係のないことだと考えていたような次第です。因みに、アプリテック株式会社のホームページからは、毎週 500 回以上のダウンロードがなされていて、ウイルスに感染させないことは最低の礼儀であると考えて、ウイルス対策をとってきたつもりです (注: この当時はこうした対策が可能でしたが、その後、セキュリティソフトに頼らざるを得なくなりました)。

 編集長に促されて、読みはじめると、綴りが少し違っていましたが慣れ親しんだモジュール AE_PROC.BAS AE_RSMR.BAS のことを指しているのだと思われました。VB をご存知の方ならお分かりでしょうが、BAS という拡張子はコードモジュールに使われるもので、そこには Visual Basic 言語で記述したソースプログラムがテキストデータとして格納されています (なお、話題のモジュールは宣言セクションのみでプロシージャは含まれていません)。もしもこれがウイルスだとすると、ウイルスのソースコードが Visual Basic の言語で書かれているということができるでしょう。いや、実は手の混んだウイルスであって「ソースコードとして意味を持つけれども、それは世を偽る仮の姿であり、実は恐ろしいもう一つの顔をもつ二重人格 (多重人格) ウイルスかもしれない」と空想の世界に入り込んだりしました。因みに、アプリテック株式会社ではソフトウェアの品質向上のために、プログラムをいろいろと等価変換した上でテストをするという独特の手法を用いていますが、多重人格ウイルスはこうした環境では消滅するはずだとか考えられますから、我が身に火の粉が降りかかっていることを直ぐに実感できませんでした。

 しかし、直感的に弁護が必要だと感じて、アプリテック株式会社のソフトウェアにウイルスが入りこんでいるはずがないということを編集長にまくしたてました。編集長は、「ウイルス検出ツールの開発元も、ウイルスではないと明言してくれたので問題はありません。」と、筆者の言葉を制しました。

 「しかし、VB マガジンの読者の方々がウイルスだと誤解するのが困るのですよ。」と言って、VB マガジンの読者および編集長の方こそ被害者であるのだということを訴えてきました。そして、すまなそうに筆者に言いました。

 「この問題が落ち着くまで、ウイルス検出ツールに誤認されるソフトウェアを CD-ROM に掲載することを差し止めたいと考えています。」

 更に続けて言いました。

 「ところで、ウイルス検出ツールのベンダとお話をしましたか。」

 ここで筆者は自分自身を反省してみました。

 「ウイルス」「VB マガジン」「CD-ROM」というようなキーワードだけを読んだとき、筆者は「VB マガジンの CD-ROM にウイルスが入っていたのかな」と勝手に解釈してしまいました。

 まだ記憶に生々しいサリン事件で疑いをかけられた長野の会社員の方がいましたが、筆者はマスコミの報道を見たり聞いたりして、一時期その方が犯人であるかのように誤解をしていました。

 ウイルス検出ツールが「ウイルスだ」とか「ウイルスらしい」とか表示すれば、ウイルスでないものもウイルスだと誤解することは、“早合点しやすい筆者”以外の人々にとっても、大いにあり得ることです。

 ですから、今回の誤認事件においてウイルスが含まれているようだと疑われた VB マガジンおよびその読者の方々が被害者であることは疑いの余地がありません。更に、ウイルス検出ツールに誤認されるソフトウェアの開発元であるアプリテック株式会社および販売元であるウッドランド株式会社も被害者なのです。

 ところで「李下に冠を正さず (スモモの木の下ではかんむりを正すな)」と、中国のことわざでは疑われるような行動を慎むべきだと言っています。

 ですから編集長が、ウイルス検出ツールに誤認されるソフトウェアを CD-ROM に掲載することを差し止めたいと考えるのも理解できます。

 また、アプリテック株式会社としても、ウイルス検出ツールに誤認されないようにソフトウェアを修正することにやぶさかではありません。


. ウイルス検出ツールのベンダとの電話

 (この部分は、慎重になってくどくどと書いてしましました。面白くなければさっと飛ばし読みして、はやく「3.社会的な観点からウイルス誤認事件を考えると」に進んだ方がよいかもしれません。)

 とるもとりあえず、早速、問題のウイルス検出ツール“ウイルススキャン”を販売しているマカフィー・ジェード株式会社に電話をかけました。

------ なお、これは後で分かったことですが、今回の誤認事件は、かんむりを正していたら、突然スモモの木が生えてきたような事件なのです。即ち、今回ウイルスだと誤認された (アプリテック社開発の) ソフトウェアは、1996年から VB マガジンの CD-ROM に掲載させていただいているものです。一方、誤認をしたウイルス検出ツールは、1997年の4月25日に発売になったものです。正確にいうと、誤認をしたウイルス検出ツール“ウイルススキャン”の V2.53 では、アプリテック社開発のソフトウェアをウイルスだと誤認することはないのですが、4月25日に発売になった V3.0 (v3.0.0?) から新たなウイルスを検出するように機能をアップした結果、ウイルスだと誤認することになったとのことです (ウイルススキャンを発売しているマカフィー・ジェード株式会社の松田様からの情報)------

 電話の先のマカフィー・ジェード株式会社の青木様は、落ち着いて対応してくれましたが、筆者は興奮していたかもしれません。

 このような誤認事件はときどき発生するとのことでしたので、青木様は対応に慣れているのかもしれません。

 ひょっとすると以下の記述に筆者の誤認があるかもしれませんが、このときに納得できなかったことを述べておきます。というのは後で行ったマカフィー・ジェード株式会社の丸藤 (がんどう) マネージャとのお話と食い違っており、丸藤マネージャのお話の方は納得できたからです。

 納得できないことは、次の二つです。

 第一は、“ウイルススキャン”に誤認されたソフトウェアの開発元であるアプリテック株式会社および販売元であるウッドランド株式会社も被害者なのだということを認めて、(株)翔泳社に送ったのと同様のお詫びのことばの入った FAX を送っていただきたいとお願いしたのですが、それはできないとのことです。これは納得できません。

 第二は、“ウイルススキャン”を修正して、アプリテック社開発のソフトウェアをウイルスだと誤認しないようにしてもらうようにお願いしたのですが、断られました。お願いしたようにしてもらったとしても、ウイルスの検出力をほとんど落とすことはないはずですから、これも納得できません。

 このように納得できない点がありましたが、青木様のお話から、誤認騒ぎはときどき発生するとのことが分かり、あまり騒ぎ立てるようなことではないのではないか、という気にもなりました。

 電話の後で、また編集長をお見かけしたので「ウイルス検出ツールにウイルスだと誤認されるソフトウェアを CD-ROM に掲載することを差し止めるというのは、過剰反応ではないですか?」ときつい調子で抗議してしまいました。

 そして、この誤認事件に関するアプリテック株式会社の見解を VB マガジンの中に載せていただくようにお願いしました。今読んでいただいているこの記事は、このようないきさつで生まれたというわけです。

 この記事を書き始めて筆者は冷静になりました。そして、マカフィー・ジェード株式会社の青木様の書いたことが真実だとしたら、マカフィー・ジェード株式会社も被害者ではないかと考えてみました。

 青木様は「ウイルススキャンにおける DAME ウイルス警告表示について」という VB マガジンの発行元である ()翔泳社へのメールの中で次のように書いています。


(筆者注:前略)

弊社のウイルス検査の仕様について説明させていただきます。

弊社のウイルス検査では、ファイルがウイルスと似通ったパターンをもっており感染の疑いがある場合、感染と判断するようにプログラムされております。

これは感染しているものを感染していないと判断することを避けるために、安全上の問題 (筆者注:配慮?) からこのような仕様にしております。

貴社の CD-ROM に含まれたおりました ae_prc.bas (筆者注:正しくは ae_proc.bas)ae_rsmr.bas の二つのファイルはこのような仕様から感染の警告を出しており、弊社で綿密に調べたところウイルスに感染してはおりませんでした。

ウイルスの流入を食い止めるには、感染していないウイルス (筆者注:ウイルスではなくファイル?) を感染していると判断 (筆者注:誤認) するよりも、感染を見落とさないことの方が重要であると認識しております。

したがって今回のような警告が発せられることは今後も十分に起こり得ますが、その際には速やかに弊社にご連絡いただければ状況を調査し、正確な情報をご提供いたします。

今回のことで Visual Basic Magazine 編集部様、および読者の皆様に多大なご迷惑をおかけしたことをお詫びするとともに、ご理解のほどよろしくお願い申しあげます。

(筆者注:後略)


 このメールの中で、ウッドランド株式会社およびアプリテック株式会社を被害者の一員に含めていない点は問題ですが、青木様のおっしゃる点は原理的には理解できます。

 後刻、マカフィー・ジェード株式会社の松田様から聞いたお話では、ウイルススキャンというツールは、1万種ものウイルスを検出するとのことであり、ウイルスには変種というものがあるので、それを含めると2万種ものウイルスを検出するように作られているとのことです。しかも、新たなウイルスがぞくぞくと発生しているとのことです。

 感染を見落とさないことはもちろん重要です。その上で、即ち感染の検出力を落とさない範囲で、ウイルスに感染していないファイルを感染していると誤認しないように最善の努力をすることも重要です。そして、このような努力をしたとしても、誤認の可能性があるのも事実です。

 ですから、マカフィー・ジェード株式会社が最善の努力をしていたとしたら (そうしているのかどうかはこの記事の最後に取り上げます)、同社も被害者だといえるように思います。悪いのは、ウイルスを開発している犯人、クラッカーたちだということになります。

 落語に出てくる三方一両損とは、三人とも一両ずつ損をして丸く治めた名裁きの話ですが、今回のウイルス誤認事件も登場したみんなが被害者だということで、笑って丸く治めることもできるかもしれません。しかし、それでは表面的で深みがなく面白くありません。そこで、社会的な面と技術的な面から、もう少し深く掘り下げてみたいと思います。


3.社会的な観点からウイルス誤認事件を考えると

 今回の誤認事件は、サリン製造のぬれぎぬをきせられた会社員にたとえるよりも、某証券会社や某銀行で話題に上っている総会屋に絡む問題にたとえた方がぴったりすることに気づきました。

 日本では、株主総会での活発な質問や意見交換を悪いとする考え方があるために、株主の権利を守るための株主総会の機能が働かなくなっています。株主総会はシャンシャンと手をたたいて 10分程度で終わりになるのが理想だという変な常識ができていますから、株主総会で質問したりすると総会屋と間違えられて変な目で見られることになります。

 良く考えてみると、一般の人々のこのような常識が、総会屋を生む温床にもなっているのではないでしょうか。もしも、株主総会での活発な質問や意見交換を良いとするのが常識ならば、変な形の株主総会対策は不要なはずなのですから。

 本来であれば、株主総会は株主たちと経営陣が丁々発止と意見を交換する場であり、そうすることで株主の権利を守るというのが本来の機能です。ですから株主総会ではいろいろな質問や意見が出るのが正常であって、株主たちから何の発言もないようでは、株主総会の機能が働いていないと言わざるを得ません。

 したがって、株主の発言を封じるような事前工作は一切必要ないはずです (某証券会社や某銀行のように何か不味い点があれば別ですが)。むしろ、シャンシャン型の株主総会を行っている会社の方こそ、何かおかしいところがあると考えるべきではないでしょうか? そして、こう考えることが常識だという形にしたいものです。そうすれば、世間一般の目を気にするための株主総会対策など必要なくなります。

 総会屋に対する取締まりが厳しくなる前は、某証券会社や某銀行のような不祥事がなくても、総会屋の発言を封じるためだけに、総会屋に利益を与えていたりしたようです。こんな悪習はなくしたいものです。

 ここで、今回のウイルス誤認事件を振り返ってみましょう。

 もしも、マカフィー・ジェード株式会社がウイルスに感染していないファイルを感染していると誤認しないように最善の努力をしていても、誤認が発生したのであれば、誰が悪いわけでもなく単なる偶然だとみなすような常識を養うようにしたいものです。VB マガジンの読者層は、コンピュータの世界においてレベルが高いと思いますので、このような常識をもっていただけるのではないでしょうか。

 あまりにも潔癖に誤認を発生させないように努めると、変なところに金がかかるようになりますし、総会屋の暗躍する世界を作り出すことにもなりかねません。即ち、VB マガジンの CD-ROM は一切ウイルスだと誤認されることはないようにということを至上命令にしたりとすると、次のようなとんでもないことが発生しかねません。総会屋のような手口を使って、つまり VB マガジンの CD-ROM にウイルスがいると誤認するようなウイルス検出ツールを作成して (でっちあげて)VB マガジンの編集部を脅せば、金になることになります。世間一般の目を気にするための対策には金に糸目を付けないという政策をとると、このような結果が生むことになりかねません。

 ここではっきりさせておきたいことがあります。それは、“ウイルス感染の予防策”に金を使うのか、“ウイルス検出ツールに誤認されないための対策”に金を使うのかということです。

“ウイルス感染の予防策”にある程度金を使うことは、ウイルスというものが存在する現実を考えると致し方ないといえると思います。ウイルス検出ツールの開発には金がかかりますから、そういうツールを販売することは、開発費を大勢で負担するという意味があります。

 ときとして、ウイルス検出ツールベンダはウイルスが存在することで儲けているというような非難がなされることがありますが、これは当たらないと思います。もしもそうなら、医者や製薬会社は非難されることになるからです。

 むしろ、ウイルス検出ツールが販売されているので、コンピュータ社会がウイルスに打ち勝つことのできるシステムになっているのだと考えるべきです。被害の小さなウイルスとウイルス検出ツールが存在することによって、つまりこういうものが存在するシステムであるからこそ、突然とてつもなく恐ろしいウイルスに席巻される可能性を低くしていると考えることができます。いわば、突然の大爆発を防止する安全弁の役割をになっているわけです。

 こういう意味で“ウイルス感染の予防策”にある程度金を使うことはしかたがないと思うのですが、“ウイルス検出ツールに誤認されないための対策”に金を使うことは不要のはずです。やとったガードマンに対して、彼らから脅しを受けないために対策費を払うようなものですから、変な話になります。

 結論としては、総会屋の暗躍を防ぐ最もよい方法は、情報開示だと思います。こうした意味で、(株)翔泳社が今回のウイルス誤認事件に関する情報をインターネットのホームページ (http://www.shoeisha.co.jp/pc/vbm/) などで公開していることは、大変によいことだと思います。

 アプリテック株式会社のホームぺージ (http://www.applitech.co.jp/) にも、今回の誤認事件に関する情報を掲載いたします。因みに、アプリテック株式会社のホームページは、Visual Basic 入門という 140 ページほどの本が無料でダウンロードできることで有名であり毎週 20007000 ヒット (毎週 500 回以上のダウンロードを含む) があります。ですから、ここに掲載することは効果的だと考えます。

 マカフィー・ジェード株式会社のホームページにも、今回の誤認事件に関する情報を掲載していただきたいと思います。

 ところで、悪いのはウイルスを開発している犯人、つまりクラッカーたちだから、そういう犯罪者を捕まえて、なくすことが重要だという意見もあります。

 しかし、インターネットに代表されるボーダレスなサイバースペースでは、一つの国の努力だけでは、この問題をいかんともしがたいといわざるを得ません。

 微力ながら、アプリテック株式会社では、クラッカーになるのではなくコンピュータの世界でブレークスルーを目指すハッカー (誤用される前の意味でのハッカー) になるべきであると考えて、そういう方々が活動しやすい場を提供しています (アプリテック株式会社のホームページを参照してください)。たったこれだけで、クラッカーを減らせるとは思えませんが、何とかしたいという思いだけはあります。


4.技術的な観点からウイルス誤認事件を考えると

 マカフィー・ジェード株式会社の青木様は、ウイルスに感染していないファイルを感染していると誤認することがあったとしても、感染を見落とさないこと (感染の検出力) の方が重要であるとの見解のようですが、果たして

“感染の検出力”と“誤認の可能性”は二者択一的な性質をもっているのでしょうか?

 感染を見落とさないことはもちろん重要です。その上で、即ち感染の検出力を落とさない範囲で、誤認を発生させないように最善の努力をすることも重要なのではないでしょうか?

 今回のウイルス誤認事件では、この辺りを技術的な観点から掘り下げる必要がありそうです。

 ウイルスとは、一種のコンピュータプログラムだといえますが、これは原種と変種に分類することができます。例えば、ウイルススキャンというツールは、1万種もの原種のウイルスを検出するとのことであり、変種を含めると2万種ものウイルスを検出するように作られているとのことです。

 原種とは、一番最初にウイルスとして開発されたプログラム、あるいは一番最初にウイルスとして発見されたプログラムのことです。そして、そのプログラムを一部修正したものが、もしも原種と同様に機能すれば、それは変種だということです。

 VB マガジンの読者の方々ならお分かりだと思いますが、あるプログラムを開発した後で、その一部を変更しても全く同じ機能 (またはほとんど同じ機能) のプログラムにすることができます。そして、皆様の経験からもお分かりの通り、一般にプログラムの変種は無数につくることができます。ウイルスについても同様でありまして、その変種を無数に作ることができるものと思われます。

 ここまでの知識があると、ウイルス検出ツールに二つの機能があり得ることが理解できます。

 発見済みウイルス検出機能 (以下ではD機能と略します):既に発見済みの原種および変種のウイルスを検出する機能。

 未発見変種ウイルス検出機能 (以下ではU機能と略します):既に発見済みの原種に関する未発見の変種ウイルスを検出する機能。

 ここで、この二つの機能 (D機能とU機能) に関して、果たして“感染の検出力”と“誤認の可能性”は二者択一的な性質をもっているのかどうかを考察してみましょう。即ち、“感染の検出力”を落とさずに“誤認の可能性”を低くすることはできないのかを考えてみるわけです。

 まず、 D機能から始めましょう。

 ウイルスの検出は、ウイルスを特徴づけるビットパターンが現われるかどうかで行います。このときに、即ちウイルスだと判断するときに、何ビットの一致をとるのかを考えてみたいと思います。

 当方の計算では 160 ビット (20 バイト) ほどの一致をとれば、誤認の起きる確率が非常に小さくなり、地球上のだれもが誤認を経験しないようにできそうです。しかし、80 ビット (10 バイト) ほどの一致しかとらないと、誤認事件を経験しそうです。

 比較すべきビット列は飛び飛びであることが普通でしょうが、とにかく何ビットの一致をとるかで誤認の確率が決まります (正確にいうとテキストデータのように冗長性が高い場合にはシャノンの情報理論に基づく補正が必要ですが、ここでは省略します)。ですから、十分な長さのビット列の一致をとれば、事実上、誤認をなくすことができるはずです。

 ところで、十分な長さのビット列の一致をとることによって、ウイルス検出の処理速度が落ちるのではないかという懸念がありますが、そうではありません。先ず少ないビット数で比較して、ウイルスの候補を見つけ出してから、十分な長さのビット列の比較をするようにすれば、処理速度をほとんど落とすことはありません。

 一般に感染力をもつプログラム (ウイルス) は、20バイトよりずっと大きいでしょうから、D機能に関しては、“感染の検出力”を落とさずに“誤認の可能性”を十分に低くすることができるはずだと思われます。

 次に、U機能に関して、果たして“感染の検出力”と“誤認の可能性”は二者択一的な性質をもっているのかどうか考えてみましょう。

 一般にウイルスの変種は無数につくることができますから、その全てを検出することは、ほとんど不可能でしょう。そこで、ウイルスを研究して、適当な範囲の変種を検出するようにするものと思われます。

 U機能についても、ウイルスの検出は、ウイルスを特徴づけるビットパターンが現われるかどうかで行うものと思われます。このときに、即ちウイルスだと判断するときに、十分な長さのビット列一致をとらないと誤認事件が発生します。

 マカフィー・ジェード株式会社のウイルス検査では、ファイルの中にウイルスと似通ったパターンがあり感染の疑いがある場合、感染と判断するようにプログラムしているとのことです。ここで似通ったパターンかどうかの判定に十分な長さのビット列一致をとっているかどうかが問題になります。

 十分な長さのビット列一致をとるためには、個々のウイルス研究が必要です。これが不十分だと、似通ったパターンかどうかの判定を適当なところで妥協して“誤認の可能性”を増やすことになるのではないかと思われます。ですから、ウイルスを十分に研究すれば、“感染の検出力”を落とさずに“誤認の可能性”を十分に低くすることができるはずだと考えます。

 結論として、アプリテック株式会社の見解は次のとおりです。

もしも、マカフィー・ジェード株式会社のウイルス検査ツールがD機能だけしか備えていないにもかかわらず、ときどき誤認事件を発生させるのであれば、ウイルス検査ツールの品質に問題があると考えます。

 もしも、マカフィー・ジェード株式会社のウイルス検査ツールがU機能を備えているのであれば、ときどき誤認事件を発生させていることもうなずけます。しかし、この場合は、次の二つの改善策をとることができます。

改善策1:ウイルス研究を充実させて、“感染の検出力”を落とさずに“誤認の可能性”を十分に低くするようにする。

改善策2:マニュアル、ヘルプ、メッセージなどによって、誤認の可能性に関してユーザに十分な説明を行う。

 例えば、ウイルス検出の際のメッセージに、D機能で検出された誤認の可能性の低いウイルスなのか、あるいはU機能で検出された誤認の可能性のあるウイルスなのかを明示するのもよいでしょう。また、U機能で検出された場合に、どの程度の長さのビット列の一致をとっているのかを明示して、誤認の可能性に関する情報を提供するのもよいでしょう。

 一般に、コンピュータに何らかの推定処理をさせるときに、誤認はつきものですから、ユーザにそのことを理解してもらわなければなりません。例えば、アプリテック株式会社が開発した MANDALA という VB のアドオンツールでは、拡張プロパティの自動設定機能をもっていますが、次のメッセージを表示して、ユーザに注意を促しています。

 "表示例を参考にご意向を推測の上、仮の値を設定いたします。ただし、的外れの場合もありますから、仮の設定値のチェックをお願いいたします。"

 マカフィー・ジェード株式会社に対して、以下のご質問をさせていただきます。

質問1:上記のアプリテック株式会社の見解に対して同意していただけますか? それとも何か反論がありますか?

質問2:今回のウイルス誤認事件で、ウッドランド株式会社およびアプリテック株式会社を被害者の一員に含めて、(株)翔泳社に送ったメールと同様のものをいただき、ウッドランド株式会社およびアプリテック株式会社のホームページに掲載させていただけますか。

 アプリテック株式会社では、ウイルスに関する正しい理解のためには、オープンな態度で情報開示を進めることがよいと考えます。


5.大山鳴動してねずみ一匹、いやバグ一匹

 マカフィー・ジェード株式会社から6月7日にウイルススキャン v3.0.0 のご提供を受けました。どうもありがとうございました。

 早速、アプリテック社開発のソフトウェアにウイルスがいるという誤認を発生させてみました。

 調査の結果、以下に述べることが分かりました。そして、アプリテック株式会社としては、これはウイルススキャン v3.0.0 のバグであると判断いたしました。ウイルススキャン v3.0.0 のバグが早急に修正されることを希望します。

 調査の結果判明したこと

 Visual Basic のコードモジュール (bas ファイル) に、全角の“ライブラ”という4文字があると、極めて高い確率で、ウイルスだと誤認されます。ですから、Visual Basic 関係者には、注意が必要です。

 調査の詳細:

 話題のコードモジュール AE_PROC.BAS および AE_RSMR.BAS の共通部分に着目して、どの部分を認識してウイルスだと誤認するのかを調査しました。

 ここで AE_PROC.BAS および AE_RSMR.BAS の中身を見てみましょう。

 AE_PROC.BAS の先頭部分は、次のようになっています。


Attribute VB_Name = "AE_PROC"

Option Explicit

'Copyright 1994-1996 by AppliTech, Inc. All Rights Reserved.

'

'共通ライブラリ1 V4.15

(以下省略)


 また、AE_RSMR.BAS の先頭部分は、次のようになっています。


Attribute VB_Name = "AE_RSMR"

Option Explicit

'Copyright 1994-1996 by AppliTech, Inc. All Rights Reserved.

'

'共通ライブラリ2 V4.15

(以下省略)


 ここで、Visual Basic のコードモジュール (bas ファイル) は、必ず Attribute という文字列で始まることに注目してください。

 調査は、これらの文字列を X という文字に変えたらどうなるかという方法で行いました。その結果、次の形をしていると誤認されることが分かりました。ただし、ファイルのサイズは 512 バイト以上なければなりません。


AttrXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

X

XXXXXライブラXXXXXXXXXX


 別の言い方をすると、Attr という文字列の後ろに 114 バイトの文字列(改行復帰のコードも含めて数えてください) が続き、その後ろに全角の“ライブラ”という4文字があると、ウイルスだと誤認されます。

 「4.技術的な観点からウイルス誤認事件を考えると」で述べたように、ウイルス検出ツールが誤認をしないように設計するには、最低 20 バイトほどの一致を確認することが必要だと思います。そして、比較対象がよくある文字列の場合には、もっと多くのバイトの一致を確認することが必要です。これらは、マカフィー・ジェード株式会社も当然分かっていることだと思います。

 しかるに、12 バイトしか一致が取られていないようですし、そのうちの バイトは Attr というような Visual Basic のコードモジュールでは必ず一致してしまうような比較をしているようです。もしも、マカフィー・ジェード株式会社のウイルススキャンがまともなものであれば、このような間違いはバグとしか考えられません。

 そうです、ウイルス検出ツールにもバグがあり得るのです。ウイルス検出ツールを 100 %信じるのではなく、ときには疑うことも必要だということです。

  Visual Basic ワールドに戻る

  Java ワールドに戻る

 


Copyright © 1997-1998 By AppliTech, Inc. All Rights Reserved.
AppliTech および MANDALA は、アプリテック株式会社の登録商標です。
Visual Basic および Windows は、米国マイクロソフト社の商標です。

      

   AppliTech, Inc. (アプリテック株式会社)

      http://www.applitech.co.jp/

       Fax: (055)973-6824

     E-mail: NAC00245@nifty.ne.jp