一般的に、マルウェアからの保護はシグネチャによる検知次第だとされています。しかし、悪意あるソフトウェアの検知は、アンチウイルスというコインの片面でしかありません。むしろ、シグネチャベースの検知(拒否リスト方式の一形態と言えます)は、そのコインの劣っている方の面だと言う人もいます。その裏側にあるのが許可リスト方式で、危険なソフトウェアをブロックするのとは対照的に、安全なソフトウェアを事前に承認するという方式になります。
拒否リスト方式とは
拒否リスト方式については、Kaspersky LabのKaspersky Security Networkという技術を例にして説明したいと思います。一部のカスペルスキー製品では、インストールするときに、Kaspersky Security Networkに参加するかどうかを確認されます。参加を選んだ場合、サイバーセキュリティ関連情報を処理する専用の分散型インフラストラクチャに、自分のマシンが組み込まれます。たとえば、インドでKaspersky Security Networkに参加した人が新種のマルウェアに感染したとしましょう。Kaspersky Labはそのマルウェアを検知するためのシグネチャを作成し、シグネチャをデータベースに追加して、他のカスペルスキーユーザーが同じマルウェアに感染しないようにします。
拒否リスト方式の仕組みを簡単に説明しました。有害なプログラムのリストを作成し、それをユーザーのコンピューターに近づけないようにしているということです。拒否リスト方式は、毎年新たに出現する悪意あるソフトウェアファミリーが10,000程度にすぎないのであれば99.9%の効果を発揮できれば十分です。しかし、毎年10,000,000ものマルウェアファミリーが新たに出現するとなると、99.9%では十分とは言えません。
許可リスト方式とは
許可リスト方式の仕組みについても、Kaspersky Labの技術と業界用語を例に説明します。ここではKaspersky Labで「デフォルト拒否」と呼ばれている処理についてお話しします。デフォルト拒否の原則では、明示的に許可されたアプリケーションとソフトウェア以外は、すべて既定でブロックされます。これが事前に承認されたアプリケーションの許可リストです。
しかし、問題もあります。このようなデフォルト拒否型の許可リスト方式は、主に企業環境で利用されており、企業では本社のIT部門に強い権限があるため、ユーザーが必要とするアプリを使えない場合もあります。一部のアプリは仕事に必要で、他はすべて無視する、と言うのは比較的簡単です。それに、企業の環境では、承認されたアプリのリストはそれほど頻繁に変更されるわけではありません。しかし個人ユーザーの場合は、明らかな落とし穴があります。つまり、そのときどきで具体的に何が必要になるか、何が欲しくなるのか、なかなかわからないのです。
実行アプリケーションの制限によるデフォルト拒否
もちろん、Kaspersky Labのリサーチャーは、デフォルト拒否の原則を個人ユーザーの環境にも適用する方法を考え出しました。それが「実行アプリケーションの制限」という技術です。
簡単に言うと、実行アプリケーションの制限とは、随時更新されるアプリケーションの許可リストであり、その信頼度の判定基準は、Kaspersky Security Networkで収集された膨大なデータに照らしてテストされています。
つまり、当社の個人ユーザー向けのダイナミック許可リストは、既存のアプリケーションに関する情報が絶えず更新される巨大なナレッジベースなのです。このデータベースには、およそ10億種類のファイルに関する情報が登録されており、人気アプリケーションの大多数がカバーされています。オフィススイート、ブラウザー、画像閲覧アプリなど、一般の人が思いつくものはほとんど網羅しています。
約450社のパートナー(主にソフトウェア開発企業)から情報が提供され、ベンダーが作成した更新の内容をリリース前に把握できるため、このデータベースで誤検知が発生する可能性を最小限に抑えられます。
信頼の連鎖
では、当社が把握していないアプリケーションはどうなのでしょうか?一部のアプリやプロセスは新しいアプリケーションを作成することがありますが、当社の許可リストに、こうしたプログラムの情報を1つ残らず登録することはできません。たとえば、プログラムは更新をダウンロードするために特殊なモジュールを起動する場合があり、そのモジュールがソフトウェアベンダーのサーバーに接続して、プログラムの新しいバージョンをダウンロードします。この更新モジュールは、実際のところ元のプログラムが作成した新しいアプリケーションであり、許可リストデータベースにデータがない可能性があります。しかし、このアプリケーションは、信頼できるプログラムによって作成され、起動されたため、信頼できるアプリケーションと見なされます。この仕組みを「信頼の連鎖」といいます。
同様に、自動でダウンロードされた更新と元のアプリに、許可リストが認識できないような違いがある場合、デジタル署名や証明書の検証といった2つめの手段によってその更新が承認されます。アプリに予想外の変更があり、署名もされていない場合は、3つめの安全装置が働きます。この場合、信頼の連鎖によって、ダウンロード元のドメインが信頼するドメインのリスト(ほとんどは著名ソフトウェアベンダーのドメイン)と照合されます。ドメインを信頼できるなら、新しいアプリも信頼できるというわけです。一度でもマルウェアの配信に使われたドメインは、信頼の連鎖から外されます。
最後に大事なことを
皆さんもよくご存知のように、攻撃者はセキュリティ企業がやることをほとんどわかっています。それが理由の1つなのですが、攻撃者はしばしば人気プログラムのぜい弱性を探し出してエクスプロイトを作成し、信頼できるプログラムに悪意ある動作を実行させることによって、まさにここで紹介したような保護手段を回避しようとします。
その対策として、当社のリサーチャーは「セキュリティ回廊」というシステムを開発しました。セキュリティ回廊はダイナミック許可リストを補完するもので、承認されたソフトウェアやアプリケーションに、本来実行すべきアクション以外を実行させないようにします。
Kaspersky Labの許可リストおよびクラウドインフラストラクチャの調査チームにいるアンドレイ・ラディコフは「たとえば、ブラウザーの動作ロジックは、ウェブページを表示したりファイルをダウンロードしたりすることです。システムファイルやディスクセクターの変更などのアクションは、本来のブラウザーの動作とは異なるものです。テキストエディターはディスク上のテキスト文書を開いたり、保存するよう設計されていますが、新しいアプリケーションをディスクに保存したり、アプリケーションを起動するようには設計されていません」と説明しています。
そのため、お気に入りの画像編集アプリケーションがマイクを使用しようとした場合、このアプリケーションにフラグが設定されます。
どんなコンピューターが保護されるのか?
このダイナミック許可リスト技術は、誰でも利用できるわけではありません。このレベルの保護を利用できるのは、カスペルスキーインターネットセキュリティ(カスペルスキー 2015 マルチプラットフォームセキュリティのWindows対応プログラム)のユーザーだけです。
関連資料
当社のリサーチャーは、許可リスト方式についてさらに3つの技術記事を執筆しました(その1、その2、その3)。より詳しい内容にご興味のある場合は、これらの記事をご参照ください。