カスペルスキー製品に搭載のエミュレーターテクノロジー

カスペルスキー製品に搭載されているエミュレーターとは何か。アンチウイルス製品がエミュレーターを備えているかどうかが重要である理由とは。

コンピューターウイルスがなぜ単に「ウイルス」と呼ばれているのか、不思議に思ったことはないだろうか。実のところ、やや誤解を招きかねないが、ウイルスという言葉は現在「あらゆるタイプの悪意あるプログラム」または「コンピューターに何らかの悪影響を及ぼすプログラムを表す」のに使われている。ちなみに、引用したのは当社のエンサイクロペディア(英語)にある表現だ。

ただし(引き続きエンサイクロペディアを引用する)、「厳密に言えば、ウイルスとは、プログラムコードのうち、複製して」拡散するものを指す。インフルエンザウイルスなどの生物学的なウイルスがそうであるように。

不思議なことに、そのように定義されたウイルスたちは、何年も前に消滅してしまった。最近の悪意あるプログラムは、複製することはそれほどないが、コンピューターからデータを盗み出したり、データを完全消去したりするという誠に厄介な機能を持っている。トロイの木馬がその一例だ。とはいえ今でも、「コンピューターセキュリティの技術」と聞いて何を思い浮かべるかと尋ねられたら、大方の人は、実験用の白衣化学化学防護服に身を包んだ科学者が試験管を手にして危険物を隔離しようとしている様子を想像するのではないだろうか。実際には、生物学上のウイルスを処理するときにしかそんな場面は必要ないのだが。

つまりこういうことだ。コンピューターウイルスは死滅した。しかし、ウイルスの検知と「駆除」(これもまた微生物学から持ち込まれたおかしな表現だ!)に使用されていた分析の手法は現在も有効であり、開発が続けられている。そして今でも、最新のウイルスマルウェアとの戦いに大きく貢献している。そのような「昔ながらの」テクノロジーの1つに、エミュレーターがある。

簡単に言うと、エミュレーションとは未知の脅威を見つけ出す方法の1つで、疑わしい(普通ではない、異常な)ふるまいのファイルを、現実のコンピューターを模倣した仮想環境(「エミュレートされた」環境)で実行する。そして、そのファイルのふるまいをアンチウイルス製品*が観察し(実行しながらにして。詳しくは後述する)、何らかの危険な動作が見つかった場合は、隔離してさらに調査する。

微生物の方のウイルス学に通じるものがないだろうか。ある特定の疾病にかかっている「可能性のある」患者に対し、その疾病にかかっていない可能性があるというのに、効果は高いが副作用も多い薬を投与する理由はない。まずは体外で同じ状況を作って何が起きるかを確認し、それから適切な薬を投与する方が良い。

主な課題は、微生物学の場合と同様だ。エミュレート環境は、可能な限り現実に近づけることが重要だ。そうでないと、悪意あるファイルはそこがエミュレートされた環境であることに気付き、無害にふるまい続ける可能性がある。

さて、当社はかれこれ何年何十年もエミュレーションを行ってきた。この点においては、一日の長があると自負するところがある。

世界で最初のエミュレーターは、DOS時代の1992年に私自身が開発した。ほどなくして、世界中のエキスパートが当社のアンチウイルス製品の検知率を称賛するようになった(そう、当時はまだ「アンチウイルス」だった)。当社のアンチウイルス製品の検知率が第三者機関によるテストで競合他社に打ち勝つことができた要因の1つは、エミュレーターの存在だ。

時は経ち、脅威の状況は複雑さを増していった。ウイルスは概ね舞台を退き、代わりにネットワークワーム、トロイの木馬などの複雑な厄介者が登場した。一方で、コンピューター、モバイル、IoTなどさまざまなデジタルテクノロジーが興隆し、エミュレーターの性能も向上していった。我々はエミュレーターを当社のセキュリティクラウド「Kaspersky Security Network(KSN)」に適合させ、新しいプログラミング言語を学習させ、新しいブラウザーやその他OSについても対応できるようにした。すべては、これまでに見たことのないタイプのマルウェアを自動で捕捉できるようにするためだ。いんちきな人工知能ではなく、我々がひたすら努力し、頭を使って励んだ末に生まれたのが、HuMachineという本物のイノベーションだ。

現在、この種のテクノロジーを売りにしている競合企業はほとんどないが、それも無理はない。エミュレーションというのは非常に難しい作業で、長年の経験が求められ、「最前線で戦う」製品との統合には時間がかかり、開発を継続的に進める必要もある。しかし、サイバーセキュリティ業界に新規参入する企業の多くは、重要性の低いマーケティングに投資する方を好むらしい。短期的には、そのようなやり方でもある程度ビジネスは拡大するかもしれないが、長期にわたって利用者を欺くことはできない。結局は混乱が生じ、作り話は吹き飛んでしまう。別の言い方をすると、あるサイバーセキュリティ企業が独自のエミュレーターを持っているならば、その企業の専門知識レベルと開発者の成熟度が高いと分かる。逆も真なりで、自社のエミュレーターを持たない企業は専門知識も経験も不足しており、先は長くないだろう。

