バックナンバー   第 259 号2009/04/27(月)   2,058 部発行

[第 54 週] セキュリティ質問箱 (1)

こんにちは、suno です。今週は、第 52 週のアンケート自由記入欄に寄せられたご質問を 1 日 1 つずつ取り上げて、簡単に回答してゆきます。最初に読者の方からの質問を載せますので、解説を読む前に自分なりに答えを考えてみるのもいいかもしれませんね。

何故アンチウィルスソフトを複数入れてはダメ?

今日の質問は、アンチウィルスソフトに関するものです。

パソコンを始めてから 10 年近くなりますが、大したことはしていないので、初心者に毛が生えたくらいの読者です。セキュリティにはいつも関心を払っていて、アップデートは必ず実行しています。

1 つ、質問があります。現在、東京のケーブルテレビのネットを契約して、セキュリティはすべてお任せになっていますが、市販されているセキュリティソフトは使えないことになっています。

なぜ複数のソフトが入ってるとまずいのでしょうか。解説いただければ幸いです。

(男性・60 代)

「初心者に毛が生えたくらい」と謙遜されていますが、各種アップデートを欠かさずに実行しているという点だけで中級者に認定したいくらいです。なかなかいないんですよ、ちゃんとアップデートをしている人って。

ところでこのご質問、プログラムを作ったことのある人なら何となく理解できるかもしれません。あるウィルス A を駆除する際、アンチウィルスソフト X は以下のように処理をするとします。

  1. A の活動を補佐するプログラムが動いているので、それらをすべて止めてから削除する。ひとつでも失敗したら、駆除失敗として終了する。
  2. レジストリ(Windows の設定が書き込まれている領域)を変更し、再起動しても A が活動を始めないようにする。失敗したら、駆除失敗として終了する。
  3. A の活動を止め、A を削除する。失敗したら、駆除失敗として終了する。

すべての項目に「失敗したら……」という処理がついていることに注目してください。アンチウィルスのようなシステムの動作に深くかかわるプログラムは、途中の処理が失敗したらそれ以上処理を進めてはいけません。失敗することがそもそも想定外の異常事態ですので、そこから先の処理を強行したら、ひょっとしたらシステムを壊してしまうかもしれないからです。

でも、たいていは失敗せずに最後まで処理が進み、「ウィルス A を駆除しました」というような報告をしてくるものです。

船頭多くして何とやら

さて、同じウィルス A に対し、別のアンチウィルスソフト Y も X とほぼ同様の手順で駆除を行うとします。ただし、Y は前述の処理を 2→1→3 の順で実行します。

さあ、ウィルス A を X と Y が検出しました。両者一斉にスタート! このとき、Windows の内部で何が起こっているでしょうか?

X が処理 1 を終了し、処理 2 (レジストリの書き換え)へ移ります。ちょうどそのとき Y が処理 2 を実行中だったら、X は処理 2 に失敗します。でも X は Y の存在なんて知りませんから、「レジストリの更新に失敗」として異常終了してしまいます。

こんなケースも考えられます。Y が処理 2 を終え、処理 1 にかかろうとしました。ところが、X がすでに処理 1 を終えているので、削除するべきプログラムがありません。Y は処理 3 を実行せずに異常終了します。

一方、X は X で処理 1 を終えて処理 2 に移りました。ところが、更新するべきレジストリはすでに無害なものになっていますので、X も処理 3 を実行する前に異常終了します。

役者はすべて舞台から下りましたが、処理 3 は手つかずです。


──実際のアンチウィルスソフトはもっとちゃんとしたエラー処理をしているはずですが、ここでは簡略化して説明しました。要は、同じような一連の処理を複数のプログラムが同時に並行して行うと、思いがけない不整合が生じてしまい、その場合の動作は保証されないということです。

複数のアンチウィルスソフトを同時に入れても、安全度が高まるわけではありません。元質問者さんの場合は、プロバイダー任せにしておくしか選択肢がないということですね。

発行人だより

昨日の昼に号外でお知らせしたとおり、アンケートシステムにバグがあり、アンケートを受理できない状態が丸 2 日近く続いていました。自由記入欄にたくさん書いて送信してみたらエラーが出た人もいたと思います。ごめんなさい。

今は正常に動作していますので、もしよければもう一度よろしくお願いします。もちろん、そのエラーに出くわしていない人も、ぜひ。明日いっぱい受け付け中です。