アンチウイルスソフトは意味がない

タイトルの通りである。1年くらい昔の話になるが、下記のような記事が公開されている。

「ウイルス対策ソフトは死んだ」発言の真意は?

上記記事の要点を私なりにまとめると、「ウイルス定義ファイルのデータベースにマッチするか否かというパターンマッチ型の対策ソフトは、ウイルスに微小な変更を加えてしまえば簡単にすり抜けることができてしまう。であるから、ウイルス対策ソフトの検知率で良し悪しを比較するのは意味がない。ソフトウェアの振る舞いからヒューリスティックに判断する機能が今後重要になる」という事である。

これは私はずっと昔から思ってきたことで、完全に同意する。そもそもウイルス定義ファイルのパターンマッチとはどのような仕掛けで行っているのか。世の中に出回っているウイルスの数は膨大だし、PCの中にあるファイルの数も膨大だ。バイナリレベルで類似度を検索するようなアルゴリズムでは動作が重すぎるし、パターンファイルの容量もとんでもなく大きくなってしまうだろう。であるから、せいぜいファイルのハッシュ値を求めてそれとマッチするかどうかという程度の仕組みであることが推察される。もう少し高度なことをやっているとは思うが、基本はその程度だろう。

で、あれば、バイナリファイルやコードに多少手を加えれば簡単にそれを潜り抜けることができる。私がもしどこかのコンピュータに対してクラッキング(ハッキング)を試みるならば、そのようにするか、もしくは自分で一からコードをくみ上げる。その様にして作成したウイルスは、パターンマッチ型の方法で検知を試みる限り、アンチウイルスソフトのベンダーがウイルスを入手して解析するまでの間自由に活動できてしまう。

しかしヒューリスティックな方法で対処するのであれば、ある程度これを防げるかもしれない。たとえば、私がコンピュータウイルスをとある企業の従業員のPCに潜り込ませ、そのPCに入っているドキュメントデータを抜き出して踏み台に良く用いられるようなセキュリティの緩いサーバに送信しようとしたとする。すると、アンチウイルスソフトが内部に持っている「攻撃サイトに良く用いられられるサーバー」のリストへ合致するサーバーに通信を行おうとしていると判断、これをブロックする…というようなことも可能であろう。

それでも完全とまでは言えない。結局、これも「攻撃に良く用いられる方法」とのパターンマッチであるからだ。新しい攻撃方法を用いればそれが検出される可能性は低い。結局、イタチごっこになるのだが、それでもパターンマッチ方式よりはマシと言える。

もちろん、パターンマッチ方式も既存のウィルスに対処すると言う意味では有効である。無いよりはあった方が良い。しかし、パターンマッチしか行わないようなアンチウイルスソフト、もしくはヒューリスティックなを使っているのであれば、早期にリプレースを考えたほうが良いだろう。

私の会社ではパターンマッチ方式のアンチウイルスソフトを使用しており、コイツが非常に重い。カーネルに組み込んだパターンマッチ処理もシングルスレッドで行っているらしく、ここがディスクアクセスのボトルネックとなる。つまりディスクアクセスがCPUのシングルスレッド処理速度依存となる。さらに毎日12時にフルスキャンがかかるものだからたまったものではない。さらに同時にインストールしなければならない資産管理ソフトがPC内の実行ファイルをフルスキャンするので、この時にもアンチウィルスソフトが一々介入してくることになる。

少し重いIDEが立ち上がるまでに10分以上かかることがある有様だ。このような状態では明らかに労働生産性に影響がある。

経営の視点からも、このような不合理なスケジューリングはやめ、もっと高性能で現代的なアンチウィルスソフトに切り替えるべきだと思うが、それを指摘する人は誰も無い。私がためしに指摘したところ、「もしフルスキャンスケジュールをやめて何かあったら責任が取れない」と言われた。

日本の昔ながらの大企業ではこういう発想のところが多いように思う。少しでもリスクが軽減するのならばある程度の犠牲には目をつぶるという極端なゼロリスク思想は日本人のあらゆる行動に見られる。大事なのは、その犠牲がリスクの軽減度合と見合っているかどうかの判断を行うことであると思うが、いかがだろうか。