(57)【特許請求の範囲】
【請求項１】
実行可能オブジェクトの頻度に基づく分類を実行するレピュテーションクライアントであって、
メモリに通信可能に結合されたプロセッサと、
ネットワークインタフェースと、
前記プロセッサに通信可能に結合され、複数の実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを前記サブルーチンに割り当てるように動作可能であり、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨り、前記ネットワークインタフェースを介して前記実行頻度スコアをレピュテーションサーバに提供し、前記ネットワークインタフェースを介して実行可能オブジェクトのレピュテーションスコアを受信するように動作可能であり、前記レピュテーションスコアは、前記実行可能オブジェクトのサブルーチンの頻度スコアに少なくとも部分的に基づくレピュテーションクライアントエンジンと
を有するレピュテーションクライアント。
【請求項２】
実行頻度スコアを各サブルーチンに割り当てることは、前記実行可能オブジェクトを実行し、前記サブルーチンへの呼び出しを記録することを更に有する、請求項１に記載のレピュテーションクライアント。
【請求項３】
前記レピュテーションクライアントエンジンは、隔離された環境で前記実行可能オブジェクトを実行するように更に動作可能である、請求項１に記載のレピュテーションクライアント。
【請求項４】
前記実行可能オブジェクトを複数のサブルーチンに解析することは、頻度カウンタを前記サブルーチンに注入するように前記実行可能オブジェクトのコピーを変更することを更に有する、請求項１に記載のレピュテーションクライアント。
【請求項５】
請求項１ないし４のうちいずれか１項に記載のレピュテーションクライアントエンジンを提供するようにプロセッサに対して命令するように動作可能なコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを記憶した１つ以上のコンピュータ読み取り可能媒体。
【請求項７】
メモリに通信可能に結合されたプロセッサと、
ネットワークインタフェースと、
前記プロセッサに通信可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てるように動作可能なレピュテーションサーバエンジンと
を有し、
前記レピュテーションサーバエンジンは、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別するように更に動作可能であるレピュテーションサーバ。
【請求項８】
前記レピュテーションサーバエンジンは、前記複数のサブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいて、前記実行可能オブジェクトのレピュテーションスコアを計算し、前記ネットワークインタフェースを介して前記レピュテーションスコアの少なくとも１つを複数のレピュテーションクライアントに配信するように更に動作可能である、請求項７に記載のレピュテーションサーバ。
【請求項９】
レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１０】
前記実行可能オブジェクトを複数のサブルーチンに解析することは、前記複数のサブルーチンに関するデータをレピュテーションクライアントから受信することを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１１】
レピュテーションスコアを各サブルーチンに割り当てることは、各サブルーチンの実行頻度スコアをレピュテーションクライアントから受信することを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１２】
レピュテーションスコアを各サブルーチンに割り当てることは、
擬似固有のフィンガープリントを各サブルーチンに割り当て、
マッチするサブルーチンの頻度又はレピュテーションスコアについてレピュテーションデータベースに問い合わせるために、前記擬似固有のフィンガープリントを使用することを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１３】
レピュテーションスコアを各サブルーチンに割り当てることは、複数の実行可能オブジェクトの間の実行頻度を有する前記サブルーチンの実行頻度スコアを受信することを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１４】
前記レピュテーションサーバエンジンは、隔離された環境内で前記実行可能オブジェクトを実行し、これらの実行頻度に基づいてサブルーチンに頻度スコアを割り当てるように更に動作可能である、請求項８に記載のレピュテーションサーバ。
【請求項１５】
レピュテーションスコアを各サブルーチンに割り当てることは、前記実行可能オブジェクトを静的に分析することを更に有する、請求項８に記載のレピュテーションサーバ。
【請求項１６】
前記レピュテーションサーバエンジンは、更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けるように更に動作可能である、請求項８に記載のレピュテーションサーバ。
【請求項１７】
前記実行可能オブジェクトのレピュテーションは、前記複数のサブルーチンのレピュテーションに少なくとも部分的に基づく、請求項８に記載のレピュテーションサーバ。
【請求項１８】
前記レピュテーションサーバエンジンは、前記実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを前記複数のサブルーチンに割り当てるように更に動作可能である、請求項８に記載のレピュテーションサーバ。
【請求項１９】
前記レピュテーションサーバエンジンは、
擬似固有のフィンガープリントを少なくとも１つのサブルーチンに割り当て、
複数の実行可能オブジェクトの間で前記サブルーチンの実行頻度スコアを計算し、
前記レピュテーションスコアを前記実行頻度スコアに関連付けるように更に動作可能である、請求項８に記載のレピュテーションサーバ。
【請求項２０】
擬似固有のフィンガープリントを前記サブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、請求項１９に記載のレピュテーションサーバ。
【請求項２１】
前記レピュテーションサーバエンジンは、低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別するように更に動作可能である、請求項８に記載のレピュテーションサーバ。
【請求項２２】
請求項８ないし２１のうちいずれか１項に記載のレピュテーションサーバエンジンを提供するように動作可能なコンピュータプログラム。
【請求項２３】
請求項２２に記載のコンピュータプログラムを記憶した少なくとも１つのコンピュータ読み取り可能記憶媒体。
【請求項２４】
実行可能オブジェクトのレピュテーションを計算する方法であり、コンピューティングデバイスで実行可能な方法であって、
実行可能オブジェクトを複数のサブルーチンに解析し、
実行頻度スコアを前記サブルーチンに割り当て、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨り、
前記実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当て、
前記サブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てることを有する方法。
【請求項２５】
レピュテーションスコアを前記実行可能オブジェクトに割り当てることは、
擬似固有の識別子をサブルーチンに割り当て、
前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つけ、
前記サブルーチンの前記実行頻度を集約することを更に有する、請求項２４に記載の方法。
【請求項２６】
レピュテーションサーバエンジンを提供する方法であって、
実行可能オブジェクトを複数のサブルーチンに解析し、
レピュテーションスコアを各サブルーチンに割り当て、
ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別することを有する方法。
【請求項２７】
レピュテーションを前記実行可能オブジェクトに割り当て、前記実行可能オブジェクトの前記レピュテーションは、前記サブルーチンの前記レピュテーションに少なくとも部分的に基づくことを更に有する、請求項２６に記載の方法。
【請求項２８】
更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けることを更に有する、請求項２７に記載の方法。
【請求項２９】
レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを有する、請求項２６に記載の方法。
【請求項３０】
レピュテーションスコアを各サブルーチンに割り当てるように動作可能な命令は、前記実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを前記サブルーチンに割り当てるように更に動作可能である、請求項２６に記載の方法。
【請求項３１】
各サブルーチンのレピュテーションスコアを割り当てるように動作可能な命令は、
擬似固有のフィンガープリントを前記サブルーチンに割り当て、
複数の実行可能オブジェクトの間で前記サブルーチンの実行頻度スコアを計算し、
前記レピュテーションスコアを前記実行頻度スコアに関連付けるように更に動作可能である、請求項２６に記載の方法。
【請求項３２】
擬似固有のフィンガープリントを前記サブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、請求項３１に記載の方法。
【請求項３３】
更なる詳細な分析のために低いレピュテーションスコアを有するサブルーチンにフラグを付けることを更に有する、請求項２６に記載の方法。
【請求項３４】
実行頻度スコアを各サブルーチンに割り当てることを更に有する、請求項２６に記載の方法。
【請求項３５】
低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別することを更に有する、請求項３４に記載の方法。
【請求項３６】
隔離された環境で前記実行可能オブジェクトを実行することを更に有する、請求項２６に記載の方法。
【請求項３７】
請求項２６ないし３６のうちいずれか１項に記載の方法を実行する手段を有する装置。
【請求項３８】
前記手段は、プロセッサ及びメモリを有する、請求項３７に記載の装置。
【請求項３９】
前記メモリは、実行された場合、前記装置に対して請求項２６ないし３６のうちいずれか１項に記載の方法を実行させる機械読み取り可能命令を有する、請求項３８に記載の装置。
【請求項４０】
前記装置は、コンピューティングシステムである、請求項３８に記載の装置。
【請求項４１】
プロセッサに対して請求項２６ないし３６のいずれか１項に記載の方法を実行するように命令するように動作可能なコンピュータプログラム。
【請求項４２】
請求項４１に記載のコンピュータプログラムを記憶した１つ以上のコンピュータ読み取り可能媒体。
【請求項４３】
実行可能オブジェクトを複数のサブルーチンに解析する手段と、
実行頻度スコアを前記サブルーチンに割り当てる手段であり、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨る手段と、
前記実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当てる手段と、
前記サブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを前記実行可能オブジェクトに割り当てる手段と
を有するコンピューティングデバイス。
【請求項４４】
レピュテーションスコアを前記実行可能オブジェクトに割り当てる手段は、
擬似固有の識別子をサブルーチンに割り当てる手段と、
前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つける手段と、
前記サブルーチンの前記実行頻度を集約する手段と
を更に有する、請求項４３に記載のコンピューティングデバイス。
【請求項４５】
前記手段のそれぞれは、過渡的でないコンピュータ読み取り可能媒体に記憶された実行可能命令を有する、請求項４３又は４４に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、コンピュータネットワークセキュリティの分野に関し、特にオブジェクトについて頻度に基づくレピュテーション（frequency-based  reputation）を計算するシステム、装置及び方法に関する。
【背景技術】
【０００２】
この明細書を通じて使用されるときに、悪意のあるソフトウェア（“マルウェア（malware）”）は、非限定的な例として、データ破壊、秘密データの収集、ブラウザのハイジャック、ネットワークプロキシ又はリダイレクション、秘密トラッキング、データロギング、キーロギング、削除への過度又は故意の障壁、連絡先ハーベスティング、及び無許可の自己繁殖を含み、いずれかのウィルス、トロイの木馬（Trojan）、ボット、ゾンビ、ルートキット、バックドア、ワーム、スパイウェア、アドウェア、ランサムウェア、ダイヤラ、ペイロード、悪意のあるブラウザヘルパーオブジェクト、クッキー、ロガー、又は潜在的に不必要なアクションを行うように設計された同様のものを含む。ここではアンチマルウェアシステムと呼ばれる特定のシステムは、アプリケーション又はファイルレベルでマルウェアを識別して駆除することに焦点を当てている。“実行可能オブジェクト”は、いずれかのファイル、プログラム、マクロ、スクリプト、ドキュメント、レコード、又はプログラムを実行するコードを含む同様のものを含む。スタンドアローンプログラムとして動作するように設計されているものとは別に、マルウェアはまた、他のソフトウェアに追加又は注入される悪意のあるコードの形式になり得る。この形式の一例は、悪意のあるコードがコンピュータウィルスを再現する寄生により導入される“感染ファイル（infected  file）”でもよい。悪意のあるコードはまた、コンパイル後に実行可能オブジェクトの一部になるように、手動で注入されてもよく、ソフトウェアのソースに追加されてもよく、コンパイルされてもよくされなくてもよいスクリプトに追加されて翻訳実行されてもよい。特定のアンチマルウェア対策は、感染ファイルを識別し、これらを削除、隔離又はブロックすることに焦点を当てている。
【図面の簡単な説明】
【０００３】
この開示は、添付図面と共に読まれた場合に以下の詳細な説明から最も良く理解できる。業界における標準的な慣行に従って、様々な図面は縮尺通りに描かれておらず、説明目的にのみ使用されることが強調される。実際に、様々な図面の寸法は、説明の明瞭性のために任意に増加又は減少してもよい。
【図１】この明細書の１つ以上の例による分散レピュテーション環境のネットワークレベルの図
【図２】この明細書の１つ以上の例による共通サブルーチンを含む複数のサブルーチンを含む複数の実行可能オブジェクトのブロック図
【図３】この明細書の１つ以上の例によるクライアントデバイス130のブロック図
【図４】この明細書の１つ以上の例によるレピュテーションクライアントにより実行される例示的な処理のフローチャート
【図５】この明細書の１つ以上の例によるレピュテーションサーバのブロック図
【図６】この明細書の１つ以上の例によるレピュテーションサーバを提供する方法のフローチャート
【発明を実施するための形態】
【０００４】
＜概要＞
一例では、サブルーチンレベルでアプリケーション及び他の実行可能オブジェクトを分析するアンチマルウェアシステム及び方法が開示される。各サブルーチンは、実行頻度スコアを割り当てられてもよく、実行頻度スコアは、隔離された環境、現実の世界の動作条件、又は静的な分析でのシミュレーションされた実行に基づいてもよい。各サブルーチンは、どのくらいの頻度で実行されたかに基づいて実行頻度スコアを割り当てられてもよい。このスコアに基づいて、各サブルーチンはまた、レピュテーションスコアを割り当てられてもよい。他のアプリケーションでの同じサブルーチンの発生への相互参照を支援するために、サブルーチンはまた、ファジーフィンガープリント（fuzzy  fingerprint）のような擬似固有の識別子を割り当てられてもよい。
【０００５】
＜開示の実施例＞
或るソフトウェアエコシステムは、Google  Play、Apple  Store、及びMicrosoft  Storeのような“アプリストア（app  store）”から配信されるアプリケーション及び他の実行可能オブジェクトのモデルに向かって移行している。この環境では、マルウェア作者は、アプリストアの選考から悪意のある機能を隠すことにより適合させてもよい。あるアンチマルウェア対策で検出することも困難になり得る１つの潜在的な方法は、例えば、比較的小さいが、望ましいユーザのクラスに目標を定めるために、ゲームのような有用又は所望のプログラムを構築し、これを特定の比較的希な条件のみで活性化する悪意のあるサブルーチンに注入することである（この種類の包含は、場合によっては“イースターエッグ（Easter  egg）”と呼ばれる）。このシナリオでは、多くのユーザは、アプリケーションが予想された境界内で動作し、有用で楽しいと思うことを見出す。これらのユーザは、アプリケーションに良好なレビューを与え、従って、隠されたマルウェアの拡散を大きくする。
【０００６】
同様に、悪意のあるコードは、ソースコードのレポジトリに対して“書き込み”アクセスを有する人のコンピュータに歩み寄った後等に、開発者に賄賂を使うことにより、或いはソース制御システムへの無許可のアクセスを取得することにより、適法のソフトウェアに注入されてもよい。このような隠蔽されたマルウェア配信は、マス規模の攻撃と、政府支援の攻撃を含む目標を定めた攻撃とに使用可能である。
【０００７】
従って、或る場合には、マルウェアの識別を実行可能オブジェクトレベルに限定することが最適でない可能性がある。むしろ、出現しつつある脅威は、例えば以下を含む新たな攻撃手法に焦点を当ててもよい。
【０００８】
マルウェアルーチンを注入するためにリバースエンジニアリング或いは既存の実行可能オブジェクトを変更し、変更された実行可能オブジェクトをアプリストアに提供することにより感染ファイルを生成すること。
【０００９】
アプリストアを介して配信されるほとんど適法の実行可能オブジェクトを生成するが、希に実行されるマルウェアルーチンを含めてマルウェアとしての実行可能オブジェクトの識別を困難にすること。
【００１０】
これらの課題は、大規模な開発チーム及びサードパーティのソフトウェアアドオンの使用により更に悪化する可能性がある。一例の攻撃では、マルウェア作者は、オブジェクトコードのフォーマットで有用なサードパーティのライブラリを提供する。ライブラリは、ほとんど適法な機能と、希にのみ実行するマルウェアペイロードとを含んでもよい。この希な実行は、ライブラリのマルウェアの性質をマスクするのに役立つ可能性がある。例えば、ライブラリは、金融トランザクションをロギングし、ユーザが利用可能な資金で$100,000より多くの銀行アカウントにアクセスした場合にのみ活性化してもよく、この場合、アカウントが流出する。他の例では、マルウェアペイロードは、マーケティングエンティティに販売するためにユーザからプライベートデータを収集するが、GPS信号が存在し、有用なデータを提供するのに十分であるがマルウェアペイロードが希にのみ実行されることを確保するのに十分に小さくなるように構成されたリストから選択された郵便番号内にユーザがいることが分かった場合にのみデータを収集する。
【００１１】
この実行の希さは、マルウェアライブラリが容易に検出されないことを確保するのに役立ってもよい。ライブラリが一般的に使用される機能又は非常に有用な機能を提供し、多くのライセンスチームに無料又は安価に提供される場合、厳しい期限を満たすことを求める時間に追われた開発者は、ライブラリを使用することにそそのかされる可能性がある。従って、マルウェアライブラリは、多くの異なるアプリケーションに存在し、多くの異なるデバイスに配信される可能性がある。広範囲の異質性の配信はまた、悪意のあるペイロードが発見された後でも、マルウェアライブラリの全てのインスタンスを識別することを困難にする可能性がある。例えば、ペイロードは、第１の実行可能オブジェクトで識別されてもよく、これにより、第１の実行可能オブジェクトは、適切に検疫されて洗浄されてペイロードなしに再開発される。しかし、ライブラリを使用した全てのベンダを知らなければ、全ての感染ファイルを識別することは困難である。更に、ライブラリは、非限定的な例として、ウェブページからのスクリプト若しくは命令又はネットワーク接続を介して受信したコマンドのような、外部ソースから供給されたコードを実行又は翻訳解釈する機能を有してもよい。或る場合には、静的及び動的分析は、或る場合には“ボット”、“バックドア”又は“リモートシェル”機能と等価なこのような遠隔制御が実行される前に、アタッカーの正確な意図を検査することができない。
【００１２】
第２の例示的な攻撃シナリオでは、マルウェア作者は、アプリのような公衆利用可能な実行可能オブジェクトのコピーを入手し、マルウェア動作を挿入するようにアプリをリバースエンジニアリング又は変更する。作者は、例えば、ユーザが任意選択で選択し得る未検証のサードパーティのアプリレポジトリにアプリを配信してもよい。この場合、エンドユーザは、人気のある有料のアプリがサードパーティのアプリレポジトリにおいて無料で利用可能であり、所望のアプリの元の機能の全てを有するように見えることを見出してもよい。マルウェアペイロードが特定の条件のみで活性化するため、多くのユーザは、悪影響を受けなくてもよい。この場合、アプリの全てのコピーがマルウェアとして識別される必要はない。むしろ、変更されたもののみがフラグを付けられる必要がある。
【００１３】
第３の例示的な攻撃シナリオでは、マルウェア作者は、アプリのような実行可能オブジェクトの他の点で適法な開発者により合法的に雇われてもよい。この場合、ユーザは、マルウェア動作を、他の点で適法のアプリに内密に注入してもよく、特定の条件のみで活性化するようにマルウェアペイロードを構成することにより、その存在をマスクしてもよい。この場合、どのアプリにマルウェア作者が操作したか又はアクセスしたかが明らかにならない可能性があるため、どのアプリが影響を受けるかを識別することは困難になる可能性がある。
【００１４】
前述のことは、この明細書のシステム及び方法が有用に実施され得る非限定的な例により提供されている。
【００１５】
この明細書の例によれば、他の点で適法になり得る（しかし、必ずしも適法であるとは限らない）実行可能オブジェクトにおいてマルウェアペイロードを識別するシステム及び方法が提供される。一例では、レピュテーションクライアントは、実行可能オブジェクトを識別可能なサブルーチンに解析し、ファジーフィンガープリントのような擬似固有の識別子を各サブルーチンに割り当てる。この明細書では、“サブルーチン”は、いずれかのプログラミングサブルーチン、ルーチン、プロシージャ、関数、メソッド、クラス、オブジェクト、モジュール、又は実行可能命令を含むコードの同様の識別可能な部分を含んでもよい。サブルーチンは、明確なプロシージャにおける明確に規定された入口点及び出口点を有する必要はなくてもよい点に留意すべきである。マルウェア作者は、この明細書の開示を実現するシステムに対する設計変更として、頻繁に実行されるプロシージャ内に希に実行される悪意のあるコードを埋め込むことを試みてもよい。従って、或る場合には、明確に規定されたプロシージャの別の分岐は、その実行頻度が別々に評価され得るようなプロシージャとして別々に識別されてもよいことが予期される。
【００１６】
各サブルーチンが識別されて識別子を割り当てられると、レピュテーションクライアントは、実行可能オブジェクトをレピュテーションサーバに渡し、或いはローカル分析を実行し、実行可能オブジェクトは能動的又は受動的に分析される。分析は、集中型のレポジトリで行われてもよく、多くの現実の世界のユースケースに分散されてもよい。有利には、データは、粒度のサブルーチンレベルのコードの実行について複数の個々のクライアントから集約されてもよい。サブルーチンは、どのくらい頻繁にサブルーチンが実行されたかに基づいてランク又はスコアを提供される。サブルーチンがユーザからの注目すべき逆効果又は苦情なしに頻繁に実行された場合、これは、あまり疑わしくないとしてフラグが付けられてもよい。サブルーチンが希に実行され、特に実行が“奇妙な”動作又はユーザの苦情の報告により付随される場合、サブルーチンは疑わしいとしてフラグが付けられてもよい。疑わしいサブルーチンは、検疫、洗浄、又は或る場合には逆コンパイル及び人間のオペレータによる詳細な分析のような更なる詳細な分析を受けてもよい。有利には、サブルーチンは、その識別子によりいずれかの実行可能オブジェクトにおいて識別されてもよい。従って、マルウェアの識別及びマルウェア動作は、特定の実行可能オブジェクトの識別から分離されてもよい。
【００１７】
図１は、この明細書の１つ以上の例による分散レピュテーション環境のネットワークレベルの図である。この例では、複数のユーザ132は、複数のクライアントデバイス130を動作させる。各クライアントデバイスは、インターネット、イントラネット、WAN、LAN、企業ネットワーク、セキュリティ保護されたネットワーク等のようなネットワーク120に接続されてもよい点に留意すべきである。マルウェア作者170はまた、クライアントデバイス130-4を介してネットワーク120に接続する。アプリストア180が提供され、ネットワーク120に通信可能に結合される。レピュテーションサーバ110は、ネットワーク120に接続し、レピュテーションデータベース140に通信可能に結合される。この実施例では、レピュテーションデータベース140は、レピュテーションサーバ110に直接接続されたものとして開示されているが、レピュテーションデータベース140がサードパーティにより提供されてもよいこと、複数のデバイスに分散されてもよいこと、例えばアプリケーションプログラミングインタフェース（API：application  programming  interface）を介してアクセス可能でもよいことを含み、他の構成も可能であることが分かる。
【００１８】
一例では、ユーザ132は、クライアントデバイス130を動作させる。“クライアントデバイス”は、非限定的な例として、コンピュータ、パーソナルデジタルアシスタント（PDA：personal  digital  assistant）、ラップトップ若しくは電子ノートブック、セルラ電話、IP電話、iPhone（登録商標）、iPad（登録商標）、Microsoft  Surface（登録商標）、Android（登録商標）電話、Google  Nexus（登録商標）、又は命令を実行可能な他のデバイス、コンポーネント、エレメント若しくはオブジェクトを含み、いずれかの種類のノード、ユーザデバイスを含んでもよい。“ユーザ”は、クライアントデバイスを動作させること、使用すること、又はインタフェースすることが可能ないずれかの人、エンティティ、ソフトウェア、又はデバイスを含んでもよい。或るクライアントデバイス130は、例えば、遠隔制御のデバイス、センサ又は埋め込みシステムの場合、人間のユーザ相互作用なしに動作してもよいことが、ここで明白に予期される。例えば、クライアントデバイス130-5は、埋め込みシステム、遠隔センサ、ネットワークコントローラ、又は人間のユーザにより通常は動作されない他のデバイスでもよい。クライアントデバイス130-5の場合、ユーザ132は、クライアントデバイス130-5にデータを送信し、或いはクライアントデバイス130-5からデータを受信する、制御される埋め込みオペレーティングシステム又は外部システムでもよい。
【００１９】
或る場合には、複数のレピュテーションサーバ110を有すること、又は複数の種類のクライアントデバイス130を別々に扱うようにレピュテーションサーバ110を構成することが有利になってもよい。例えば、Microsoft  Windows  7で実行可能なマルウェアペイロードは、前述の他のデバイスで実行可能でない可能性がある。むしろ、マルウェアペイロードは、特に目標を定めた特定のアーキテクチャに作用する必要があってもよい。しかし、この明細書は、単一のマルウェアペイロードが複数のクライアントデバイス130のプラットフォームに目標を定め得る状況を明確に予期する。例えば、マルウェアペイロードは、Java（登録商標）のようなクロスプラットフォーム言語で実現可能でもよく、複数のプラットフォームに共通のセキュリティ脆弱性を利用することが可能でもよい。
【００２０】
一例では、ユーザ132-1は、クライアントデバイス130-1を動作させ、クライアントデバイス130-1は、Android電話でもよい。この例では、多数の他のユーザもまた、同様に構成されたAndroid電話を動作させてもよく、実行可能オブジェクトを受信するアプリストア180にアクセスしてもよい。マルウェア作者170は、Android電話に目標を定めたマルウェアを生成したいと思ってもよく、前述の例示的な方法の１つ又は他の適切な方法によりこれを行ってもよい。
【００２１】
レピュテーションサーバ110は、例えば、アプリストア180のオペレータ又はサードパーティのセキュリティプロバイダにより運用されてもよい。更に、レピュテーションデータベースは、レピュテーションサーバ110のオペレータにより運用されてもよく、サードパーティにより提供されてもよい。一般論として、この明細書に開示されるエンティティは、具体的な構成に応じて別のエンティティでもよく、別のエンティティでなくてもよい。
【００２２】
レピュテーションサーバ110は、アプリストア180を介して配信される実行可能オブジェクト又はいずれかの適切な手段により配信される他の実行可能オブジェクトのレピュテーションを提供するように構成されてもよい。この明細書を通じて、“レピュテーション（reputation）”は、実行可能オブジェクト又はサブルーチンがマルウェアであるか否か或いはマルウェアを含むか否かの判断に関する信頼レベルを個々に或いは併せて表すいずれかの１つ以上のデータを含んでもよい。更に、この明細書の文脈において、レピュテーションは、全体の実行可能オブジェクトではなく、サブルーチン又はサブルーチンのグループに割り当てられてもよい。
【００２３】
図２は、この明細書の１つ以上の例による共通サブルーチンを含む複数のサブルーチンを含む複数の実行可能オブジェクトのブロック図である。この例では、実行可能オブジェクト210、220及び230は、複数のサブルーチンをそれぞれ含む。この例では、実行可能オブジェクト210は、サブルーチンA、B、C、D、E、F、G、及びHを含む。グラフの下に示すように、サブルーチンCは頻繁に実行される。サブルーチンE、F、及びHは、適度に頻繁に実行される。サブルーチンBは、希から適度に頻繁に実行される。サブルーチンA及びGは、希に実行される。
【００２４】
実行可能オブジェクト220には、サブルーチンI、J、K、C、D、L、F、M、及びNがある。特に、サブルーチンC及びDは、実行可能オブジェクト210と共通である。実行可能オブジェクト210のように、サブルーチンCは頻繁に実行される。サブルーチンI、J、F、及びMは、適度に頻繁に実行される。サブルーチンNは、希に実行される。サブルーチンLは決して実行されない。
【００２５】
実行可能オブジェクト230には、サブルーチンO、P、Q、F、C、R、及びSがある。同様に、サブルーチンCは非常に頻繁に実行される。サブルーチンFも同様に適度に頻繁に実行され、サブルーチンSも同様である。サブルーチンO、P、及びQは、希に実行される。サブルーチンRは、決して実行されない。
【００２６】
前述の例では、サブルーチンCは、頻繁に実行されて多くのアプリケーションに現れるため、比較的高い信頼度で高いレピュテーション（潜在的に適法であることを示す）を受け取ってもよい。サブルーチンFも、多くのアプリケーションに現れて適度に頻繁に実行されるため、比較的高いレピュテーションを受け取ってもよい。この明細書の文脈において、“高いレピュテーション”は、実行可能オブジェクト又はサブルーチンが適法であること及び／又はマルウェアがないことを高い信頼度まで示すいずれかのレピュテーションを含んでもよい。“低いレピュテーション”は、実行可能オブジェクト又はサブルーチンが適法であること及び／又はマルウェアがないことの低い信頼度に対応し、或いは逆に、実行可能オブジェクト又はサブルーチンがマルウェアに感染されている高い信頼度に対応する。“高いレピュテーション”及び“低いレピュテーション”の概念は、ここでは、１つ以上のレピュテーション尺度における少なくとも２つの反対の点を表すために開示されており、ここで特に明記しない限り、簡単な２値のレピュテーションの分類を意味することを意図するものではない。
【００２７】
サブルーチンCとは異なり、サブルーチンDは、希に実行されるものとして１つより多くのアプリケーションに現れるため、比較的疑わしくてもよい。従って、サブルーチンDは、人間のオペレータによる更なる分析のためにフラグが付けられてもよい。これは、例えば、逆コンパイル、シミュレーション、及び他の詳細な分析を含んでもよい。詳細な分析の後にサブルーチンDが希に必要な機能を備えた適法なサブルーチンであることが分かった場合、実行可能オブジェクトの一部としてオブジェクトDに直面した他のクライアントデバイスが、安全に実行可能であることを認識できるように、高いレピュテーションを手動で割り当てられてもよい。
【００２８】
決して実行されないサブルーチンL及びRもまた、比較的低いレピュテーションを割り当てられ、更なる詳細な分析又は人間の分析のためにフラグが付けられてもよい。更なる分析において、サブルーチンLがマルウェアを含むこと、及びサブルーチンRが維持されていない“死んだ（dead）”コード又はもはや有用でない“死んだ”コードを含むことが分かってもよい。この場合、双方のサブルーチンは、比較的低いレピュテーションスコアを受け取ってもよく、レピュテーションの更に微調整された制御が利用可能な或る実施例では、これらは、異なる種類のレピュテーションスコアを受け取ってもよい（例えば、サブルーチンRは、“排除”としてラベルが付けられてもよい）。例えば、サブルーチンLは、悪意のあるコードとしてフラグが付けられてもよい。サブルーチンRは、悪意がないが、依然として潜在的なセキュリティリスクがあるものとして識別する異なるフラグを受け取ってもよい。この理由は、使用されていないコード又は維持されていないコードは、マルウェア作者の攻撃ベクトルを含む可能性があるからである。従って、検疫、無効化、報告（例えば、ソフトウェア脆弱性の潜在的な源として）、又はサブルーチンRからのクライアントの保護を行うことが依然として望ましい可能性がある。
【００２９】
他の例では、実行可能オブジェクト210は、非常に高い全体レピュテーションを有してもよい。例えば、この理由は、評判の良いソフトウェアベンダにより提供された広く使用されるソフトウェアであり、実質的にマルウェアに関するユーザの苦情なしにかなりの時間の間に使用されているからである。この場合、サブルーチンA-Hの全ては、実行可能オブジェクト210から高いレピュテーションを継承してもよい。そのレピュテーションは、これらのサブルーチンが希に実行されるもの（実行可能オブジェクト220のサブルーチンD等）であっても、220及び230のような他の実行可能オブジェクトへのこれらのサブルーチンに従ってもよい。従って、この例では、サブルーチンDは、マルウェア動作を能動的に表し始めない限り、高いレピュテーションを有し続ける。
【００３０】
図３は、この明細書の１つ以上の例によるクライアントデバイス130のブロック図である。クライアントデバイス130は、メモリエレメント320に通信可能に結合されたプロセッサ310により制御される。例では、プロセッサ310は、バス370を介して他のシステムエレメントに通信可能に結合される。これらのエレメントは、非限定的な例として、ネットワークインタフェース340と、或る場合にはメモリエレメント320の一種でもよい記憶装置350と、ユーザインタフェース360とを含んでもよい。前述のエレメントのいずれかは、ハードウェア、ソフトウェア、ファームウェア、又はこれらのいずれかの組み合わせで実現されてもよいことを明確に意図する。
【００３１】
プロセッサ310は、例えば、実行可能ソフトウェア又はファームウェア命令を介して、クライアントデバイス130を制御するように構成される。“プロセッサ”は、非限定的な例として、マイクロプロセッサ、デジタルシグナルプロセッサ、フィールドプログラマブルゲートアレイ、プログラマブルロジックアレイ、特定用途向け集積回路、又は仮想マシンプロセッサを含み、ハードウェア、ソフトウェア、又はプログラム可能ロジックを提供するファームウェアのいずれかの組み合わせを含んでもよい。
【００３２】
メモリ320は、或る実施例では、比較的低い待ち時間の揮発性メモリでもよく、メインメモリ、キャッシュ、オンチップメモリ、L1メモリ、L2メモリ等を含んでもよい。この実施例では、プロセッサ310は、メモリ320との直接メモリアクセス構成で示されているが、他の実施例では、メモリ320は、システムバス370、他のバス、又は他の手段を介してプロセッサ310と通信してもよい点に留意すべきである。更に、この例では、メモリ320及び記憶装置350は、物理的又は概念的に別のデバイスとして示されているが、或る実施例では、メモリ320及び記憶装置350は、別のメモリエリアに分割されてもよく分割されなくてもよい物理的デバイスを共有してもよい。従って、ここに開示された構成は単なる例であり、限定ではないことが分かる。むしろ、メモリ及び記憶装置が別に言及される場合であっても、特に明記しない限り、単一の物理的又は論理的デバイスに具現されてもよいことを明確に意図する。
【００３３】
この例では、ネットワークインタフェース340は、アナログであれ、デジタルであれ、混合の信号であれ、クライアントデバイス130を他のコンピューティングデバイスに通信可能に結合するように構成されたいずれかの通信媒体を含む。ネットワークインタフェース340は、非限定的な例として、Wi-Fi、Ethernet、Firewire、光ファイバ、USB、シリアルインタフェース、赤外線、セルラネットワーク、デジタルPCSネットワーク、2Gデータネットワーク、3Gデータネットワーク、4G  WiMAX、又は4G  LTEデータネットワークを含んでもよい。
【００３４】
或る実施例では、ユーザインタフェース360は、クライアントデバイス130と相互作用する際にユーザを支援するために提供されてもよい。“ユーザインタフェース”は、リアルタイムであってもリアルタイムでなくても、ユーザがクライアントデバイス130と相互作用することを可能にするように構成されたハードウェア、ソフトウェア、及びファームウェアのいずれかの組み合わせを含んでもよい。例では、ユーザインタフェース360は、非限定的な例として、キーボード、マウス、ディスプレイモニタ、スピーカ、マイクロフォン、結合された入出力デバイスとして動作してもよい接触式ディスプレイ、及びカメラを含んでもよい。ユーザインタフェース360は、ユーザからの入力又は確認を求めるリアルタイムダイアログボックスを含み、グラフィカルユーザインタフェースのようなソフトウェアサービスを含んでもよい。
【００３５】
記憶装置350は、メモリ320の一種でもよい不揮発性メモリ媒体の例として開示されている。或る実施例では、メモリ320及び記憶装置350は、別のデバイスでもよく、メモリ320は、比較的低い待ち時間の揮発性メモリデバイスでもよく、記憶装置350は、比較的高い待ち時間の不揮発性メモリデバイスでもよい。記憶装置350はまた、ハードドライブ、ソリッドステートドライブ、外部記憶装置、RAID（redundant  array  of  independent  disks）、ネットワーク接続記憶装置、光記憶装置、テープドライブ、バックアップシステム、又は前述のいずれかの組み合わせのような他のデバイスでもよい。多くの他の構成も可能であり、この明細書の広い範囲内に含まれることを意図する。
【００３６】
一例では、メモリ320は、ここに記載のレピュテーションクライアント322を提供するように動作可能な実行可能命令を記憶している。メモリ320はまた、実行アプリ324のような実行状態の実行可能オブジェクトを有してもよい。記憶装置350はまた、停止状態又は静的状態でもよい実行可能オブジェクトを含んでもよい。レピュテーションクライアントエンジン322は、ここに開示された方法に従って、実行アプリ324（メモリ320内）及び記憶されたアプリ352（記憶装置350で静止中のデータ）の双方を分析するように構成されてもよい。或る実施例では、レピュテーションクライアントエンジン322は、実行のために（例えば、記憶されたアプリ352の一部として）記憶装置350からメモリ320にロードされた実行可能命令により提供されてもよい。命令は、例えば、図４の方法を実行することにより、プロセッサ310に対してここに記載のクライアントレピュテーションサービスを提供するように命令するように構成されてもよい。更に他の実施例では、レピュテーションクライアントエンジン322は、ハイパーバイザ内に提供されてもよく、仮想マシンに提供されてもよく、他の適切な仮想化プラットフォームに提供されてもよく、図４の方法のような適切な方法を実行するように構成された専用又は特殊目的のハードウェア、ソフトウェア、及び／又はファームウェアのいずれかの組み合わせとして提供されてもよい。同じ実施例又は他の実施例では、レピュテーションクライアントエンジン322は、クライアントデバイス130の残りからの適切な分離を提供するために、専用メモリで実行してもよく、別のプロセッサ又は他の信頼を受けた実行環境で実行してもよい。これは、マルウェア又はソフトウェアによるレピュテーションクライアント322の悪意のある操作又は偶発的な操作の双方を回避するのに役立ってもよい。
【００３７】
図４は、この明細書の１つ以上の例によるレピュテーションクライアントエンジンを提供する例示的な方法のフローチャートである。図３では、レピュテーションクライアント322は、クライアントデバイス130で実行するものとして開示されているが、レピュテーションクライアントは、レピュテーションサーバ110又は他のデバイスで実行してもよい点に留意すべきである。特定の実施例では、ここに開示されたステップはまた、複数のデバイスの間に分割されてもよい。例えば、クライアントデバイス130のバッテリ又は処理能力を保持するために、ここに開示されたステップのいくつかはクライアントデバイス130で実行されてもよく、他のものはレピュテーションサーバ110にオフロードされてもよい。
【００３８】
この例では、レピュテーションクライアント322は、クライアントデバイス130で実行し、“リアクティブ（reactive）”スクリーニングモデルを表す。このモデルでは、実行可能オブジェクトは、既存のレピュテーションなしに複数のクライアントデバイス130に展開されてもよい。実行可能オブジェクトがクライアントデバイス130で実行されると、実行可能オブジェクトのレピュテーションを更新するように実行プロファイルが構築される。他の実施例では、レピュテーションサーバ110及びクライアントデバイス130の双方は、図４の方法を実行してもよく、レピュテーションサーバ110は、基礎の識別を提供するために静的な分析を実行し、クライアントデバイス130は、レピュテーションを割り当てるために、動的な分析を実行する。
【００３９】
多くの他の組み合わせが、当業者に思い浮かび、これらは、この明細書の広い範囲内に含まれることを意図する。図４の方法及びこの明細書の他の方法のステップは、例のみとして特定の順序で開示されているが、取られるステップの順序は、別に明記される場合又は１つのステップが他のステップに続かなければならないことをこの開示の文脈が明白に明らかにする場合を除き、任意に再配置されてもよい点に更に留意すべきである。更に、１つのステップが明確又は必然的に他のものに続く場合、第２のステップが第１のステップの後に直接的に又は直ちに生じなければならないこと、介入するステップが生じなければならないこと、又は第２のステップが第１のステップの直接の結果、中間の結果、連続した結果でなければならないこと、又は第２のステップが第１のステップなしに生じることができないことを意味することを意図するものではない。
【００４０】
この例では、ブロック410において、レピュテーションクライアント322は、まず、例えば、アプリを含み、クライアントデバイス130での分析に利用可能な全ての実行可能オブジェクトを選択してもよい。選択ステップ410はまた、少なくとも１つの特性、イベント又はコンテキストに基づいて少なくとも１つの実行可能オブジェクトを選択すること（例えば、インストールされる前のダウンロードアプリを選択すること）を有してもよい。これは、実行アプリ324、記憶されたアプリ352、又はユーザが記憶装置350に記憶することを望むいずれかの実行可能オブジェクトのうち１つ又は全てを含んでもよい。選択はまた、例えば、常駐アプリのデータベースを生成又は更新することを含んでもよく、各実行可能オブジェクトの初期の全体レピュテーションを含んでもよい。初期のレピュテーションは、一例では“ゼロ”の状態に初期化されてもよく、他の非限定的な例ではレピュテーションサーバ110から受信してもよい。カタログ化もまた、個々のサブルーチンのアプリレピュテーションを生成して関連付けるためにメモリ空間又は構造を提供することを含んでもよい。
【００４１】
ブロック420において、各実行可能オブジェクトは、個々のサブルーチンに解析される。これは、例えば、非限定的な例として、関数のフッキング入口点（hooking  entry  point）を介して、全てのEIPが記録される完全な実行トレースを介して、又はメモリページへのアクセスの記録を介して、実行可能オブジェクトの実行プロファイルを表すフィールドテレメトリ（field  telemetry）を収集することを含んでもよい。後者は、一例では、IntelのTMSL（trusted  memory  services  layer）、又はDeepSAFE若しくはDeepDefenderを含むMcAfee,  Inc.から入手可能な商品により提供されてもよい。個々のサブルーチンを解析することは、関数の標準的なコンパイラスケルトンを介して、逆コンパイル後のコール（呼び出し）フローグラフの分析を介して、又は他の適切な方法を介して、１回より多く見つかったコード部分を識別することを更に有してもよい。
【００４２】
解析への静的な手法は、MOV  BP,SPにより後続されるPUSH  BPのような、サブルーチンの入口点で一般的に実行される命令を識別することを含んでもよい。サブルーチンの終わりも同様に、RETにより後続されるPOP  BPのような、サブルーチンの終わりに一般的に見つかる命令を介して識別されてもよい。他の例では、レピュテーションクライアント322は、実行可能オブジェクトを逆コンパイルし、フローグラフを再構成してもよい。
【００４３】
更なる動的な手法は、CPU分岐（CALL、RET、JMP命令）を監視すること、又は戻りアドレスのスタックを監視することを含んでもよい。Intelプロセッサのような特定のプロセッサ内に構築されたコールフローを再構成する際に支援するための分岐トレース及びブレークポイント（ハードウェア及びソフトウェア）のような機構も存在する。しかし、前述のものの全ては、非限定的な例のみとして開示されており、サブルーチンを解析及び識別する多くの他の可能な方法が存在することが認識されるべきであり、これらは、この明細書の広い範囲に含まれることを意図する。
【００４４】
解析はまた、分析のために実行可能オブジェクトの変更されたコピーを生成することを含んでもよい。この場合、特定のサブルーチンは、サブルーチンが実行される毎に更新される頻度カウンタ（又はカウントを行うルーチンへの呼び出し）を注入するように変更されてもよい。
【００４５】
各サブルーチンが識別されると、ブロック430において、各サブルーチンは、フィンガープリントされ、これは、前述の擬似固有の識別子を割り当てられることを意味する。これは、例えば、各サブルーチンの暗号ハッシュを計算することを含んでもよい。特に、暗号ハッシュは、サブルーチンが厳密に同一である場合にのみマッチし、これは、同じコンパイラオプションでコンパイルされた共通のコードの多くのユニットの場合でもよい。SHA2又はSHA3のような現代のハッシュは、ほとんどの衝突を回避するのに適しており、このことは、ハッシュ手法の擬似固有の性質を真に固有にするのに役立つ。従って、この明細書で使用されるときに“擬似固有”は、使用されるアプリケーションの目的で十分にほぼ固有であり、真に固有である必要はないが、真に固有でもよく、統計的に極めて低い衝突確率により特徴付けられる識別子を示す。
【００４６】
しかし、強力なハッシュは、異なるコンパイラオプションで同じソースコードを単にコンパイルしたことを含み、ささいな変更を除いて同一であるコードを識別しない。一例では、実質的に同一であるがわずかに異なるサブルーチンのマッチングを改善するために、“ファジーハッシュ（fuzzy  hashing）”又は“ファジーフィンガープリント（fuzzy  fingerprinting）”が使用されてもよい。例えば、テキスト文字列により良くマッチさせるために、テキスト文字列は全て大文字又は全て小文字に変換されてもよい。Intel/AMD  x32/x64コードにマッチさせるために、メモリ参照は、例えばゼロ又は連番で除去及び置換され、CPUオペコードのみがハッシュされるように残してもよい。例えば、ADD  AX,[2345]により後続されるMOV  AX,[1234]の代わりに、ファジーフィンガープリントは、ADD  AX,[1]により後続されるMOV  AX,[0]をハッシュする。これらの手法及び同様の手法は、わずかに変更されたコード部分のマッチングを改善し得る。
【００４７】
例えば、CTPH（context-triggered  piecewise  hashes）を使用するSSDEEPのような他のファジーハッシュ技術も使用されてもよい。異なるサブルーチンにある共通の部分列の辞書も構築されてもよく、サブルーチンは、共通の部分列のサイズ及び頻度に基づいてマッチされてもよい。
【００４８】
サブルーチンの識別を更にロバストにするために、プロセスとの複数のアクティブなマルウェア干渉の可能性を回避するために、改変のないフィンガープリント（tamper-free  fingerprinting）を実行することが有利になり得る。これは、例えば、非限定的な例として、ハイパーバイザのような信頼を受けた実行環境（TEE：trusted  execution  environment）内、OSカーネル内、或いはIntel  Secure  Guard  Extension  SGX内、Intel  vPro内、安全なエレメント若しくはファームウェア内でハッシュ又はフィンガープリントを実行することにより実現されてもよい。ハッシュステップを強化する他の方法は、レピュテーションサーバ110のような他の信頼を受けたコンピュータへの安全なネットワーク接続を介してハッシュするオブジェクトを送信することを含んでもよい。或る実施例では、全体のレピュテーションクライアント322は、TEEに配置されてもよい。
【００４９】
ここに開示されたフィンガープリント技術は、非限定的な例のみとして与えられている点に留意すべきであり、サブルーチンをフィンガープリントするいずれか適切な技術がこの明細書の広い範囲に含まれるべきであることを意図する。
【００５０】
ブロック440において、レピュテーションクライアントは、既知のレピュテーションを扱う。これらの既知のレピュテーションは、この方法の前の繰り返しの結果でもよく、レピュテーションサーバ110から受信されてもよい。この扱いは、非限定的な例として、既知の又は前に計算されたレピュテーションスコアを特定のサブルーチン又は実行可能オブジェクトに割り当てることを含んでもよい。マルウェアとして印が付けられた実行可能オブジェクトでは、このオブジェクトは、検疫、削除、無効化、又はその他に措置が行われてもよい。マルウェアを含む他の点で適法な実行可能オブジェクトでは、例えば、実行可能オブジェクトから原因となるサブルーチンをリンク解除すること、センシティブなリソースへのアクセスをブロックするように権限を再構成すること、悪意のある動作を除去したサブルーチンの“洗浄（scrubbed）”されたバージョンとサブルーチンを置換すること、実行することを妨げるシミュレーションされたデータをサブルーチンに提供すること、又は有害な行為を犯すことからサブルーチンを妨げることを含む措置ステップが行われてもよい。例えば、ユーザが特定の郵便番号内にいることが分かった場合にのみサブルーチンが活性化する場合、サブルーチンは、リストにない誤った郵便番号を絶えず供給されてもよい。この方法が十分な粒度で定められている場合、これは、ユーザの所望の機能を実行するために適法なGPSデータにそうでなければアクセスする必要がある場合であっても行われてもよい。これらの場合、誤った地理的データは、全体としての実行可能オブジェクトではなく、影響を受けたサブルーチンにのみ供給されてもよい。
【００５１】
ブロック450において、頻度スコアは、識別されたサブルーチンに割り当てられる。頻度は、使用中にサブルーチンが実行された回数を含んでもよく、また実行可能オブジェクト内でのサブルーチンへの呼び出しの数の静的な分析を含んでもよい。従って、ここで、頻度が複数の要因を含んでもよく、これらの複数の要因の組み合わせから導出してもよいことが明白に予期される。レピュテーションは、異なる頻度要因の重みを含んでもよいことが更に予期される。例えば、サブルーチンが実際に実行される回数は、サブルーチンへの静的な呼び出しの数より比較的重要でもよい。従って、一例のレピュテーションアルゴリズムは、実際に実行された合計回数及び静的な呼び出しの合計数への加重平均を割り当てることを含んでもよい。他の例のレピュテーションアルゴリズムでは、２つの要因が別々にトラッキングされ、信頼レベルは、一方又は双方がそれぞれの閾値より上又は下であるか否かに基づいてもよい。更に他の例では、サブルーチンが現れる異なるアプリケーションの数は、サブルーチンの他の信頼指標を提供してもよい。例えば、サブルーチンが多くの異なるアプリケーションに現れ、全てのアプリケーションに渡って非常に希に実行される場合、悪意のあるサブルーチンとしてフラグが付けられ、更なる人間の分析を受けてもよい。他の例では、多くの異なるアプリケーションに現れ、全てのアプリケーションにわたって頻繁に実行されるサブルーチンは、あまり悪意のあるものではないとしたレピュテーションを受け取ってもよい。ユーザの苦情の頻度及び重大性は、特に、特定のサブルーチンの実行に相互に関係している場合には、この明細書で考慮される頻度要因になってもよい。特定の実施例では、レピュテーションクライアント322は、生の頻度スコアのみを提供してもよく、他の実施例では、レピュテーションクライアント322は、頻度スコアに基づいてレピュテーションスコアを計算してもよい点に留意すべきである。
【００５２】
或る実施例では、頻度スコアの計算はまた、特別な設備又は機器を含んでもよい。例えば、特定のデバイスは、例えば、Intel  TMSLライブラリ、ブレークポイント、又はCPU分岐履歴を含む、プロセッサ又はメモリの監視のための適切なハードウェアのサポートを備えてもよい。他の例では、頻度データは、コードカバレッジテレメトリ（code  coverage  telemetry）を介して収集される。この例では、頻度データは、クライアントデバイス130から収集されてもよく、非限定的な例として、仮想化環境内、サンドボックス若しくはハイパーバイザ内又はエミュレータ内を含む隔離された環境での事前スクリーニングの間に収集されてもよい。これは、実行可能オブジェクトを目標のシステムから隔離してもよく、このことは、実行可能オブジェクトがまだレピュテーションスコアを有さない場合に特に有用になり得る。一実施例では、隔離された環境は、レピュテーションサーバ110に直接結合されてもよく、これらのレピュテーションを生成するために未知のアプリでの分析を実行してもよい。隔離された環境での実行は、シミュレーションされたプライベートユーザデータ又はユーザ入力を提供することにより強化されてもよく、このことは、マルウェア動作を識別するのに役立ってもよい。このようなシミュレーションの例は、2012年12月21日に出願された“User-Driven  Emulation  of  Applications”という名称の同時係属の米国出願13/723,495に提供されており、これを参照により援用する。例えば、隔離された環境では、実行可能オブジェクトは、位置データ、連絡先リスト、キーストローク又は履歴書を含むシミュレーションされたプライベートユーザデータを提供されてもよい。シミュレーションされたプライベートユーザデータはまた、実行可能オブジェクトが銀行、金融、医療又はソーシャルネットワーキングのサイト又はリソースへのアクセスのような“スパイ行為”を試み得るシミュレーションされたバックグラウンドタスクを含んでもよい。
【００５３】
移動デバイスのバッテリを保持するために、頻度計算は、デバイスが外部電源にプラグ接続されている場合に限定されてもよい。
【００５４】
更に他の例では、頻度スコアは、コードの複数の“リーフ”部分から、加えて（又はその代わりに）コールフローグラフの選択された分岐（１つの高いレベルのサブルーチンから呼び出されたリーフの集合）に関連付けられてもよい。これは、親ルーチン及びその子の双方の更なる階層的な頻度トラッキングを提供してもよい。これは、ダイナミックリンクライブラリ又は共有オブジェクトファイルへの呼び出しを行う実行可能ファイルのような複数のコンポーネントを含むソフトウェアのレピュテーションを計算するのに役立ってもよい。例では、実行可能オブジェクト及び全てのライブラリ並びにこれらの機能及びエクスポートは、頻度に考慮されてもよい。
【００５５】
ブロック460において、頻度スコアは、レピュテーションサーバ110に提供される。しかし、生の頻度スコアの提供は、ここでは非限定的な例のみとして開示されており、或る実施例では、ブロック450は、実際のレピュテーションスコアの計算を含んでもよい点に留意すべきである。この場合、レピュテーションは厳密に内部で使用されてもよく、レピュテーションサーバ110への転送のために計算されてもよい。
【００５６】
ブロック460において、計算された頻度スコア（又はレピュテーションスコア）は、他のデバイスから受信した他のスコアと集約するために、レピュテーションサーバ110に提供されてもよい。
【００５７】
特定の実施例では、この方法は、更なる実行可能オブジェクトの選択のために、或いは既存の実行可能オブジェクトで収集されたデータの改良のために、ブロック410に戻ってもよい。
【００５８】
図５は、この明細書の１つ以上の例によるレピュテーションサーバ110のブロック図である。この例では、レピュテーションサーバ110は、プロセッサ510により制御される。メモリ520は、プロセッサ510に通信可能に結合される。レピュテーションサーバ110の他のシステムコンポーネントは、システムバス570を介してプロセッサ510に接続する。レピュテーションサーバ110はまた、記憶装置550と、ネットワークインタフェース540とを含んでもよい。プロセッサ510は、図３のプロセッサ310と同様のものでもよい。同様に、メモリ520は、メモリ320と同様のものでもよく、記憶装置550は、記憶装置350と同様のものでもよく、ネットワークインタフェース540は、ネットワークインタフェース340と同様のものでもよい。
【００５９】
この例では、ネットワークインタフェース540は、レピュテーションサーバ110をネットワーク120に通信可能に結合するように構成されてもよい。或る場合には、記憶装置550は、レピュテーションデータベース140を含んでもよく、他の場合には、レピュテーションデータベース140は、別々に提供されてもよい。
【００６０】
メモリ520は、レピュテーションサーバソフトウェア522を記憶してもよい。或る実施例では、レピュテーションサーバエンジン522は、実行のために記憶装置550からメモリ520にロードされた実行可能命令により提供されてもよい。命令は、プロセッサ510に対して、例えば図６の方法を実行することにより、ここに記載のクライアントサーバサービスを提供するように命令するように構成されてもよい。更に他の実施例では、レピュテーションサーバエンジン522は、ハイパーバイザ内に提供されてもよく、仮想マシンに提供されてもよく、他の適切な仮想化プラットフォームに提供されてもよく、図６の方法のような適切な方法を実行するように構成された専用又は特殊目的のハードウェア、ソフトウェア、及び／又はファームウェアのいずれかの組み合わせとして提供されてもよい。同じ実施例又は他の実施例では、レピュテーションサーバエンジン522は、レピュテーションサーバ110の残りからの良好な分離を提供するために、専用メモリで動作してもよく、別のプロセッサ又は他の信頼を受けた実行環境で実行してもよい。
【００６１】
図６は、この明細書の１つ以上の例によるレピュテーションサーバエンジンを提供する方法のフローチャートである。この例によれば、ブロック610において、レピュテーションサーバ110は、１つ以上のクライアントデバイス130からデータを受信する。データは、例えば、実行可能オブジェクト又はサブルーチンの頻度スコア又はレピュテーションスコアを含んでもよい。
【００６２】
ブロック620において、マスターカタログ（例では、十分な実行可能オブジェクト及びサブルーチンをカバーする）は、例えば、レピュテーションデータベース140に含まれるように更新されてもよい。更新は、マスターアプリカタログに以前にないアプリ又はサブルーチンを追加すること、又はその他にクライアントデバイス130から受信した実行可能オブジェクト及びサブルーチンについてのデータを保持するようにマスターカタログを用意することを含んでもよい。
【００６３】
ブロック630において、実行可能オブジェクト及びサブルーチンは、レピュテーションデータベース140の既存の実行可能オブジェクト及びサブルーチンに相互参照されてもよく、これらがマッチするものとして識別されることを可能にする。ブロック640において、レピュテーションスコアは、頻度に基づいて計算され、レピュテーションデータベース140は、新たなレピュテーションスコアで更新されてもよい。前述のように、或る場合には、クライアントデバイス130は、ローカルでレピュテーションスコアを計算していてもよい。この場合、“グローバル”レピュテーションスコアは、クライアントデバイスにより提供されたレピュテーションスコアに基づいて計算されてもよい。他の実施例では、クライアントデバイス130により提供されたレピュテーションスコアは、レピュテーションサーバ110により計算されたグローバルレピュテーションスコアを優先して破棄されてもよい。レピュテーションサーバ110でレピュテーションスコアを計算する多くのアルゴリズムが可能であり、特許請求の範囲を含むこの明細書の範囲は、明記しない限りいずれかの特定のアルゴリズムに限定されることを意図するものではないことが認識されるべきである。
【００６４】
或る実施例では、レピュテーションスコアはまた、対応する開発者又はチームのレピュテーションを考慮してもよい。例えば、会社を退職した開発者、疑わしい開発者、逮捕された開発者、悪意のあるソフトウェア組織との繋がりが知られている開発者、又は他に疑わしい個人的なレピュテーションを有する開発者は、開発したコードに更なる精査を認めてもよい。或る場合には、ソフトウェア開発会社からの協力が有利になり得る。同様の考慮は、非限定的な例として、外部ライブラリ、下請け、及びオープンソースプロジェクトのようなコードのサードパーティに当てはまってもよい。例えば、CVS（concurrent  versioning  system）からの確証記録は、どの開発者がどのサブルーチンを任されているかを決定するために使用されてもよい。頻度及びレピュテーションデータはまた、APIを介してソフトウェア開発チームに提供し戻されてもよく、このことは、会社が開発プロセスを改善して自己の開発プロセスに更に大きい見識を得ることに役立ってもよい。
【００６５】
ブロック650において、サブルーチン又は実行可能オブジェクトの特定のクラスは、低い頻度に基づくレピュテーションスコアを有することに基づいて“疑わしい”として指定されてもよい。これらは、例えば人間のオペレータによる更なる詳細な分析に指定されてもよい。人間のオペレータからの詳細な分析が、悪意のあるコードを含むものとしてこれらのサブルーチン及び実行可能オブジェクトを明らかにした場合、これらは、マルウェアとしてフラグが付けられてもよく、措置ステップが行われてもよい。
【００６６】
ブロック660において、既知のオブジェクトのレピュテーションデータは、クライアントデバイス130に配信し戻されてもよい。レピュテーション情報は、APIを介してネットワークを介したサービスとして提供されてもよい。或る実施例では、更なるサブルーチン及び実行可能オブジェクトの処理のために、実行はブロック610に戻ってもよい。
【００６７】
前述のことは、当業者がこの開示の態様をより良く理解し得るように、複数の実施例の特徴を概説している。当業者は、ここに紹介された実施例の同じ目的を実行し、及び／又は同じ利点を実現する他の処理及び構成を設計又は変更する基礎として、この開示を容易に使用し得ることを認識するべきである。当業者はまた、このような等価な構成がこの開示の要旨及び範囲を逸脱しないこと、この開示の要旨及び範囲から逸脱することなく様々な変更、置換及び代替を行い得ることも認識するべきである。
【００６８】
この開示の特定の実施例は、システムオンチップ（SOC：system  on  chip）中央処理装置（CPU：central  processing  unit）パッケージを容易に含んでもよい。SOCは、コンピュータ又は他の電子システムのコンポーネントを単一のチップに統合する集積回路を表す。これは、デジタル、アナログ、混合の信号、及び無線周波数機能を含んでもよい。これらの全ては、単一のチップ基板に提供されてもよい。他の実施例は、複数のチップが単一の電子パッケージ内に位置し、電子パッケージを通じて相互に密に相互作用するように構成されたマルチチップモジュール（MCM：multi-chip-module）を含んでもよい。様々な他の実施例では、デジタル信号処理機能は、特定用途向け集積回路（ASIC：Application  Specific  Integrated  Circuit）、フィールドプログラマブルゲートアレイ（FPGA：Field  Programmable  Gate  Array）、及び他の半導体チップ内の１つ以上のシリコンコアに実現されてもよい。
【００６９】
例示的な実現では、ここに概説した処理動作の少なくとも一部はまた、ソフトウェアで実現されてもよい。或る実施例では、これらの特徴の１つ以上は、開示された図面のエレメントの外部に提供されたハードウェアに実現されてもよく、意図した機能を実現するためにいずれか適切な方式で統合されてもよい。様々なコンポーネントは、ここに概説した動作を実現するために協調し得るソフトウェア（又は往復動作するソフトウェア（reciprocating  software））を含んでもよい。更に他の実施例では、これらのエレメントは、この動作を容易にするいずれか適切なアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インタフェース、又はオブジェクトを含んでもよい。
【００７０】
更に、記載のマイクロプロセッサに関連するコンポーネントのいくつかは、除去されてもよく、他に統合されてもよい。一般的な意味では、図面に示す構成は、表現において論理的になり得るが、物理的なアーキテクチャは様々な並び替え、組み合わせ、及び／又はこれらのエレメントのハイブリッドを含んでもよい。ここに概説した動作目的を実現するために、数え切れないほどの可能な設計構成が使用可能である点に留意することは避けられない。従って、関連するインフラストラクチャは、無数の代替構成、設計選択肢、デバイスの可能性、ハードウェア構成、ソフトウェア実装、設備オプション等を有する。
【００７１】
いずれか適切に構成されたプロセッサコンポーネントは、ここに詳細に説明した動作を実現するために、データに関連するいずれかの種類の命令を実行することができる。ここに開示されたいずれかのプロセッサは、エレメント又は物品（例えば、データ）を１つの状態又は物から他の状態又は物に変換してもよい。他の例では、ここに概説したいくつかの動作は、固定のロジック又はプログラム可能ロジック（例えば、プロセッサにより実行されるソフトウェア及び／又はコンピュータ命令）で実現されてもよく、ここで識別されたエレメントは、何らかの種類のプログラム可能プロセッサ、プログラム可能デジタルロジック（例えば、フィールドプログラマブルゲートアレイ（FPGA）、消去可能プログラム可能読み取り専用メモリ（EPROM）、電気的消去可能プログラム可能読み取り専用メモリ（EEPROM））、デジタルロジックを含むASIC、ソフトウェア、コード、電子命令、フラッシュメモリ、光ディスク、CD-ROM、DVD  ROM、磁気若しくは光学カード、電子命令を記憶するのに適した他の種類の機械読み取り可能媒体、又はこれらのいずれか適切な組み合わせでもよい。動作中に、プロセッサは、必要な場合には特定のニーズに基づいて、いずれか適切な種類の過渡的でない記憶媒体（例えば、ランダムアクセスメモリ（RAM）、読み取り専用メモリ（ROM）、フィールドプログラマブルゲートアレイ（FPGA）、消去可能プログラム可能読み取り専用メモリ（EPROM）、電気的消去可能プログラム可能読み取り専用メモリ（EEPROM）等）、ソフトウェア、ハードウェア、又は他の適切なコンポーネント、デバイス、エレメント若しくはオブジェクトに情報を記憶してもよい。更に、プロセッサにおいてトラッキング、送信、受信、又は記憶される情報は、特定のニーズ及び実現に基づいて、いずれかのデータベース、レジスタ、テーブル、キャッシュ、キュー、制御リスト又は記憶構造に提供されてもよい。これらの全ては、いずれか適切な時間枠に参照されてもよい。ここで説明したメモリアイテムのいずれかは、広い用語‘メモリ’の中に含まれるものとして解釈されるべきである。同様に、ここに記載の潜在的な処理エレメント、モジュール及び機械は、広い用語‘マイクロプロセッサ’又は‘プロセッサ’の中に含まれるものとして解釈されるべきである。
【００７２】
ここに記載の機能の全部又は一部を実現するコンピュータプログラムロジックは、ソースコード形式、コンピュータ実行可能形式、及び様々な中間形式（例えば、アセンブラ、コンパイラ、リンカ又はロケータにより生成された形式）を含むが、これらに限定されない様々な形式で具現される。例では、ソースコードは、様々なオペレーティングシステム又はオペレーティング環境で使用されるオブジェクトコード、アセンブリ言語、又はOpenCL、Fortran、C、C++、JAVA（登録商標）、Python、Perl、JavaScript（登録商標）若しくはHTMLのようなハイレベル言語のような様々なプログラミング言語で実現された一連のコンピュータプログラム命令を含む。ソースコードは、様々なデータ構造及び通信メッセージを規定して使用してもよい。ソースコードは、（例えば、インタープリタを介して）コンピュータ実行可能形式になってもよく、ソースコードは、（例えば、翻訳器、アセンブラ、又はコンパイラを介して）コンピュータ実行可能形式に変換されてもよい。
【００７３】
前述の実施例の説明では、コンデンサ、バッファ、グラフィックエレメント、相互接続ボード、クロック、DDR、カメラセンサ、ディバイダ、インダクタ、抵抗、増幅器、スイッチ、デジタルコア、トランジスタ、及び／又は他のコンポーネントは、特定の回路のニーズに対応するために、容易に交換、置換又は変更され得る。更に、補足的な電子デバイス、ハードウェア、過渡的でないソフトウェア等の使用は、この開示の教示を実現するための同等に実行可能な選択肢を提供する点に留意すべきである。
【００７４】
一例では、図面のいずれかの数の電気回路は、関連する電子デバイスの基板上に実現されてもよい。基板は、電子デバイスの内部電子システムの様々なコンポーネントを保持し、他の周辺機器のためのコネクタを更に提供することができる一般的な回路ボードでもよい。より具体的には、基板は、システムの他のコンポーネントが電気的に通信することができる電気接続を提供してもよい。いずれか適切なプロセッサ（デジタルシグナルプロセッサ、マイクロプロセッサ、サポートするチップセット等）、メモリエレメント等は、特定の構成上のニーズ、処理需要、コンピュータ設計等に基づいて基板に適切に結合され得る。外部記憶装置、更なるセンサ、オーディオ／ビデオ表示のためのコントローラ、及び周辺デバイスのような他のコンポーネントは、プラグインカードとして、或いはケーブルを介して基板に接続されてもよく、基板自体に統合されてもよい。他の例では、図面の電気回路は、スタンドアローンモジュール（例えば、特定のアプリケーション又は機能を実行するように構成されたコンポーネント及び回路に関連するデバイス）として実現されてもよく、電子デバイスのアプリケーション特有のハードウェアへのプラグインモジュールとして具現されてもよい。
【００７５】
ここに提供された複数の例を用いて、２つ、３つ、４つ又はそれ以上の電気コンポーネントに関して相互作用が記載されることがある点に留意すべきである。しかし、これは、明瞭性及び例示のみの目的で行われている。システムは、いずれか適切な方式で統合されてもよいことを認識するべきである。同様の設計選択肢の中で、図面の示されたコンポーネント、モジュール及びエレメントのいずれかは、様々な可能な構成で組み合わされてもよく、これらの全てはこの明細書の広い範囲内にあることは明らかである。特定の場合には、限られた数の電気エレメントを参照することによってのみ、所与の一式のフローの機能の１つ以上を説明することが容易である場合がある。図面の電気回路及びその教示は、容易に拡張可能であり、多数のコンポーネント及び更に複雑／高度な配置及び構成に対応可能であることが認識されるべきである。従って、提供される例は、多数の他のアーキテクチャに潜在的に適用されるため、範囲を限定するものであるべきでなく、電気回路の広い教示を抑制するものであるべきではない。
【００７６】
複数の他の変更、置換、変形、代替及び修正は、当業者に明らかになり、この開示は、特許請求の範囲内に入るこのような変更、置換、変形、代替及び修正を全て含むことを意図する。米国特許商標庁（USPTO）を支援するため、更に、特許請求の範囲を解釈する際にこの出願に対して発行されたいずれかの特許のいずれかの読者を支援するため、出願人は、出願人が(a)  “手段”又は“ステップ”という用語が特定の請求項で特に使用されない限り、出願日において存在するU.S.C.セクション112の第６段落(6)を特許請求の範囲のいずれかが引き起こすことを意図するものではなく、(b)明細書のいずれかの言及によって、そうでなければ特許請求の範囲に反映されない方法でこの明細書を限定することを意図するものではない。
【００７７】
＜例示的な実施例の実現＞
非限定的な例として、例１：実行可能オブジェクトの頻度に基づく分類を実行する装置であって、メモリに通信可能に結合されたプロセッサと、ネットワークインタフェースと、プロセッサに動作可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを各サブルーチンに割り当てるように動作可能なレピュテーションクライアントエンジンとを有する装置が開示される。
【００７８】
例２：レピュテーションクライアントエンジンは、ネットワークインタフェースに実行頻度スコアを提供し、ネットワークインタフェースで実行可能オブジェクトのレピュテーションスコアを受信するように更に動作可能である、例１に記載のレピュテーションクライアントが開示される。
【００７９】
例３：実行頻度スコアを各サブルーチンに割り当てることは、実行可能オブジェクトを実行し、サブルーチンへの呼び出しを記録することを更に有する、例１又は２に記載のレピュテーションクライアントが開示される。
【００８０】
例４：レピュテーションクライアントエンジンは、隔離された環境で実行可能オブジェクトを実行するように更に動作可能である、例１〜３のいずれかに記載のレピュテーションクライアントが開示される。
【００８１】
例５：実行可能オブジェクトを複数のサブルーチンに解析することは、頻度カウンタをサブルーチンに注入するように実行可能オブジェクトのコピーを変更することを更に有する、例１〜４のいずれかに記載のレピュテーションクライアントが開示される。
【００８２】
例６：例１〜５のいずれかに記載のレピュテーションクライアントエンジンを提供するようにプロセッサに対して命令するように動作可能な実行可能命令を記憶した１つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
【００８３】
例７：メモリに通信可能に結合されたプロセッサと、ネットワークインタフェースと、プロセッサに通信可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てるように動作可能なレピュテーションサーバエンジンとを有するレピュテーションサーバが開示される。
【００８４】
例８：レピュテーションサーバエンジンは、複数のサブルーチンのレピュテーションスコアに少なくとも部分的に基づいて、実行可能オブジェクトのレピュテーションスコアを計算し、ネットワークインタフェースを介してレピュテーションスコアの少なくとも１つを複数のレピュテーションクライアントに配信するように更に動作可能である、例７に記載のレピュテーションサーバが開示される。
【００８５】
例９：レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを更に有する、例８又は９に記載のレピュテーションサーバが開示される。
【００８６】
例１０：実行可能オブジェクトを複数のサブルーチンに解析することは、複数のサブルーチンに関するデータをレピュテーションクライアントから受信することを更に有する、例８〜９のいずれかに記載のレピュテーションサーバが開示される。
【００８７】
例１１：レピュテーションスコアを各サブルーチンに割り当てることは、各サブルーチンの実行頻度スコアをレピュテーションクライアントから受信することを更に有する、例８〜１０のいずれかに記載のレピュテーションサーバが開示される。
【００８８】
例１２：レピュテーションスコアを各サブルーチンに割り当てることは、擬似固有のフィンガープリントを各サブルーチンに割り当て、マッチするサブルーチンの頻度又はレピュテーションスコアについてレピュテーションデータベースに問い合わせるために、擬似固有のフィンガープリントを使用することを更に有する、例８〜１１のいずれかに記載のレピュテーションサーバが開示される。
【００８９】
例１３：レピュテーションスコアを各サブルーチンに割り当てることは、複数の実行可能オブジェクトの間の実行頻度を有するサブルーチンの実行頻度スコアを受信することを更に有する、例８〜１２のいずれかに記載のレピュテーションサーバが開示される。
【００９０】
例１４：レピュテーションサーバエンジンは、隔離された環境内で実行可能オブジェクトを実行し、この実行頻度に基づいてサブルーチン頻度スコアを割り当てるように更に動作可能である、例８〜１３のいずれかに記載のレピュテーションサーバが開示される。
【００９１】
例１５：レピュテーションスコアを各サブルーチンに割り当てることは、実行可能オブジェクトを静的に分析することを更に有する、例８〜１４のいずれかに記載のレピュテーションサーバが開示される。
【００９２】
例１６：レピュテーションサーバエンジンは、更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けるように更に動作可能である、例８〜１５のいずれかに記載のレピュテーションサーバが開示される。
【００９３】
例１７：実行可能オブジェクトのレピュテーションは、複数のサブルーチンのレピュテーションに少なくとも部分的に基づく、例８〜１６のいずれかに記載のレピュテーションサーバが開示される。
【００９４】
例１８：レピュテーションサーバエンジンは、実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを複数のサブルーチンに割り当てるように更に動作可能である、例８〜１７のいずれかに記載のレピュテーションサーバが開示される。
【００９５】
例１９：レピュテーションサーバエンジンは、擬似固有のフィンガープリントを少なくとも１つのサブルーチンに割り当て、複数の実行可能オブジェクトの間でサブルーチンの実行頻度スコアを計算し、レピュテーションスコアを実行頻度スコアに関連付けるように更に動作可能である、例８〜１８のいずれかに記載のレピュテーションサーバが開示される。
【００９６】
例２０：擬似固有のフィンガープリントをサブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、例９に記載のレピュテーションサーバが開示される。
【００９７】
例２１：レピュテーションサーバエンジンは、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別するように更に動作可能である、例８〜２０のいずれかに記載のレピュテーションサーバが開示される。
【００９８】
例２２：レピュテーションサーバエンジンは、低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別するように更に動作可能である、例８〜２１のいずれかに記載のレピュテーションサーバが開示される。
【００９９】
例２３：例８〜２２のいずれかに記載のレピュテーションサーバエンジンを提供するように動作可能な実行可能命令を記憶した１つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
【０１００】
例２４：実行可能オブジェクトのレピュテーションを計算する方法であり、コンピューティングデバイスで実行可能な方法であって、実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを各サブルーチンに割り当て、実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当て、サブルーチンのレピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てることを有する方法が開示される。
【０１０１】
例２５：レピュテーションスコアを実行可能オブジェクトに割り当てることは、擬似固有の識別子をサブルーチンに割り当て、前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つけ、サブルーチンの実行頻度を集約することを更に有する、例２４に記載の方法が開示される。
【０１０２】
例２６：レピュテーションサーバエンジンを提供する方法であって、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てることを有する方法が開示される。
【０１０３】
例２７：レピュテーションを実行可能オブジェクトに割り当て、実行可能オブジェクトのレピュテーションは、サブルーチンのレピュテーションに少なくとも部分的に基づくことを更に有する、例２６に記載の方法が開示される。
【０１０４】
例２８：更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けることを更に有する、例２６又は２７に記載の方法が開示される。
【０１０５】
例２９：レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを有する、例２６〜２８のいずれかに記載の方法が開示される。
【０１０６】
例３０：レピュテーションスコアを各サブルーチンに割り当てるように動作可能な命令は、実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアをサブルーチンに割り当てるように更に動作可能である、例２６〜２９のいずれかに記載の方法が開示される。
【０１０７】
例３１：各サブルーチンのレピュテーションスコアを割り当てるように動作可能な命令は、擬似固有のフィンガープリントをサブルーチンに割り当て、複数の実行可能オブジェクトの間でサブルーチンの実行頻度スコアを計算し、レピュテーションスコアを実行頻度スコアに関連付けるように更に動作可能である、例２６〜３０のいずれかに記載の方法が開示される。
【０１０８】
例３２：擬似固有のフィンガープリントをサブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、例３１に記載の方法が開示される。
【０１０９】
例３３：更なる詳細な分析のために低いレピュテーションスコアを有するサブルーチンにフラグを付けることを更に有する、例２６〜３２のいずれかに記載の方法が開示される。
【０１１０】
例３４：実行頻度スコアを各サブルーチンに割り当て、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別することを更に有する、例２６〜３３のいずれかに記載の方法が開示される。
【０１１１】
例３５：低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別することを更に有する、例３４に記載の方法が開示される。
【０１１２】
例３６：隔離された環境で実行可能オブジェクトを実行することを更に有する、例２６〜３４のいずれかに記載の方法が開示される。
【０１１３】
例３７：例２６〜３６のいずれかに記載の方法を実行する手段を有する装置が開示される。
【０１１４】
例３８：手段は、プロセッサ及びメモリを有する、例３７に記載の装置が開示される。
【０１１５】
例３９：メモリは、実行された場合、装置に対して例３６〜３６のいずれかに記載の方法を実行させる機械読み取り可能命令を有する、例３７又は３８に記載の装置が開示される。
【０１１６】
例４０：装置は、コンピューティングシステムである、例３７〜３９のいずれかに記載の装置が開示される。
【０１１７】
例４１：プロセッサに対して例２６〜３６のいずれかに記載の方法を実行するように命令するように動作可能な実行可能命令を記憶した１つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
【０１１８】
例４２：実行可能オブジェクトを複数のサブルーチンに解析する手段と、実行頻度スコアを各サブルーチンに割り当てる手段と、実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当てる手段と、サブルーチンのレピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てる手段とを有するコンピューティングデバイスが開示される。
【０１１９】
例４３：レピュテーションスコアを実行可能オブジェクトに割り当てる手段は、擬似固有の識別子をサブルーチンに割り当てる手段と、前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つける手段と、サブルーチンの実行頻度を集約する手段とを更に有する、例４２に記載のコンピューティングデバイスが開示される。
【０１２０】
例４４：手段のそれぞれは、過渡的でないコンピュータ読み取り可能媒体に記憶された実行可能命令を有する、例４２又は４３に記載のコンピューティングデバイスが開示される。
【図１】
0006326502.tif 000002
【図２】
0006326502.tif 000003
【図３】
0006326502.tif 000004
【図４】
0006326502.tif 000005
【図５】
0006326502.tif 000006
【図６】
0006326502.tif 000007