話が脱線した。

というわけで、我々はエミュレーターの改善を続けてきたわけだが、バリケードの向こう側のサイバー犯罪者も、手をこまねいていたわけではない。彼らもまた、自分たちのビジネスやサイバースパイ活動を守ろうと積極的に取り組み、中には当社のエミュレーターに対抗しようとする者もいる。

非常に高度な攻撃者になると、エミュレーターに対抗するためのさまざまな手段を使用して、「試験管」環境にいることを認識できるようにしている。たとえば、ドキュメント化されていない機能を実行する、プロセッサーのレジスターを変更するリクエストの真正性をチェックする、エラーコードを分析する、メモリ内で特定のコードを探す、「論理爆弾」を使用してエミュレーターを無限ループに陥れる、などの方法がある。マルウェアは何か怪しい気配を感じ取ると、悪意ある機能を緊急停止させ、猫をかぶって無害なふりをする。

何が言いたいかというと、我々は攻撃者たちのそうした戦術を十分に承知しており、常に先を行っている。これらに対応してエミュレーターを調整するだけでなく、他の方法(主にリソース消費を減らすための)でも改良を続けている。たとえば、処理速度の向上を図るために、さまざまなリミッター、オプティマイザー、構成プロファイルを使用している。遅延がBSoD(英語)級になるような条件下では、エミュレーターが完全に無効になってしまうこともあるのだ。

ところで先日、当社の特許関連部門(英語記事)が、エミュレーションに関して朗報をもたらしてくれた。未知のオブジェクトを解明可能なプログラムコードエミュレーターの特許(US10275597。リンク先は英語)を、当社が取得したという知らせだ。私の知る限り、競合製品にはそのような機能がない。マルウェアのエミュレーター対抗技術と戦うには、競合他社の場合、既存のエミュレーター全体を作り直さなければならず、当然ながらそれは短期間でできることではない。対して当社の場合、エミュレーターは稼働したままでローカルなデータベースから更新できるようになっている。実に有益な機能だ。知識は力なり、と言う。そこで、当社がどのような仕組みで利用者の皆さんのセキュリティを保っているのか、お伝えしたいと思った次第だ。

今では、マシンコードではなくソースコードで直接配布されるファイルもある。そうしたファイルをコンピューターで実行するには、インタープリター(JavaScriptやVBAなど)が必要になる。インタープリターは、このコードをマシンが読み取れる言語へとリアルタイムで変換する。そして、ご推察のように、そのようなファイルにはマルウェアが潜んでいることも多い。

こういったタイプの未知の脅威を検知するため、当社は何年も前にプログラムコードのエミュレーターを作成し、ファイルを実行する前に「試験管内で」チェックしている。だが、インタープリター全体をエミュレートするのはリソースへの負荷が高すぎる。スクリプトを使ってWebページを処理する際の待ち時間は、多くのインターネット使用者にとってイライラの原因となるだろう。そのためエミュレーターは通常、パフォーマンス面でも保護の質の面でも許容範囲となるような、妥協できる程度の仮想空間を再作成している。しかし、エミュレーターがコードの中に未知のオブジェクト、メソッド、または関数に遭遇した場合、そしてファイルを本格的に分析するためにこれら未知のものを解明することが絶対に欠かせない場合は、どうなるのだろうか。

我々はまた別の方法でこの問題を解決した。そうしたオブジェクトのエミュレート方法をすばやく学習できる、「スマートな」インタープリターの力を借りたのだ。KSNクラウド経由でアップデートが行われる間、製品は分析中のオブジェクトの言語(JavaScript、VBA、VB Script、AutoIt…)で記述された補助コードを受信し、この新情報を携えてファイルのチェックに戻る。補助コードをまだ受信していない場合には、タスクが当社のアナリストへ自動送信され、アナリストがコードを作成して即座にデータベースに追加する。

こうして利用者は、強力なだけでなく非常に高速な、サイバー脅威に迅速に対応できるテクノロジーを自在に活用できるようになる。エミュレーター全体が再リリースされるのを待つ必要はないのだ。

* 「アンチウイルス」とは、コンピューターウイルス時代の古語の1つである。現代のアンチウイルス製品は、ウイルスから保護するだけではなく、あらゆる種類のマルウェアに対抗する。そして、このほかにも便利なセキュリティ機能を多数備えている。たとえば、パスワードマネージャーVPNペアレンタルコントロールバックアップなどがある。したがって、より正確には、優れた「アンチウイルス製品」は、「あれもこれも、あらゆるものを撃退し、私と、家族と、私たちが持っているすべてのデバイスと、すべてのデータを保護してくれて、あらゆるオプション機能を備えたもの」と呼ばれるべきなのである。あまり呼びやすい名前ではないが。

ヒント