(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションが疑わしい挙動を示していることを前記モニターされたシステム挙動が示す場合には、前記アプリケーションの前記評判は変更される、請求項1に記載の方法。
前記アプリケーションを実行する複数のクライアントから受信したモニターされたシステム挙動に基づいて、前記アプリケーションの前記評判は変更される、請求項1に記載の方法。
前記アプリケーションに対する前記ルールは、前記アプリケーションが、隔離するもの、特定のクライアントリソースにアクセスすることを防止するもの、仮想クライアントで実行するもの、クライアントリソースへの完全なアクセスを許可するもの、のうちの1つであることを示す、請求項1に記載の方法。
前記システム挙動をモニターするステップは、無許可のシステム・リソース・アクセス、システム・オペレーティング・システムに対する無許可の書き込み、セキュリティアプリケーションの終了、および無許可のネットワーク活動についてモニターするステップの少なくとも1つを含む、請求項12に記載の方法。
前記割り当てられた評判が前記アプリケーションは信頼できるものであることを示す場合には、前記システム挙動は第1の頻度でモニターされ、前記変更された評判が前記アプリケーションは信頼できるものでないことを示す場合には、前記システム挙動は前記第1の頻度より高い第2の頻度でモニターされる、請求項12に記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0003】
上記を考慮すると、従来のセキュリティ脆弱性検出と関係する重大な問題および欠点があり得ることが理解できる。
【課題を解決するための手段】
【0004】
セキュリティ脆弱性を検出するための技術が開示される。1つの特定の実施形態では、本技術は、評判をアプリケーションに割り当てるステップと、評判をクライアントに配信するステップと、アプリケーションを実行するクライアントに関するモニターされたシステム挙動をクライアントから受信するステップと、モニターされたシステム挙動に基づいて、アプリケーションの評判を変更するか否かを決定するステップと、クライアントに変更された評判を配信するするステップと、クライアントからさらにモニターされたシステム挙動を受信するステップと、クライアントから受信したモニターされたシステム挙動に基づいて、アプリケーションに対するルールを生成するか否かを決定するステップと、を含むセキュリティ脆弱性を検出する方法として実現することができる。
【0005】
この特定の実施形態の他の態様によれば、評判は、アプリケーションが信頼できるもの、中立なもの、疑わしいもの、および悪意のあるもの、のうちの1つであるか否かを示す。
【0006】
この特定の実施形態の他の態様によれば、アプリケーションは、既知の実体からの新規なアプリケーションである。
【0007】
この特定の実施形態の他の態様によれば、アプリケーションの評判は、既知の実体に基づいて割り当てられる。
【0008】
この特定の実施形態の他の態様によれば、アプリケーションは、受信した評判に基づいてクライアントにおいて実行される。
【0009】
この特定の実施形態の他の態様によれば、アプリケーションが疑わしい挙動を示していることをモニターされたシステム挙動が示す場合には、アプリケーションの評判は変更される。
【0010】
この特定の実施形態の他の態様によれば、アプリケーションを実行する複数のクライアントから受信したモニターされたシステム挙動に基づいて、アプリケーションの評判は変更される。
【0011】
この特定の実施形態の他の態様によれば、モニターされたシステム挙動は、クライアントシステムおよびクライアントにおいて実行されているアプリケーションの挙動に関する詳細情報を含む。
【0012】
この特定の実施形態の他の態様によれば、アプリケーションに対するルールは、アプリケーションが、隔離するもの、特定のクライアントリソースにアクセスすることを防止するもの、仮想クライアントで実行するもの、クライアントリソースへの完全なアクセスを許可するもの、のうちの1つであることを示す。
【0013】
この特定の実施形態の更なる態様によれば、本方法は、アプリケーション対する生成されたルールをクライアントに送信するステップを含む。
【0014】
別の特定の実施形態では、本技術は、評判をアプリケーションに割り当てるステップと、評判をクライアントに配信するステップと、アプリケーションを実行するクライアントに関するモニターされたシステム挙動をクライアントから受信するステップと、モニターされたシステム挙動に基づいて、アプリケーションの評判を変更するか否かを決定するステップと、クライアントに変更された評判を配信するステップと、クライアントからさらにモニターされたシステム挙動を受信するステップと、クライアントから受信したモニターされたシステム挙動に基づいて、アプリケーションに対するルールを生成するか否かを決定するステップと、を含む方法を実行するためのコンピュータプロセスを実行するように少なくとも1つのプロセッサに命令するために、少なくとも1つのプロセッサによって読み取り可能であるように構成される命令のコンピュータプログラムを記憶する、少なくとも1つの非一時的プロセッサ読み取り可能記憶媒体として実現することができる。
【0015】
別の特定の実施形態では、本技術は、評判をアプリケーションに割り当てるステップと、割り当てられた評判に基づいてアプリケーションを実行するステップと、アプリケーションを実行する間に、システム挙動をモニターするステップと、モニターされたシステム挙動をバックエンドシステムに報告するステップと、アプリケーションについての変更された評判がバックエンドシステムから受信されたか否かを決定するステップと、変更された評判に基づいてシステム挙動をモニターするステップと、モニターされたシステム挙動をバックエンドシステムに送信するステップと、アプリケーションに対する新規なルールがバックエンドシステムから受信されたか否かを決定するステップと、を含む、セキュリティ脆弱性を検出する方法として実現することができる。
【0016】
この特定の実施形態の他の態様によれば、評判は、アプリケーションのインストール中に、アプリケーションの挙動に基づいてアプリケーションに割り当てられる。
【0017】
この特定の実施形態の付加的な態様によれば、システム挙動をモニターするステップは、無許可のシステム・リソース・アクセス、システム・オペレーティング・システムに対する無許可の書き込み、セキュリティアプリケーションの終了、および無許可のネットワーク活動についてモニターするステップの少なくとも1つを含む。
【0018】
この特定の実施形態の付加的な態様によれば、システム挙動は、ヒューリスティックに基づいて、既知の疑わしいおよび悪意のある挙動についてモニターされる。
【0019】
この特定の実施形態の付加的な態様によれば、割り当てられた評判がアプリケーションは信頼できるものであることを示す場合には、システム挙動は第1の頻度でモニターされ、変更された評判がアプリケーションは信頼できるものでないことを示す場合には、システム挙動は第1の頻度より高い第2の頻度でモニターされる。
【0020】
この特定の実施形態の付加的な態様によれば、疑わしいシステム挙動が検出された場合には、アプリケーションの実行は、信頼されている割り当てられた評判に従って継続される。
【0021】
この特定の実施形態の更なる態様によれば、本方法は、受信したルールに基づいてアプリケーションを実行するステップを含む。
【0022】
別の特定の実施形態では、本技術は、評判をアプリケーションに割り当てるステップと、割り当てられた評判に基づいてアプリケーションを実行するステップと、アプリケーションを実行する間に、システム挙動をモニターするステップと、モニターされたシステム挙動をバックエンドシステムに報告するステップと、アプリケーションについての変更された評判がバックエンドシステムから受信されたか否かを決定するステップと、変更された評判に基づいてシステム挙動をモニターするステップと、モニターされたシステム挙動をバックエンドシステムに送信するステップと、アプリケーションに対する新規なルールがバックエンドシステムから受信されたか否かを決定するステップと、を含む方法を実行するためのコンピュータプロセスを実行するように少なくとも1つのプロセッサに命令するために、少なくとも1つのプロセッサによって読み取り可能であるように構成される命令のコンピュータプログラムを記憶する、少なくとも1つの非一時的プロセッサ読み取り可能記憶媒体として実現することができる。
【0023】
別の特定の実施形態では、本技術は、ネットワークに通信可能に連結される1つまたは複数のプロセッサを含むセキュリティ脆弱性を検出するためのシステムとして実現することができ、1つまたは複数のプロセッサは、評判をアプリケーションに割り当て、評判をクライアントに配信し、アプリケーションを実行するクライアントに関するモニターされたシステム挙動をクライアントから受信し、モニターされたシステム挙動に基づいて、アプリケーションの評判を変更するか否かを決定し、クライアントに変更された評判を配信し、クライアントからさらにモニターされたシステム挙動を受信し、クライアントから受信したモニターされたシステム挙動に基づいて、アプリケーションに対するルールを生成するか否かを決定するように構成される。
【発明を実施するための形態】
【0025】
図1は、本開示の実施形態による、セキュリティ脆弱性を検出するためのネットワークアーキテクチャを示すブロック図である。
【0026】
図1は、ネットワークアーキテクチャ100の簡略図であり、図中に示されていない付加的な要素を含んでもよい。ネットワークアーキテクチャ100は、クライアントシステム110、120および130、ならびにサーバー140Aおよび140B(これらの各々の1つまたは複数は
図2に示すコンピュータシステム200を用いて実現されてもよい)を含んでもよい。クライアントシステム110、120および130は、ネットワーク150に通信可能に連結することができる。サーバー140Aは、記憶装置160A(1)〜(N)と通信可能に連結されてもよく、サーバー140Bは、記憶装置160B(1)〜(N)と通信可能に連結されてもよい。クライアントシステム110、120および130は、セキュリティ脆弱性検出モジュール(例えば、セキュリティ脆弱性検出モジュール300)を含んでもよい。さらに、サーバー140Aおよび140Bは、セキュリティ脆弱性検出モジュール(例えば、セキュリティ脆弱性検出モジュール300)を含んでもよい。サーバー140Aおよび140Bは、SAN(ストレージ・エリア・ネットワーク)ファブリック170と通信可能に連結することができる。SANファブリック170は、サーバー140Aおよび140B、ならびにネットワーク150を介してクライアントシステム110、120および130により、記憶装置180(1)〜(N)へのアクセスをサポートすることができる。
【0027】
図2のコンピュータシステム200を参照すると、モデム247、ネットワークインターフェース248、またはいくつかの他の方法により、1つもしくは複数のクライアントシステム110、120および130からネットワーク150への接続を提供することができる。クライアントシステム110、120および130は、例えば、ウェブブラウザまたは他のクライアントソフトウェア(図示せず)を用いて、サーバー140Aおよび140Bの情報にアクセスすることができる。このようなクライアントにより、クライアントシステム110、120および130は、サーバー140Aおよび140B、または記憶装置160A(1)〜(N)、160B(1)〜(N)、および/もしくは180(1)〜(N)のいずれかによりホストされるデータにアクセスすることが可能になる。いくつかの実施形態では、クライアントシステム110、120および130は、クライアントシステムをコンピュータウイルスおよび/またはマルウェアから保護するために、それに実装されるセキュリティエージェントを有することができ、サーバー140Aに実装されたバックエンド防護システムと通信することができる。
【0028】
ネットワーク150および190は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、セルラーネットワーク、衛星ネットワーク、またはクライアント110、120および130、サーバー140、ならびにネットワーク150および190と通信可能に連結されるその他のデバイスとの間の通信を可能にするその他のネットワークであってもよい。ネットワーク150および190は、スタンドアロンネットワークとして、または互いに協働して作動する、1つまたは任意の数の、上述した例示的なタイプのネットワークをさらに含むことができる。ネットワーク150および190は、それらが通信可能に連結される1つもしくは複数のクライアントまたはサーバーの1つもしくは複数のプロトコルを利用することができる。ネットワーク150および190は、ネットワークデバイスの1つまたは複数のプロトコルに、その他のプロトコルからまたはその他のプロトコルへ変換することができる。ネットワーク150および190は、それぞれ1つのネットワークとして示されているが、1つまたは複数の実施形態によれば、ネットワーク150および190は、それぞれ相互接続された複数のネットワークを含んでもよいことを理解されたい。
【0029】
記憶装置160A(1)〜(N)、160B(1)〜(N)および/または180(1)〜(N)は、ネットワークアクセス可能なストレージであってもよく、サーバー140Aおよび140Bのいずれか1つに対して、ローカル、リモート、またはこれらの組み合わせであってもよい。記憶装置160A(1)〜(N)、160B(1)〜(N)および/または180(1)〜(N)は、レイド(「RAID」)、磁気テープ、ディスク、ストレージ・エリア・ネットワーク(「SAN」)、インターネット・スモール・コンピュータシステム・インターフェース(「iSCSI」)SAN、ファイバチャネルSAN、コモン・インターネット・ファイル・システム(「CIFS」)、ネットワーク・アタッチト・ストレージ(「NAS」)、ネットワーク・ファイル・システム(「NFS」)、光ベースのストレージ、またはその他のコンピュータアクセス可能なストレージを利用することができる。記憶装置160A(1)〜(N)、160B(1)〜(N)および/または180(1)〜(N)は、バックアップまたはアーカイブの目的で使用することができる。例えば、記憶装置160A(1)〜(N)から複製されるデータを記憶するために、記憶装置160B(1)〜(N)および/または180(1)〜(N)を用いてもよい。
【0030】
いくつかの実施形態によれば、クライアント110、120および130は、ネットワーク150への無線または有線接続を介して連結される、スマートフォン、PDA、デスクトップコンピュータ、ラップトップコンピュータ、サーバー、その他のコンピュータもしくはコンピューティングデバイス、またはその他のデバイスであってもよい。クライアント110、120および130は、ユーザー入力、データベース、ファイル、ウェブサービス、および/またはアプリケーション・プログラミング・インターフェースからデータを受信することができる。
【0031】
サーバー140Aおよび140Bは、アプリケーションサーバー、アーカイブプラットフォーム、バックアップサーバー、ネットワーク記憶装置、メディアサーバー、電子メールサーバー、文書管理プラットフォーム、エンタープライズ・サーチ・サーバー、アンチ・マルウェア/ウイルス・セキュリティ・サーバー、またはネットワーク150と通信可能に連結されたその他のデバイスであってもよい。サーバー140Aおよび140Bは、記憶装置160A(1)〜(N)、160B(1)〜(N)および/または180(1)〜(N)のいずれかをアプリケーションデータ、バックアップデータ、またはその他のデータの記憶のために利用することができる。サーバー140Aおよび140Bは、クライアント110、120および130と、バックアッププラットフォーム、バックアッププロセス、および/または記憶装置との間で送受信されるデータを処理することができる、アプリケーションサーバーなどのホストであってもよい。
【0032】
いくつかの実施形態によれば、サーバー140Aおよび140Bは、データのバックアップおよび/またはアーカイブのために使用されるプラットフォームであってもよい。データの1つまたは複数の部分は、適用されたバックアップポリシーおよび/またはアーカイブ、データソースに関連する属性、バックアップのために利用可能なスペース、データソースにおいて利用可能なスペース、または他の要因に基づいて、バックアップまたはアーカイブされてもよい。さらに、バックアップまたはアーカイブされたデータの1つまたは複数の部分は、フェイルオーバーポリシーに従って特定の事象が発生した際に回復されてもよい。他の実施形態によれば、サーバー140Aおよび140Bは、クライアント110、120および130を含む任意のソースから収集した情報に基づいてセキュリティ脆弱性を識別することができる。その結果、サーバー140Aおよび140Bは、マルウェアおよびウイルスがクライアント110、120および130でセキュリティ脆弱性を利用するのを防止するために、クライアント110、120および130に情報を配信することができる。
【0033】
いくつかの実施形態によれば、クライアント110、120および130は、例えばセキュリティ脆弱性検出モジュール300などのセキュリティ脆弱性を検出するためのソフトウェアの1つまたは複数の部分を含むことができる。さらに、サーバー140Aは、例えばセキュリティ脆弱性検出モジュール300などのセキュリティ脆弱性を検出するためのソフトウェアの1つまたは複数の部分を含むことができる。図示するように、セキュリティ脆弱性検出モジュール300の1つまたは複数の部分は、ネットワークの中心位置に存在してもよい。いくつかの実施形態によれば、ネットワーク190は、外部ネットワークであってもよく(例えば、インターネット)、サーバー140Aは、1つまたは複数の内部構成要素とクライアントと外部ネットワークとの間のゲートウェイまたはファイアウォールであってもよい。いくつかの実施形態によれば、セキュリティ脆弱性検出モジュール300は、クラウドコンピューティング環境の一部として実現することができる。
【0034】
図2は、本開示の実施形態によるコンピュータシステム200のブロック図である。コンピュータシステム200は、本開示に従って技術を実施するのに好適である。コンピュータシステム200は、コンピュータシステム200の主要なサブシステムを相互接続することができるバス212を含むことができ、主要なサブシステムには、中央処理装置214、システムメモリ217(例えば、RAM(ランダム・アクセス・メモリ)、ROM(リード・オンリー・メモリ)、フラッシュRAM等)、入力/出力(I/O)コントローラ218、オーディオ出力インターフェース222を介するスピーカーシステム220などの外部オーディオ装置、ディスプレイアダプタ226を介するディスプレイ画面224などの外部装置、シリアルポート228および230、キーボード232(キーボードコントローラ233を介してインターフェース接続される)、ストレージインターフェース234、フロッピーディスク238(「フロッピー」は登録商標、以下同じ)を受けるために動作するフロッピーディスクドライブ237、ファイバ・チャネル・ネットワーク290と接続するために動作するホスト・バス・アダプタ(HBA)インターフェースカード235A、SCSIバス239と接続するために動作するホスト・バス・アダプタ(HBA)インターフェースカード235B、および光ディスク242を受けるために動作する光ディスクドライブ240等が含まれる。同様に、マウス246(またはシリアルポート228を介してバス212に連結された他のポイントアンドクリックデバイス)、モデム247(シリアルポート230を介してバス212に連結される)、ネットワークインターフェース248(バス212に直接連結される)、電力管理部250、およびバッテリ252が含まれてもよい。
【0035】
バス212は、上述のように、中央処理装置214とシステムメモリ217との間のデータ通信を可能にし、システムメモリ217は、リード・オンリー・メモリ(ROM)またはフラッシュメモリ(いずれも図示せず)と、ランダム・アクセス・メモリ(RAM)(図示せず)とを含んでもよい。RAMは、オペレーティングシステムおよびアプリケーションプログラムがロードされてもよいメインメモリであってもよい。ROMまたはフラッシュメモリは、他のコードと共に、周辺コンポーネンツとの相互作用等の基本的なハードウェアの動作を制御する、ベーシック・インプット/アウトプット・システム(BIOS)を含むことができる。コンピュータシステム200に常駐するアプリケーションは、ハードディスクドライブ(例えば、固定ディスク244)、光学ドライブ(例えば、光学ドライブ240)、フロッピーディスクユニット237、取り外し可能なディスクユニット(例えば、ユニバーサル・シリアル・バス・ドライブ)、またはその他の記憶媒体等の、コンピュータ読み取り可能媒体上に格納されたり、それを介してアクセスしたりすることができる。いくつかの実施形態によれば、セキュリティ脆弱性検出モジュール300は、システムメモリ217に常駐してもよい。
【0036】
ストレージインターフェース234は、コンピュータシステム200のその他のストレージインターフェースと同様に、固定ディスクドライブ244等の、情報の記憶および/または検索のための標準的なコンピュータで読み取り可能な媒体に接続することができる。固定ディスクドライブ244は、コンピュータシステム200の一部であってもよく、独立していて、他のインターフェースシステムを介してアクセスされてもよい。モデム247は、電話回線を介してリモートサーバーへの直接接続を提供してもよく、インターネット・サービス・プロバイダ(ISP)経由でインターネットに接続してもよい。ネットワークインターフェース248は、POP(ポイント・オブ・プレゼンス)を介したインターネットへのダイレクトネットワークリンクを介してリモートサーバーへの直接接続を提供してもよい。ネットワークインターフェース248は、デジタル携帯電話接続、セルラー・デジタル・パケット・データ(CDPD)接続、またはデジタル衛星データ接続等を含む無線技術を用いて、このような接続を提供してもよい。
【0037】
他の多くのデバイスまたはサブシステム(図示せず)も同様の方法で接続することができる(例えば、文書スキャナ、デジタルカメラ等)。逆に、
図2に示されるデバイスの全てが、本開示を実施するために存在する必要はない。デバイスおよびサブシステムは、
図2に示されるものとは異なる手法で相互接続することができる。本開示を実施するためのコードは、システムメモリ217、固定ディスク244、光ディスク242、またはフロッピーディスク238等、コンピュータ読み取り可能記憶媒体のうちの1つまたは複数に格納することができる。本開示を実施するためのコードは、1つまたは複数のインターフェースを介して受け取り、メモリに格納することもできる。コンピュータシステム200に設けられたオペレーティングシステムは、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、OS X(登録商標)、UNIX(登録商標)、Linux(登録商標)、またはその他の周知のオペレーティングシステムでもよい。
【0038】
電力管理部250は、バッテリ252の電力レベルを監視することができる。電力管理部250は、電力レベル、コンピュータシステム200のシャットダウン前残り時間窓、電力消費率、コンピュータシステムが主電源(例えば、AC電源)またはバッテリ電源のいずれを使用しているかの表示器、およびその他電力関連情報の判定を可能にするために、1つまたは複数のAPI(アプリケーション・プログラミング・インターフェース)を提供することができる。いくつかの実施形態によれば、電力管理部250のAPIは、リモートアクセス可能であってもよい(例えば、ネットワーク接続を介して、リモートバックアップ管理モジュールにアクセス可能であってもよい)。いくつかの実施形態によれば、バッテリ252は、コンピュータシステム200のローカルまたはリモートのいずれかに位置する無停電電源装置(UPS)であってもよい。このような実施形態では、電力管理部250は、UPSの電力レベルに関する情報を提供することができる。
【0039】
図3は、本開示の実施形態によるセキュリティ脆弱性検出モジュール300を示す図である。図示するように、セキュリティ脆弱性検出モジュール300は、評判モジュール310、システムおよびアプリケーション監視モジュール320、システムおよびアプリケーション挙動報告モジュール330、システムおよびアプリケーション挙動受信モジュール340、ルール生成モジュール350、アプリケーション制御モジュール360、ならびにユーザーインターフェース370を含む1つまたは複数の構成要素を含むことができる。
【0040】
評判モジュール310は、1つまたは複数のクライアント(例えば、クライアント110、120および130)で実行される1つまたは複数のアプリケーションおよび処理に対する評判を管理することができる。いくつかの実施形態では、評判モジュール310は、複数の要因に基づいてネットワーク内の各クライアントで実行されている各アプリケーションまたは処理に評判を割り当てることができる。例えば、評判モジュール310は、アプリケーションの開発者、アプリケーションの前バージョンの評判、インストール時もしくはその後のアプリケーションの特性もしくは挙動、ホワイトリスト、または他の任意の要因に基づいて、評判をアプリケーションに割り当てることができる。さらに、アプリケーションが疑わしいかまたは悪意のある挙動を示し始めた場合には、評判モジュール310はアプリケーションの評判を修正することができる。この挙動は、ヒューリスティックを用いて、ならびに少なくとも1つのクライアントから報告されたシステムおよびアプリケーションの挙動に基づいて、決定することができる。
【0041】
システムおよびアプリケーション監視モジュール320は、システムおよびクライアントに実行されている各々のアプリケーションもしくは処理の挙動をモニターすることができる。いくつかの実施形態では、システムおよびアプリケーション監視モジュール320は、クライアントにおけるセキュリティエージェントの一部として実装されてもよい。システムおよびアプリケーション監視モジュール320は、クライアントの様々なタイプの挙動をモニターすることができる。例えば、システムおよびアプリケーション監視モジュール320は、クライアントによるシステムディレクトリへの無許可のアクセスもしくは改変、オペレーティングシステムに対する無許可の書き込み、アンチウイルスアプリケーションなどのセキュリティアプリケーションの停止、および悪意のあるネットワーク活動をモニターすることができる。場合によっては、システムおよびアプリケーション監視モジュール320は、報告するべき特定の危険なまたは疑わしい挙動を識別するために、ヒューリスティックを用いてクライアントの挙動をモニターすることができる。
【0042】
システムおよびアプリケーション挙動報告モジュール330は、システムおよびアプリケーション監視モジュール320によってモニターされたシステムおよびアプリケーションの挙動の結果を報告することができる。いくつかの実施形態では、システムおよびアプリケーション挙動報告モジュール330は、クライアント(例えば、クライアント110、120、または130)からバックエンドシステム(例えば、サーバー140A)へ挙動を報告することができる。システムおよびアプリケーション挙動報告モジュール330は、モニターされたシステムおよびアプリケーションの挙動の結果を、クライアントの活動に応じて変化することができる定期的な間隔で、あるいは連続的に、あるいはクライアントの特定の挙動もしくは活動が発生した時に、報告してもよい。
【0043】
システムおよびアプリケーション挙動受信モジュール340は、システムおよびアプリケーション挙動報告モジュール330によって送信されたシステムおよびアプリケーションの挙動の結果を受信することができる。いくつかの実施形態では、システムおよびアプリケーション挙動受信モジュール340は、バックエンドシステム(例えば、サーバー140A)に配置されてもよく、1つまたは複数のクライアント(例えば、クライアント110、120、および130)からシステムおよびアプリケーションの挙動情報を受信するように構成されてもよい。
【0044】
ルール生成モジュール350は、システムおよびアプリケーション挙動受信モジュール340によって受信されたシステムおよびアプリケーションの挙動に基づいて、特定のアプリケーションに対するルールを生成することができる。場合によっては、ルール生成モジュール350は、アプリケーションが疑わしい挙動を示していると決定された場合に、アプリケーションを制限するためにルールを生成することができる。例えば、ルールは、ウイルスまたはマルウェアの感染が分かっておりアプリケーションを完全にブロックするべきか、あるいはウイルスまたはマルウェアの感染が疑われるためアプリケーションを仮想クライアントだけで実行するべきか、あるいはウイルスまたはマルウェアがなく全てのシステムリソースに対するアクセスを許可するべきか、ということを示すことができる。
【0045】
アプリケーション制御モジュール360は、ルール生成モジュール350によって生成されたルールに従って、アプリケーションを制御することができる。アプリケーション制御モジュール360は、評判モジュール310からの評判、ルール生成モジュール350からのルール、ならびにシステムおよびアプリケーション監視モジュール320によって検出されたシステムおよびアプリケーションの挙動に基づいて、アプリケーションのパーミッションを決定することができる。いくつかの実施形態では、アプリケーション制御モジュール360は、生成されたルールに基づいて、アプリケーションのアクセスを特定のシステムリソースに制限することができる。他の実施形態では、アプリケーション制御モジュール360は、アプリケーションが信頼された評判を有する場合には、システムリソースに対するアプリケーションの完全なアクセスを許可してもよい。別の実施形態では、アプリケーション制御モジュール360は、アプリケーションが疑わしい挙動を示している場合であっても、信頼された評判に基づいて特定のシステムリソースに対するアプリケーションの限定的なアクセスを許可してもよい。
【0046】
ユーザーインターフェース370は、後述する処理に対する任意の態様を制御するためのインターフェースを、ユーザーまたは管理者に提供することができる。例えば、ユーザーインターフェース370は、システムおよびアプリケーション監視モジュール320によってモニターされたシステムおよびアプリケーションの挙動に関する情報を表示することができる。
【0047】
図4は、本開示の実施形態によるセキュリティ脆弱性を検出する方法400を示す。方法400は、例えばクライアント110、120、130、およびサーバー140Aを独立に含む複数の装置で実行されてもよい。しかし、後述する方法400の任意の部分は、クライアント110、120、130、およびサーバー140Aのいずれか1つで実行されてもよい。方法400は、ブロック402で開始することができる。
【0048】
ブロック404では、新規なアプリケーションを識別することができる。いくつかの実施形態では、新規なアプリケーションは、評判モジュール310によって識別されてもよい。新しく識別されたアプリケーションは、開発者によって最近リリースされた新規なソフトウェアプログラムまたはアプリケーションであってもよい。さらに、新しく識別されたアプリケーションは、以前から知られているアプリケーションのアップデート版であってもよい。いくつかの実施形態では、新規なアプリケーションは、既知のアプリケーションのリストを保持することができるバックエンドシステムに対して、開発者によって報告されてもよい。さらに、新規なアプリケーションをインストールしたクライアント(例えば、クライアント110、120および130)は、新規なアプリケーションの存在をバックエンドシステム(例えば、サーバー140A)に報告することができる。新規なアプリケーションの識別は、同じアプリケーションをインストールした複数のクライアントから受信した情報に基づいて、バックエンドシステムで実行されてもよい。新規なアプリケーションが識別された後、全体の処理はブロック406に進むことができる。
【0049】
ブロック406では、新しく識別されたアプリケーションに初期評判を割り当てることができる。いくつかの実施形態では、初期評判は、評判モジュール310によって割り当てられてもよい。評判は、新規なアプリケーションの信用のレベルを示すことができる。例えば、新規なアプリケーションは、新規なアプリケーションをリリースした開発者に基づいて、高いレベルの信用を有する良い評判(例えば、「安全」)が割り当てられてもよい。さらに、新規なアプリケーションは、関連するマルウェアの感染がインストール時に検出されずに、複数のクライアントでアプリケーションがインストールされたことに基づいて、良い評判(例えば、「安全」)が割り当てられてもよい。いくつかの実施形態では、初期評判は、新規なアプリケーションのインストール時の挙動に基づいて、クライアントによって新規なアプリケーションに割り当てられてもよい。他の実施形態では、バックエンドシステムは、新規なアプリケーションをインストールした少なくとも1つのクライアントから報告されたソフトウェアおよび/または情報に関する情報に基づいて、初期評判を新規なアプリケーションに割り当ててもよい。しかし、評判は、任意の数の要因に基づいて新規なアプリケーションに割り当てられてもよい。さらに、新規なアプリケーションに割り当てられた初期評判が良い評判である場合に、情報は信頼されたアプリケーションのホワイトリストに記憶されてもよい。初期評判が新しく識別されたアプリケーションに割り当てられた後、全体の処理はブロック408に進むことができる。
【0050】
ブロック408では、少なくとも1つのクライアントからモニターされたシステム挙動を受信することができる。いくつかの実施形態では、モニターされたシステム挙動は、システムおよびアプリケーション挙動受信モジュール340によって受信されてもよい。場合によっては、モニターされたシステム挙動は、バックエンドシステム(例えば、サーバー140A)において、複数のクライアント(例えば、クライアント110、120および130)から受信されてもよい。モニターされたシステム挙動は、クライアントが疑わしい挙動を示しているか否かを示すことができ、疑わしい挙動に関する詳細を含むことができる。あるいは、モニターされたシステム挙動は、疑わしい挙動がクライアントで発生していないことを示すことができる。受信したシステム挙動は、どのアプリケーションがクライアントで実行されているかもしくは動作しているか、および特定のアプリケーションと関係する挙動を特定することができる。さらに、新規なアプリケーションがクライアントにインストールされなかった場合であっても、受信したシステム挙動情報は、新規な潜在的に悪意のある挙動が観察されているかどうかを示すことができる。モニターされたシステム挙動は、クライアント全体の挙動情報、前に存在したアプリケーションもしくは処理、新規なアプリケーション、ならびに、アプリケーションもしくは処理が疑わしい挙動を示しているか、および隔離すべきかどうかを決定することに役立つ任意の情報の組み合わせを含むことができる。モニターされたシステム挙動は、定期的に、または連続的に、または他の任意の時間に受信することができる。モニターされたシステム挙動が受信された後、処理はブロック410に進むことができる。
【0051】
ブロック410では、新規なアプリケーションの初期評判を変更するか否かを決定することができる。いくつかの実施形態では、新規なアプリケーションの初期評判を変更するか否かは、評判モジュール310により決定されてもよい。新規なアプリケーションの初期評判は、1つまたは多くのクライアントから受信したモニターされたシステム挙動に基づいて、良いまたは安全な評判からより低い信用の評判に変更されてもよい。例えば、初期評判は、アプリケーションが疑わしい挙動を示していると1つのクライアントが報告した場合に、良いものから疑わしいものに変更されてもよい。いくつかの実施形態では、アプリケーションの評判を変更するかどうかの決定は、ヒューリスティックに基づいてもよい。
【0052】
さらに、複数のクライアントが特定のアプリケーションが疑わしい挙動を示していると報告した場合に、初期評判は良いものから疑わしいものに変更されてもよい。いくつかの実施形態では、予め設定された数またはしきい値数のクライアントが、アプリケーションが疑わしい挙動を示していると報告した場合に、評判が変更されてもよい。さらに、1つまたは複数のクライアントからアプリケーションが特定のマルウェアまたはウイルス特性を示していると決定された場合に、新規なアプリケーションの評判が良いものまたは安全なものから悪いものに変更されてもよい。しかし、疑わしい特性または挙動がクライアントから報告されない場合には、良いまたは安全な評判が維持されてもよい。アプリケーションの評判は、少なくとも1つのクライアントから受信したモニターされたシステム挙動に基づいて、悪いものから疑わしいものに、あるいは、疑わしいものから安全なものに改善されてもよい。例えば、疑わしい挙動の原因であると疑われた第1のアプリケーションが、疑わしい挙動を示している実際のアプリケーションではなかったと決定されてもよい。したがって、アプリケーションの評判は、疑わしいものから中立なものまたは良いものに変更されてもよい。
【0053】
ブロック410では、少なくとも1つのクライアントから報告されたシステム挙動に基づいて、他の任意の既知のアプリケーションまたは処理の評判を変更する決定が成されてもよい。新規なアプリケーションまたは他の任意のアプリケーションの評判を変更する必要がないと決定された場合には、処理はブロック408に戻って追加のシステム挙動を再び受信することができる。新規なアプリケーションまたは他のアプリケーションの評判を変更する必要があると決定された場合には、処理はブロック412に進むことができる。
【0054】
ブロック412では、識別されたアプリケーションの変更された評判をネットワークの各クライアントに配信することができる。いくつかの実施形態では、識別されたアプリケーションの変更された評判は、評判モジュール310によって配信されてもよい。場合によっては、変更された評判は、バックエンドシステム(例えば、サーバー140A)からネットワークのクライアント(例えば、クライアント110、120および130)の各々へ配信されてもよい。変更された評判が配信された後、処理はブロック414に進むことができる。
【0055】
ブロック414では、少なくとも1つのクライアントから、モニターされたシステムおよびアプリケーションの挙動を受信することができる。いくつかの実施形態では、モニターされたシステムおよびアプリケーションの挙動は、システムおよびアプリケーション挙動受信モジュール340によって受信されてもよい。場合によっては、モニターされたシステムおよびアプリケーションの挙動は、1つのアプリケーションもしくは処理、複数のアプリケーションもしくは処理、およびシステム挙動に関する情報を含んでもよい。さらに、モニターされたシステムおよびアプリケーションの挙動は、疑わしいまたは信頼できない評判を有するアプリケーションもしくは処理についての詳細情報を含んでもよい。モニターされたシステムおよびアプリケーションの挙動は、様々な信頼されたおよび/または疑わしいアプリケーションを実行している1つのクライアントもしくは複数のクライアントから受信されてもよい。いくつかの実施形態では、モニターされたシステムおよびアプリケーションの挙動は、ブロック412でクライアントに配信された特定のアプリケーションの評判の変更に基づいて、そのアプリケーションの挙動に関するより多くの詳細を含んでもよい。モニターされたシステムおよびアプリケーションの挙動は、周期的な間隔で、あるいは連続的に、あるいは他の任意の時間に、複数のクライアントから同時にまたは順次に受信されてもよい。モニターされたシステムおよびアプリケーションの挙動が受信された後、処理はブロック416に進むことができる。
【0056】
ブロック416では、受信したシステムおよびアプリケーションの挙動に基づいて、新規なルールを生成して少なくとも1つのクライアントに配信するかどうかを決定することができる。いくつかの実施形態では、ルール生成モジュール350が、新規なルールを生成してクライアントに配信すべきかどうかを決定してもよい。場合によっては、特定のアプリケーションもしくは処理が疑わしいおよび/または悪意のある挙動を示すことを、受信したモニターされたシステムおよびアプリケーションの挙動が示す場合に、新規なルールが生成されてもよい。新規なルールを生成するかどうかの決定は、単一のクライアントまたは複数のクライアントから受信した、モニターされたシステムおよびアプリケーションの挙動の解析に基づいてもよい。いくつかの実施形態では、特定のアプリケーションが1つのクライアントからの疑わしいおよび/または悪意のある挙動の原因となっていることをモニターされたアプリケーション挙動が示す場合に、特定のアプリケーションに対する新規なルールが生成されてもよい。
【0057】
さらに、モニターされたアプリケーション挙動が複数のクライアントにわたる疑わしい特定の挙動を示し、かつ、特定のアプリケーションがクライアントの各々で実行されている場合に、特定のアプリケーションに対する新規なルールが生成されてもよい。その結果、特定のアプリケーションが疑わしいまたは悪意のある挙動の原因であるという推論が導き出され、新規なルールがその特定のアプリケーションについて生成されてもよい。新規なルールは、クライアントに複数の既知のセキュリティ対策のいずれか1つを実行するように指示してもよい。例えば、新規なルールは、アプリケーションがロードまたは実行されるのを防止すべきであること、あるいはアプリケーションが安全なサンドボックスで実行されるべきであること、あるいは実行するためにアプリケーションを仮想クライアントへ移動するべきであることを示してもよい。
【0058】
新規なルールは、ネットワーク内の各クライアントに配信されてもよい。場合によっては、新規なルールは、新規なルールと関係する特定のアプリケーションを実行しているクライアントに対して配信され、特定のアプリケーションを実行していないクライアントには新規なルールを送信しなくてもよい。新規なルールは、新規なルールが生成された直後にクライアントに配信されてもよいし、あるいはクライアントに配信される定期的なアップデートの一部として配信されてもよい。新規なルールが配信された後、全体の処理はブロック418に進むことができる。それから、全体の処理400は、周期的または連続的に繰り返すことができる。場合によっては、全体の処理の様々な要素は、同時にまたは順次に実行されてもよい。例えば、モニターされたシステム挙動は、別のアプリケーションの変更された評判がクライアントに配信される間に、複数のクライアントから受信されてもよい。
【0059】
図5は、本開示の実施形態によるセキュリティ脆弱性を検出する方法500を示す。方法500は、例えばクライアント110、120、130、およびサーバー140Aを含む複数の装置で実行されてもよい。しかし、後述する方法500の任意の部分は、クライアント110、120、130、およびサーバー140Aのいずれか1つで実行されてもよい。方法500は、ブロック502で開始することができる。
【0060】
ブロック504では、初期評判に従ってアプリケーションを実行することができる。いくつかの実施形態では、アプリケーションは、独立に、または複数の付加的なアプリケーションもしくは処理と並行して、クライアントで実行されてもよい。初期評判は、アプリケーションが信頼できる安全なものか、潜在的に疑わしいものか、疑わしいものか、悪意のあるものか、あるいは他の分類であるかを示すことができる。場合によっては、アプリケーションを実行するクライアントが、アプリケーションのインストール中および/またはその後のアプリケーションの挙動に基づいて、初期評判を決定してもよい。他の例では、クライアントがバックエンドシステムから初期評判を受信してもよい。評判に基づいて、評判が良好または安全である場合には、クライアントは、全ての利用可能なリソースに対するアプリケーションのアクセスを許可することによって、アプリケーションを実行することができる。さらに、評判が良好または安全でない場合には、クライアントはリソースに対するアクセスを制限することによってアプリケーションを実行することができる。アプリケーションが初期評判に基づいて実行された後、全体の処理はブロック506に進むことができる。
【0061】
ブロック506では、クライアントシステムの挙動をモニターすることができる。いくつかの実施形態では、システムおよびアプリケーション監視モジュール320がクライアント(例えば、クライアント110)の挙動をモニターしてもよい。クライアントの挙動は、様々な方法でモニターされてもよい。例えば、システムは、システムディレクトリへの無許可のアクセスもしくは改変、オペレーティングシステムに対する無許可の書き込み、アンチウイルスアプリケーションなどのセキュリティアプリケーションの停止、および悪意のあるネットワーク活動についてモニターされてもよい。場合によっては、危険なまたは疑わしい挙動を識別するために、ヒューリスティックを用いてクライアントの挙動をモニターしてもよい。
【0062】
システム挙動の監視は、ブロック504のアプリケーションの実行と並行して実行されてもよい。さらに、監視は、定期的または連続的に所定の期間実行されてもよい。いくつかの実施形態では、システム挙動は、クライアントで実行されているアプリケーションまたは処理の評判に従ってモニターされてもよい。例えば、各アプリケーションが信頼できるまたは安全な評判を有する場合には、システム挙動はより低い頻度でモニターされてもよいが、アプリケーションが疑わしいまたは信頼できない評判を有する場合には、システムはより高い頻度でモニターされてもよい。またクライアントは、関連する信頼できる評判に基づいて、特定のアプリケーションをより低い頻度でモニターしてもよいが、他のアプリケーションは、関連する疑わしい評判に基づいて、より高い頻度でモニターされてもよい。疑わしい挙動がその評判に基づいて検出されている場合であっても、クライアントはアプリケーションを実行し続けてもよい。この例では、更新された評判が受信されるまで、アプリケーションの評判が疑わしい挙動に取って代わってもよい。しかし、特定の既知の悪意のある挙動が検出された場合には、クライアントはアプリケーションを終了してもよい。システム挙動がモニターされた後、全体の処理はブロック508に進むことができる。
【0063】
ブロック508では、モニターされたシステム挙動をバックエンドシステム(例えば、サーバー140A)に報告することができる。いくつかの実施形態では、システムおよびアプリケーション挙動報告モジュール330は、クライアント(例えば、クライアント110)のモニターされたシステム挙動をバックエンドシステム(例えば、サーバー140A)に報告してもよい。モニターされたシステムおよびアプリケーション挙動がバックエンドシステムに報告された後、処理はブロック510に進むことができる。
【0064】
ブロック510では、新規なアプリケーション評判が受信されたかどうかを決定することができる。いくつかの実施形態では、新規なアプリケーション評判は、アプリケーション制御モジュール360によって受信されてもよい。新規なアプリケーション評判は、バックエンドシステムによって検出されたアプリケーションと関係する疑いのある挙動に応答して、バックエンドシステム(例えば、サーバー140A)から受信されてもよい。例えば、バックエンドシステムは、特定のアプリケーションが上述したような疑わしい挙動を示しているという決定に応じて、ネットワーク内の全てのクライアントに対して、特定のアプリケーションについての新規な評判を自動的に配信することができる。新規なアプリケーション評判が受信されない場合には、処理はブロック504に戻ることができて、クライアントはアプリケーションを実行し続け、システム挙動をモニターし、そしてシステム挙動をバックエンドシステムに報告することができる。しかし、新規なアプリケーション評判が受信された場合には、処理はブロック512に進むことができる。
【0065】
ブロック512では、新しく受信したアプリケーション評判に基づいてシステムおよびアプリケーションをモニターすることができる。いくつかの実施形態では、システムおよびアプリケーションは、新しく受信した評判に従って、システムおよびアプリケーション監視モジュール320によってモニターされてもよい。場合によっては、新規な評判は、特定のアプリケーションまたは処理の評判が信頼できるレベルから疑わしいレベルに、あるいは疑わしいレベルから悪意のあるレベルに低下したことを示してもよい。新規な評判が、アプリケーションは悪意があることを示す場合には、アプリケーションは完全にブロックされるか、あるいは安全なサンドボックスもしくは仮想クライアントで実行するように制限されてもよい。さらに、アプリケーションは悪意があると確認された場合には、システムおよびアプリケーションの挙動の全てがより詳細にモニターされてもよい。
【0066】
新規な評判が特定のアプリケーションが疑わしいことを示す場合には、そのアプリケーションおよび全体システムの挙動が調整されてもよい。例えば、アプリケーションが以前は信頼できると示されていた場合には、挙動はまれにモニターされてもよかった。しかし、アプリケーションの評判が疑わしいものに下げられた今では、システムおよび特定のアプリケーションの挙動は高い頻度でモニターされてもよい。代わりに、新規な評判が特定のアプリケーションがもはや疑わしくないことを示す場合には、システムおよびアプリケーションの挙動がモニターされる頻度は減少されてもよい。処理がブロック514に進む前に、システムおよびアプリケーションの挙動は所定の期間モニターされてもよい。しかし、システムまたはアプリケーションの特定の挙動が検出された場合には、処理は報告されるために直ちにブロック514に進むことができる。したがって、システムおよびアプリケーションの挙動がモニターされた後、処理はブロック514に進むことができる。
【0067】
ブロック514では、新規な評判に従うモニターされたシステムおよびアプリケーションの挙動を、バックエンドシステム(例えば、サーバー140A)に報告することができる。いくつかの実施形態では、システムおよびアプリケーション挙動報告モジュール330は、クライアント(例えば、クライアント110)の新しくモニターされたシステムおよびアプリケーションの挙動をバックエンドシステム(例えば、サーバー140A)に報告してもよい。モニターされたシステムおよびアプリケーション挙動がバックエンドシステムに報告された後、処理はブロック516に進むことができる。
【0068】
ブロック516では、新規なルールが受信された場合には、実行されているアプリケーションを新規なルールに従って制御することができる。いくつかの実施形態では、アプリケーションは、受信したルールに従って、アプリケーション制御モジュール360によって制御されてもよい。場合によっては、上述したようにバックエンドシステムに報告されたクライアントの挙動に基づいて、バックエンドシステムはクライアントに新規なルールを配信してもよい。具体的には、バックエンドシステムは、特定のアプリケーションが実行されるのを禁止すべきである、あるいはアプリケーションが安全なサンドボックスで実行されるべきである、あるいはアプリケーションが仮想クライアントで実行されるべきである、あるいは特定のシステムリソースに対するアプリケーションのアクセスが制限されるべきである、という新規なルールを発行してもよい。したがって、バックエンドシステムが特定のアプリケーションに対する新規なルールを配信する場合には、クライアント(例えば、クライアント110)はそのルールに従ってアプリケーションを実行してもよい。しかし、新規なルールがバックエンドから受信されない場合には、クライアントはアプリケーションを実行し続けてもよく、そして、全体の処理はブロック518に進むことができる。ブロック518では、全体の処理は、連続的にまたは周期的に繰り返されてもよい。
【0069】
それから、全体の処理500は、周期的または連続的に繰り返すことができる。場合によっては、全体の処理の様々な要素は、同時にまたは順次に実行されてもよい。例えば、システム挙動をバックエンドシステムに報告する間にも、アプリケーションは初期評判に基づいて実行されてもよい。
【0070】
ここで、上述した本開示によるセキュリティ脆弱性の検出は、ある程度まで入力データの処理および出力データの生成を含んでもよい点に留意する必要がある。この入力データ処理および出力データ生成は、ハードウェアまたはソフトウェアにより実施されてもよい。例えば、特定の電子部品は、セキュリティ脆弱性の検出において、あるいは上述した本開示によるセキュリティ脆弱性の検出と関係する機能を実現するための類似もしくは関連する回路において用いられてもよい。あるいは、命令に従って動作する1つまたは複数のプロセッサは、上述した本開示によるセキュリティ脆弱性の検出と関係する機能を実現してもよい。かかる場合、このような命令が1つまたは複数の非一時的プロセッサ読み取り可能記憶媒体(例えば、磁気ディスクまたは他の記憶媒体)に記憶されたり、あるいは1つまたは複数の搬送波中に具現化された1つまたは複数の信号を介して1つまたは複数のプロセッサに伝送されてもよいことは、本開示の範囲に含まれる。
【0071】
本開示は、本明細書に示す特定の実施形態により範囲を限定されるものではない。実際、本明細書に記載されるものに加え、本開示の他の様々な実施形態およびその変更形態は、上述の説明および添付の図面から、当業者には明らかとなろう。したがって、このような他の実施形態およびその変更形態は本開示の範囲内に含まれるものである。さらに、本開示は少なくとも1つの特定の目的のための少なくとも1つの特定の環境における少なくとも1つの特定の実施の文脈で本明細書に記載されているが、その有用性はそれらに限定されず、本開示は任意の数の目的のために任意の数の環境において有益に実施され得ることが当業者には理解されよう。それに応じて、以下に記載する「特許請求の範囲」は、本明細書に記載された本開示の範囲の最大限の広さおよび趣旨を考慮して解釈されるべきである。