「セキュリティに100%はない」――。確かにそうなのだけれど,最近の状況を取材していると,とても悲観的にならざるを得ない。

 従来は,「ウイルス対策ソフトを入れ,パターン・ファイルを常に新しいものに更新しておき,OSなどのセキュリティ・ホールをふさぐパッチをきちんと当てておけば,まず安心」と言ってもいい状況だったように筆者は感じている。それが最近では,こうした対策を施してもセキュリティを守れないケースが多く見られる。その要因の一つが「ゼロデイ攻撃」の増加だ。

新しい手法で未知のウイルスに挑む

 ゼロデイ攻撃とは,「OSやアプリケーションのセキュリティ・ホールを修正するパッチが提供されるより前に,実際にそのホールを突いて攻撃が行われたり,悪用する不正プログラムが出現している状態」を表す言葉だ(解説記事)。つまり,不正プログラム(ウイルス)がウイルス対策ソフトにとって未知のものなので,従来のウイルス対策ソフトが使ってきた「パターン・マッチング」では検出できず,そのまま感染してしまうというわけだ。

 しかも最近のウイルスは深く静かに活動するので,ユーザーが「ウイルスに感染した」と気づかないケースも多くなっている。そうなると,ウイルス対策ソフト・ベンダーにそのウイルスの情報が集まりにくくなり,パターン・ファイルに新しいウイルスの情報を反映しにくいという状況になっている。

 検査対象とパターン・ファイルをつき合わせてウイルスを検出するパターン・マッチングでは,未知のウイルスを検出できない。そこで,ウイルス対策ソフト・ベンダーでは,パターン・マッチングに加えて,未知のウイルスを検出するための新しい手法を製品に取り込み始めた。

 その一つが「ヒューリスティック法」と呼ばれる手法だ。

 ヒューリスティック法は,「ウイルスの特徴的なコード」ではなく,「ウイルスがとるであろう処理のコード」をあらかじめリスト・アップしておき,検査対象とつき合わせてウイルスを見つける手法である。「ウイルスがとるであろう処理」とは,例えば「システム領域を書き換える」といったもの。通常のソフトウエアにはないウイルス特有の動作をリストとして持っていれば,そうした動きが記述されているソフトは“怪しい”と見抜ける。複雑な処理でも,それをルール化して重み付けができれば,ヒューリスティック法の対象にできる。

 ただ,ヒューリスティック法にも“穴”がある。例えば,プログラム部分を暗号化しておけば,コードを直接チェックできなくなるので,未知のウイルスを検出するのが難しくなる。そこで,ウイルス対策ソフト・ベンダーは,さらに「ビヘイビア法」と呼ばれる手法を使い,ヒューリスティック法の不備を補う。

 ビヘイビア法とは,検査対象のプログラムを実際に動かしてその動きを監視し,ウイルスを見つけ出す手法である。「動的ヒューリスティック法」と呼ばれることもある(その場合は,前述の手法を「静的ヒューリスティック法」と呼ぶ)。大きく二つの方法――危険な動作を検出した時点で実行を停止する方法と,仮想環境や保護された領域(サンドボックスと呼ばれる)を用意してその中で検査対象のプログラムを起動して危険な動作を検出する方法――がある。どちらも,クライアント・パソコンのCPUに負荷がかかるが,さまざまなウイルスに対応できる。

 ビヘイビア法を使えば,暗号化されて送られてきた未知のウイルスであっても,例えば「システム領域を書き換える」という動作を見つけて検出できるようになる。一つのウイルスからさまざまな手法で作り出された“亜種”も,それぞれの亜種をパターン・ファイルに反映しなくても一網打尽にできる。スクリプトを悪用した脅威(関連記事:「ブラウザはどんどん使いづらくなる」)に対しても,例えば「キャッシュされた情報をサーチする処理」や「キャッシュされた情報を外部サイトへ送信する処理」などを見つけて停止させることで有効な防御策になる可能性もある。

ウイルス対策のためにパソコンを買い換えますか?

 ヒューリスティック法にしろビヘイビア法にしろ,完成度の面でいえばまだまだ満足できる水準にはない。「プログラミング言語Delphiで開発する際によく使われるコードを疑わしいパターンとして検知するものもある」(ウェブルート・ソフトウェアの野々下 幸治さん)ほどだ。

 それでも筆者は,これらの機能に期待できそうな感触を得た。ようやく悲観的な暗い気持ちを幾分晴らすことができたのである。

 もちろん,セキュリティは“いたちごっこ”の世界なので,新たな対策技術が登場するとそれを回避する機能を備えた新しいウイルスが登場するだろう。しかし,原理的に見れば,こうした新しい対策手法によって,未知のウイルスを使ったゼロデイ攻撃でも防御できるようになる。ウイルス対策ソフトを止めてから活動するウイルスもすでに登場しているが,こうしたウイルスにしても「ウイルス対策ソフトを止める」というプログラム・コードや実際の動作から検出可能になるはずだ。

 ただ,こうした手法に関して別の懸念が頭をよぎった。

 複雑な処理を組み合わせて姿を隠そうとする未知のウイルスを検出するには,その複雑な処理を後追いし,複雑なロジックを使ってウイルスかどうかを判定するといった処理が求められる。外から取り込んだファイルやプログラムすべてに対して,こうした複雑な処理を行うとなると,「大きなCPUパワーが必要になるのではないか」という懸念だ。

 これまで見てきたようなウイルス検出手法を盛り込んだシマンテックの新製品「Norton 360」では,「300MHz以上のプロセッサ,256Mバイト以上のRAM,300Mバイト以上のハードディスク容量」という要件を示しているが,今後もこのレベルの能力で満足できるかどうかは疑問だ。機能的には問題なくても,体感速度が著しく低下し,「使い物にならない」と感じるようになる可能性もある。

 では,ウイルス対策のために高速のパソコンに買い換えるかどうかとなると,ちょっと疑問だ。多くの企業ユーザーがWindowsの新バージョン「Vista」への移行を躊躇(ちゅうちょ)しているのも,ハードウエアへの投資が大きな負担になるのが理由と思われる。「セキュリティは重要」とはわかっていても,パソコンの買い換えを決断するまでになるのだろうか。

 「ウイルス対策」について考えると,理不尽に感じることが多い。

 「ウイルス」という負の存在がなければ,ウイルス対策に多くのパワーを注いでいる優秀なソフトウエア技術者の能力をもっと別な方向に向けることが可能になる。そうなれば,新しい創造的なソフトウエアが登場していたかもしれない。今後は,ソフトウエア開発のマンパワーに加えて,膨大なCPUパワーまでもウイルス対策に費やされることになりかねない。

 「せっかくCPUが高速のパソコンを購入したのに,その能力の大半をウイルス対策に費やすのか?」――。釈然としないものを感じながらも,「このご時世ではそれも致し方ない」と達観するしかない時代が来るのだろうか。