(58)【調査した分野】(Int.Cl.,DB名)
モバイルデバイス上でインストール前にマルウェアを検出するためのコンピュータ実装方法であって、前記方法の少なくとも一部が、少なくとも1つのプロセッサを備えるモバイルコンピューティングデバイスによって実施され、前記方法が、
アプリケーションを前記モバイルコンピューティングデバイスにインストールするアプリケーションインストールエージェントの1つ以上の通信を傍受することと、
前記モバイルコンピューティングデバイス上の監視エージェントによって、前記アプリケーションインストールエージェントを起動しようとする試みを検出することと、
前記監視エージェントによって、前記アプリケーションインストールエージェントを起動しようとする前記試みを中断し、前記監視エージェントが前記アプリケーションインストールエージェントからの通信を傍受することができるように、前記監視エージェントのプロセスとして前記アプリケーションインストールエージェントを再起動することと、
前記1つ以上の傍受された通信に基づいて、前記アプリケーションインストールエージェントによって少なくとも部分的にダウンロードされたアプリケーションを識別することと、
前記アプリケーションの識別に応答して、かつ前記アプリケーションが前記モバイルコンピューティングデバイスにインストールされる前に、マルウェアについて前記アプリケーションをスキャンすることと、
前記スキャンに基づいて、前記アプリケーションがマルウェアを含むと判定することと、
前記アプリケーションがマルウェアを含むという判定に応答して、セキュリティアクションを実施することと、を含む、コンピュータ実装方法。
前記監視エージェントが、前記アプリケーションインストールエージェントの入力又は出力のうちの少なくとも1つをフックすることによって、前記アプリケーションインストールエージェントからの前記通信を傍受する、請求項1に記載のコンピュータ実装方法。
前記アプリケーションインストールエージェントの前記1つ以上の通信を傍受することが、リモートサーバから前記アプリケーションをダウンロードするという前記アプリケーションインストールエージェントからの要求を傍受することを含む、請求項1に記載のコンピュータ実装方法。
前記アプリケーションインストールエージェントの前記1つ以上の通信を傍受することが、前記アプリケーションを前記モバイルコンピューティングデバイスにインストールするという前記アプリケーションインストールエージェントによる要求を傍受することを含む、請求項1に記載のコンピュータ実装方法。
前記アプリケーションを識別することが、前記アプリケーションを前記モバイルコンピューティングデバイスにインストールするという前記要求に基づいて、前記アプリケーションのファイルパスを識別することを含む、請求項4に記載のコンピュータ実装方法。
前記アプリケーションを識別することが、前記ファイルパスを、前記スキャン工程を実施するスキャンエージェントに提供することを更に含む、請求項5に記載のコンピュータ実装方法。
前記監視エージェントが、前記アプリケーションインストールエージェントの入力又は出力のうちの少なくとも1つをフックすることによって、前記アプリケーションインストールエージェントからの前記通信を傍受する、請求項9に記載のシステム。
前記傍受モジュールが、前記アプリケーションを前記モバイルコンピューティングデバイスにインストールするという前記アプリケーションインストールエージェントによる要求を傍受することによって、前記アプリケーションエージェントの前記1つ以上の通信を傍受する、請求項9に記載のシステム。
前記識別モジュールが、前記アプリケーションを前記モバイルコンピューティングデバイスにインストールするという前記要求に基づいて、前記アプリケーションのファイルパスを識別することによって、前記アプリケーションを識別する、請求項11に記載のシステム。
前記スキャンモジュールが、前記アプリケーションがダウンロードされている間に前記アプリケーションによってスキャンすることによって、前記アプリケーションをスキャンする、請求項9に記載のシステム。
前記スキャンモジュールが、前記アプリケーションが完全にダウンロードされた後に前記アプリケーションをスキャンすることによって、前記アプリケーションをスキャンする、請求項9に記載のシステム。
前記セキュリティモジュールが、前記アプリケーションのインストールをブロックすることによって、前記セキュリティアクションを実施する、請求項9に記載のシステム。
【発明を実施するための形態】
【0012】
本開示は、概して、インストール前にモバイルデバイス上でマルウェアを検出するためのシステム及び方法を対象とする。以下で更に詳細に説明されるように、本明細書に記載されるシステム及び方法は、マルウェアがモバイルコンピューティングデバイスにインストールされる前にマルウェアを検出するために、アプリケーションインストールエージェントの通信を傍受することができる。具体的には、本明細書のシステム及び方法は、アプリケーションをダウンロードし、かつ/又はアプリケーションをインストールするというアプリケーションインストールエージェントからの、要求を傍受し、マルウェアについてアプリケーションをスキャンし、次いで、アプリケーションのインストールをブロックすることによって、アンチマルウェア開発者がロバストなプロアクティブアンチマルウェアシステムを作成する助けとなり得る。
【0013】
以下、
図1、
図2、及び
図4を参照して、インストール前にモバイルデバイス上でマルウェアを検出するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明も
図3に関連して提供される。更に、本明細書に記載される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が、それぞれ
図5及び
図6に関連して提供される。
【0014】
図1は、インストール前にモバイルデバイス上でマルウェアを検出するための例示的なシステム100のブロック図である。この図に例証されるように、例示的なシステム100は、1つ以上のタスクを実施するための1つ以上のモジュール102を含んでもよい。例えば、以下で更に詳細に説明されるように、例示的なシステム100は、アプリケーションをモバイルコンピューティングデバイスにインストールするアプリケーションインストールエージェントの1つ以上の通信を傍受する、傍受モジュール104を含んでもよい。例示的なシステム100は、1つ以上の傍受された通信に基づいて、アプリケーションインストールエージェントによって少なくとも部分的にダウンロードされたアプリケーションを識別する、識別モジュール106も含んでもよい。例示的なシステム100は、アプリケーションの識別に応答して、かつアプリケーションがモバイルコンピューティングデバイスにインストールされる前に、マルウェアについてアプリケーションをスキャンする、スキャンモジュール108を更に含んでもよい。加えて、例示的なシステム100は、スキャンに基づいて、アプリケーションがマルウェアを含むと判定する、判定モジュール110を含んでもよい。例示的なシステム100は、アプリケーションがマルウェアを含むという判定に応答して、セキュリティアクションを実施する、セキュリティモジュール112も含んでもよい。別々の要素として例証されるが、
図1のモジュール102のうちの1つ以上は、単一のモジュール又はアプリケーションの部分を表してもよい。
【0015】
ある特定の実施形態において、
図1のモジュール102のうち1つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに1つ以上のタスクを実施させ得る、1つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下で更に詳細に説明されるように、モジュール102のうちの1つ以上は、
図2に例証されるデバイス(例えば、モバイルコンピューティングデバイス202及び/又はサーバ206)、
図4のスマートフォン402、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の部分などの、1つ以上のコンピューティングデバイスに記憶され、その上で作動するように構成されたソフトウェアモジュールを表してもよい。
図1のモジュール102のうちの1つ以上は、1つ以上のタスクを実施するように構成された1つ以上の専用コンピュータの全て又は一部も表してもよい。
【0016】
図1に例証されるように、例示的なシステム100は、マルウェアシグネチャデータベース120などの、1つ以上のデータベースも含んでもよい。一実施例において、マルウェアシグネチャデータベース120は、様々な既知のマルウェアシグネチャを記憶するように構成されてもよい。本実施例において、アンチマルウェアシステムは、マルウェアシグネチャデータベース120で見られるものと同様なマルウェアシグネチャを検出するためにモバイルコンピューティングデバイスのファイルをスキャンすることができる。このようにして、アンチマルウェアシステム(例えば、
図4のアンチマルウェアシステム412)は、モバイルコンピューティングデバイスのマルウェアを検出するために、マルウェアシグネチャデータベース120を利用することができる。
【0017】
マルウェアシグネチャデータベース120は、単一のデータベース若しくはコンピューティングデバイス、又は複数のデータベース若しくはコンピューティングデバイスの部分を表してもよい。例えば、マルウェアシグネチャデータベース120は、
図2のサーバ206の一部、
図4のスマートフォン402、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の部分を表してもよい。代替的に、
図1のマルウェアシグネチャデータベース120は、
図2のサーバ206、
図4のスマートフォン402、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の部分などの、コンピューティングデバイスによってアクセスすることができる、1つ以上の物理的に別々のデバイスを表してもよい。
【0018】
図1の例示的なシステム100は、様々な方法で実装することができる。例えば、例示的なシステム100の全て又は一部は、
図2における例示的なシステム200の部分を表してもよい。
図2に示されるように、システム200は、ネットワーク204を介してサーバ206と通信しているモバイルコンピューティングデバイス202を含んでもよい。一実施例において、モバイルコンピューティングデバイス202は、モジュール102のうちの1つ以上によってプログラムすることができ、及び/又はマルウェアシグネチャデータベース120の中のデータの全て又は一部を記憶することができる。加えて、又は代替的に、サーバ206は、モジュール102のうちの1つ以上によってプログラムすることができ、及び/又はマルウェアシグネチャデータベース120の中のデータの全て又は一部を記憶することができる。
【0019】
一実施形態において、
図1のモジュール102のうちの1つ以上は、モバイルコンピューティングデバイス202及び/又はサーバ206の少なくとも1つのプロセッサによって実行したときに、モバイルコンピューティングデバイス202及び/又はサーバ206が、マルウェアがモバイルコンピューティングデバイス202にインストールされる前に、マルウェアをスキャンし、検出することを可能にする。例えば、以下で更に詳細に説明されるように、傍受モジュール104は、アプリケーションをモバイルコンピューティングデバイス202にインストールするアプリケーションインストールエージェント210の1つ以上の通信を傍受することができる。次いで、識別モジュール106は、1つ以上の傍受された通信に基づいて、アプリケーションインストールエージェント210によって少なくとも部分的にダウンロードされたアプリケーション208を識別することができる。識別モジュール106のアプリケーション208の識別に応答して、かつアプリケーション208がモバイルコンピューティングデバイス202にインストールされる前に、スキャンモジュール108は、マルウェアについてアプリケーション208をスキャンすることができる。次いで、判定モジュール110は、アプリケーション208のスキャンに基づいて、アプリケーション208がマルウェアを含むと判定することができる。最後に、セキュリティモジュール112は、アプリケーション208がマルウェアを含むという判定に応答して、セキュリティアクションを実施することができる。
【0020】
モバイルコンピューティングデバイス202は、一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。モバイルコンピューティングデバイス202の例としては、限定することなく、ラップトップ、タブレット、携帯電話、携帯情報端末(PDA)、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラスなど)、ゲーム機、それらのうちの1つ以上の組み合わせ、
図4のスマートフォン402、
図5の例示的なコンピューティングシステム510、又は任意の他の好適なコンピューティングデバイスが挙げられる。
【0021】
サーバ206は、一般に、アプリケーションをホストし、モバイルデバイスにインストールされるアプリケーションストアクライアントに提供することができる、任意のタイプ又は形態のコンピューティングデバイスを表してもよい。例えば、サーバ206は、GOOGLE PLAYサービスの一部とすることができ、また、GOOGLE PLAYクライアントで構成されたスマートフォンが、GOOGLE PLAYアプリケーションをダウンロードすることを可能にすることができる。サーバ206の例としては、限定することなく、様々なデータベースサービスを提供するように、かつ/又はある特定のソフトウェアアプリケーションを作動させるように構成されたアプリケーションサーバ及びデータベースサーバが挙げられる。
【0022】
ネットワーク204は、一般に、通信若しくはデータ転送を容易にすることが可能な、任意の媒体又はアーキテクチャを表す。ネットワーク204の例としては、限定することなく、イントラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、インターネット、電力線通信(PLC)、セルラーネットワーク(例えば、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))ネットワーク)、
図4の例示的なネットワーク404、
図6の例示的なネットワークアーキテクチャ600などが挙げられる。ネットワーク204は、無線接続又は有線接続を使用して、通信又はデータ転送を容易にすることができる。一実施形態において、ネットワーク204は、モバイルコンピューティングデバイス202とサーバ206との間の通信を容易にすることができる。
【0023】
図3は、インストール前にモバイルデバイス上でマルウェアを検出するための例示的なコンピュータ実装方法300のフロー図である。
図3に示される工程は、任意の適切なコンピュータ実行可能コード及び/又はコンピューティングシステムによって実施することができる。いくつかの実施形態では、
図3の工程は、
図1のシステム100、
図2のシステム200、
図4のスマートフォン402、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の部分の構成要素のうちの1つ以上によって実施され得る。
【0024】
図3に例証されるように、工程302で、本明細書に記載されるシステムのうちの1つ以上は、アプリケーションをモバイルコンピューティングデバイスにインストールするアプリケーションインストールエージェントの1つ以上の通信を傍受することができる。例えば、傍受モジュール104は、
図2のモバイルコンピューティングデバイス202の一部として、アプリケーションインストールエージェント210の1つ以上の通信を傍受することができる。
【0025】
本明細書で使用するとき、用語「通信」は、一般に、プロセス、アプリケーション、ソフトウェアモジュール、及び/又はプログラムから送信される、又はそれらによって受信される、任意のタイプ又は形態の入力/出力を指す。更に、用語「通信」は、一般に、アプリケーションプログラミングインターフェース(API)コールを介して、又は他の通信プロトコル(FTP、HTTPSなど)を介して交換される通信などの、2つのソフトウェアモジュール間の任意のタイプ又は形態の相互作用を指し得る。いくつかの実施例において、通信は、アプリケーションプロセスがデータを記憶デバイスから読み取ろうとする、又はそこに書き込もうとする試みを含み得る。例えば、アプリケーションインストールエージェントは、アプリケーションをスマートフォン記憶デバイスに記憶し、及び/又はインストールするために、システムAPIをコールすることができる。通信は、任意のタイプのソフトウェアから送信される、及び/又はそれによって受信される、任意の他の好適な相互作用、入力/出力、及び/又はデータを含むことができる。
【0026】
様々な情報及び/又はデータを、通信を介して送信することができる。例えば、実行可能ファイル又はスクリプトは、アプリケーションストアサーバから、スマートフォンのアプリケーションストアクライアントに送信することができる。別の実施例において、アプリケーションインストールエージェントは、特定のパラメータをAPIに送信することによって、リモートサーバのAPIをコールすることができる。通信を介して送信することができるデータの例としては、限定することなく、任意のタイプ又は形態のアプリケーションファイル(例えば、アンドロイドパッケージファイル(APK)又はiPhone(登録商標)アプリケーションアーカイブ(IPA))、実行ファイル、スクリプト、ライブラリ、APIパラメータ、プロトコルパラメータ、データベースファイル、圧縮ファイル、入力/出力データ、又は任意の他の好適なタイプ若しくは形態のデータが挙げられる。
【0027】
2つのソフトウェアモジュール間(アプリケーションインストールエージェントとリモートサーバのAPIとの間など)の通信は、様々なプロトコルを介して送信することができる。例えば、アプリケーションインストールエージェント及びリモートサーバは、ハイパーテキスト転送プロトコル(HTTP)又はファイル転送プロトコル(FTP)を介して通信することができる。いくつかの実施例において、同じシステム内のプロセスは、システム固有のプロトコルを介して通信することができる。例えば、ANDROID(登録商標、以下同じ)デバイス上のアプリケーションは、相互に通信することができ、他のシステムは、様々なANDROID固有のプロトコル及びパラメータを介して、例えば「インテント」の宣言などを処理する。
【0028】
本明細書で使用するとき、「アプリケーションインストールエージェント」という句は、一般に、リモートサーバ(例えば、GOOGLE PLAYクライアント又はIOS APP STOREクライアント)からモバイルコンピューティングデバイスにアプリケーションをダウンロード及びインストールするように構成されたモバイルコンピューティングデバイスにインストールされる任意のタイプ又は形態のアプリケーションストアクライアントを指す。例えば、アプリケーションインストールエージェントは、スマートフォンのユーザがアプリケーションストアでアプリケーションを検索し、そこからダウンロードすることを可能にする、クライアント側のスマートフォンアプリケーションを含んでもよい。アプリケーションインストールエージェントは、一般に、アプリケーションをモバイルデバイスにダウンロード及びインストールするプロセスを自動化する、任意の他の好適なサービス、アプリケーション、及び/又はソフトウェアモジュールを含んでもよい。
【0029】
アプリケーションインストールエージェントは、アプリケーションをホストするリモートサーバから、様々なアプリケーション及びファイル(例えば、ANROID APK又はIOS IPA)をダウンロード及びインストールするように構成されてもよい。加えて、アプリケーションインストールエージェントは、様々なネットワーク及びネットワーク構成にわたって、(上で論じられるような)様々なプロトコルを介して、リモートサーバと通信するように構成されてもよい。例えば、アプリケーションインストールエージェントは、インターネット、セルラーネットワーク、又は任意の他の好適なタイプのネットワークを介して、アプリケーションをダウンロード及びインストールするように構成されてもよい。
【0030】
傍受モジュール104は、様々な方法で、アプリケーションインストールエージェント210の1つ以上の通信を傍受することができる。例えば、傍受モジュール104は、サーバ206からアプリケーション208をダウンロードするというアプリケーションインストールエージェント210からの要求を傍受することができる。いくつかの実施形態において、傍受モジュール104は、アプリケーション208をモバイルコンピューティングデバイス202にインストールするというアプリケーションインストールエージェント210による要求を傍受することができる。例えば、ANDROIDデバイスにおいて、傍受モジュール104は、アプリケーションインストールエージェント210から送信される「インテント」の宣言を傍受することによって、アプリケーション208をインストールするという要求を傍受することができる。
【0031】
様々な実施形態において、傍受モジュール104は、監視エージェント(
図4の監視エージェント414)の一部とすることができる。これらの実施形態において、監視エージェントは、監視エージェントがアプリケーションインストールエージェント210から通信を傍受することができるように、アプリケーションインストールエージェント210を起動することができる。例えば、スマートフォンのアンチマルウェアシステムの一部である監視エージェントは、スマートフォンにインストールされるアプリケーションストアクライアントについて、パーミッションを起動し、設定することができる。このような構成は、監視エージェントが、アプリケーションインストールエージェント210の入力/出力のフッキングなどの、様々な監視タスクを実施することを可能にすることができる。少なくとも1つの実施形態において、監視エージェントは、アプリケーションインストールエージェント210を起動しようとする試みを中断し、リダイレクトするように構成されてもよい。例えば、スマートフォンのユーザがアプリケーションストアクライアントを起動しようと試みたときに、監視エージェントは、起動の試みを中断し、次いで、監視エージェントが監視できるプロセスとして、アプリケーションストアクライアントを再起動することができる。
【0032】
図3に例証されるように、工程304で、本明細書に記載されるシステムのうちの1つ以上は、1つ以上の傍受された通信に基づいて、アプリケーションインストールエージェントによって少なくとも部分的にダウンロードされたアプリケーションを識別することができる。例えば、識別モジュール106は、
図2のモバイルコンピューティングデバイス202の一部として、傍受モジュール104によって傍受される1以上の通信に基づいて、アプリケーション208を識別することができる。更に、アプリケーション208は、アプリケーションインストールエージェント210によって少なくとも部分的にダウンロードされてしまっている場合がある。
【0033】
本明細書で使用するとき、用語「アプリケーション」は、一般に、任意のタイプ又は形態の実行可能ファイル及び/又はプロセスを指す。例えば、アプリケーションは、APK又はIPAファイルを含み得る。アプリケーションは、任意のサイズであり得る。例えば、アプリケーションは、100メガバイト程度に大きい、又は2、3キロバイト程度に小さいものであり得る。いくつかの実施例において、アプリケーションは、様々な構成でモバイルコンピューティングデバイス202にインストールすることができる1つ以上のファイルを含んでもよい。いくつかの実施例において、アプリケーションは、モバイルコンピューティングデバイス202のシステム及びアプリケーションレベルでインストールすることができるファイルを含んでもよい。
【0034】
識別モジュール106は、様々な方法で、アプリケーション208を識別することができる。例えば、識別モジュール106は、アプリケーションインストールエージェント210がサーバ206からアプリケーション208をダウンロードしている間に、アプリケーション208を識別することができる。いくつかの実施形態において、識別モジュール106は、アプリケーションインストールエージェント210がアプリケーション208をモバイルコンピューティングデバイス202にインストールするよう要求した後に、アプリケーション208を識別することができる。少なくとも1つの実施例において、識別モジュール106は、アプリケーション208をモバイルコンピューティングデバイス202にインストールするというアプリケーションインストールエージェント210による要求に基づいて、アプリケーション208のファイルパスを識別することによって、アプリケーション208を識別することができる。様々な実施形態において、次いで、識別モジュール104は、アプリケーション208のファイルパスを、スキャン工程を実施するスキャンエージェント(例えば、
図2のスキャンモジュール108又は
図4のスキャンエージェント416)に送信することができる。これらの実施形態において、スキャンエージェントは、アプリケーション208の場所を特定し、スキャンするために、アプリケーション208のファイルパスを使用することができる。
【0035】
様々な実施形態において、識別モジュール106は、監視エージェントの一部とすることができる。これらの実施形態において、監視エージェントは、監視エージェントが、アプリケーションインストールエージェント210によって少なくとも部分的にダウンロードされたアプリケーションを識別することができるような方法で、アプリケーションインストールエージェント210を起動することができる。例えば、監視エージェントは、アプリケーションインストールエージェント210を起動するときに、監視エージェントが、アプリケーションインストールエージェント210によるアプリケーション208をダウンロード及び/又はインストールしようとする試みを識別することを可能にするパーミッションを設定することができる。
【0036】
識別モジュール106は、アプリケーション208がインストールされる前の任意の好適な時間に、アプリケーション208を識別することができる。例えば、識別モジュール106は、アプリケーションインストールエージェント210がアプリケーション208をダウンロードしている間に、アプリケーション208を識別することができる。別の実施例において、識別モジュール106は、アプリケーションインストールエージェント210がアプリケーション208を完全にダウンロードした後に、アプリケーション208を識別することができる。
【0037】
図3に例証されたときに、工程306で、本明細書に記載されるシステムのうちの1つ以上は、アプリケーションの識別に応答して、かつアプリケーションがモバイルコンピューティングデバイスにインストールされる前に、マルウェアについてアプリケーションをスキャンすることができる。例えば、スキャンモジュール108は、
図2のモバイルコンピューティングデバイス202の一部として、マルウェアについてアプリケーション208をスキャンすることができる。更に、スキャンモジュール108は、アプリケーションインストールエージェント210がアプリケーション208をモバイルコンピューティングデバイス202にインストールする前に、アプリケーション208をスキャンすることができる。
【0038】
スキャンしているモジュール108は、様々なマルウェアスキャン方法を使用して、アプリケーション208をスキャンすることができる。マルウェアスキャン方法の例としては、限定することなく、ストリングスキャン方法、ワイルドカード方法、ミスマッチ方法、ジェネリック検出方法、ブックマーク方法、スマートスキャン方法、スケルトン検出方法、ヒューリスティックス分析、ウイルス固有の検出、及び/又は任意の他の好適なマルウェアスキャンプロセスが挙げられる。
【0039】
スキャンモジュール108は、様々な方法で、アプリケーション208をスキャンすることができる。例えば、スキャンモジュール108は、アプリケーションインストールエージェント210がアプリケーション208をダウンロードする間に、アプリケーション208を識別することができる。いくつかの実施形態において、スキャンモジュール108は、アプリケーションインストールエージェント210がアプリケーション208を完全にダウンロードした後に、アプリケーション208をスキャンすることができる。少なくとも1つの実施例において、スキャンモジュール108は、アプリケーションインストールエージェント210がアプリケーション208をインストールしようとする試みに応答して、アプリケーション208をスキャンすることができる。様々な実施例において、スキャンモジュール108は、識別モジュール106がアプリケーション208を識別した直後に、アプリケーション208をスキャンすることができる。
【0040】
いくつかの実施形態によると、スキャンモジュール108は、シグネチャマッチング方法を使用して、アプリケーション208をスキャンすることができる。これらの実施形態において、スキャンモジュール108は、マルウェアシグネチャデータベース120に記憶されたマルウェアシグネチャなどの既知のマルウェアシグネチャに対するマッチを見つけるために、アプリケーション208をスキャンすることができる。
【0041】
図3に例証されるように、工程308で、本明細書に記載されるシステムのうちの1つ以上は、スキャンに基づいて、アプリケーションがマルウェアを含むと判定することができる。例えば、判定モジュール110は、アプリケーション208のスキャンに基づいて、アプリケーション208がマルウェアを含むと判定することができる。
【0042】
本明細書にユーザとして、用語「マルウェア」は、一般に、任意のタイプ又は形態のコード、スクリプト、アプリケーション、ソフトウェアモジュール、プロセス、並びに/又は一般に敵対的な、侵入的な、安全でない、望ましくない、及び/又は不正な方法で挙動するように構成された任意の他のタイプのコンピュータ実行可能命令を指す。例えば、マルウェアは、機密データ又は個人データを収集するスパイウェアプログラムをスマートフォンに含むことができる。別の例において、マルウェアは、例えばファイルを削除するか、又はシステムプロセスを破壊するなどの不正機能を実施することによってコンピュータの動作を混乱させようと試みる、不正コンピュータウイルスを含み得る。マルウェアの一般的な例としては、限定することなく、コンピュータウイルス、ランサムウェア、ワーム、トロイの木馬、ルートキット、キーロガー、ダイアラー、スパイウェア、アドウェア、偽セキュリティソフトウェア、不正ブラウザヘルパオブジェクト(BHO)、及び/又は任意の好適なタイプ若しくは形態のマルウェアが挙げられる。
【0043】
判定モジュール110は、様々な方法で、アプリケーション208がマルウェアを含むと判定することができる。例えば、判定モジュール110は、アプリケーション208内の任意のコードが、マルウェアシグネチャデータベース120に記憶されているものなどの既知のマルウェアシグネチャに類似又はマッチする場合に、アプリケーション208がマルウェアを含むと判定することができる。いくつかの実施形態において、判定モジュール110は、アプリケーション208の少なくとも1つのコンピュータ実行可能命令がマルウェアシグネチャにマッチした場合に、アプリケーション208がマルウェアを含むと判定することができる。いくつかの実施例において、判定モジュール110は、アプリケーション208自体がマルウェアプログラムであると判定することができる。少なくとも1つの実施例において、判定モジュール110は、アプリケーション208の任意の一部又は一部分がマルウェアであるかどうかにかかわらず、アプリケーション208の任意の一部又は一部分がマルウェアであると疑われる場合に、アプリケーション208がマルウェアを含むと判定することができる。例えば、判定モジュール110は、アプリケーション208がマルウェアを含むという、情報に基づく「推測」又は判定を行うために、ヒューリスティックアルゴリズムを使用することができる。判定モジュール110は、任意の他の好適な方法で、アプリケーション208がマルウェアを含むと判定することができる。
【0044】
図3に例証されるように、工程310で、本明細書に記載されるシステムのうちの1つ以上は、アプリケーションがマルウェアを含むという判定に応答して、セキュリティアクションを実施することができる。例えば、セキュリティモジュール112は、モバイルコンピューティングデバイス202の一部として、セキュリティアクションを実施することができる。
【0045】
本明細書で使用するとき、句「セキュリティアクション」は、本開示を参照して使用されるときに、一般に、モバイルコンピューティングデバイスのセキュリティを向上させるためにソフトウェアモジュール(セキュリティモジュール112など)によってなされる任意の工程を指す。例えば、アンチマルウェアシステムは、ファイルがマルウェアを含むと判定した後に、ファイルを隔離しようと試みることによって、セキュリティアクションを実施することができる。セキュリティアクションの例としては、限定することなく、セキュリティログを作成すること、マルウェアを含むファイルを隔離又は削除すること、モバイルデバイスに検出されたマルウェアに関して該デバイスのユーザに通知すること、マルウェアのインストールをブロックすること、及び/又はモバイルデバイスのセキュリティを向上させようと試みる任意の他の好適な工程若しくはアクションが挙げられる。
【0046】
セキュリティモジュール112は、判定モジュール110が、アプリケーション208がマルウェアを含むと判定したときに、様々なセキュリティアクションを実施することができる。例えば、セキュリティモジュール112は、アプリケーション208を隔離又は削除することができる。別の実施例において、セキュリティモジュール112は、モバイルコンピューティングデバイス202のユーザに、アプリケーション208がマルウェアを含むと警告することができる。いくつかの実施形態において、セキュリティモジュール112は、アプリケーション208に関する情報をセキュリティログに記憶することができる。様々な実施形態において、セキュリティモジュール112は、セキュリティアクションの組み合わせを実施することができる。例えば、セキュリティモジュール112は、アプリケーション208を隔離することができ、次いで、モバイルコンピューティングデバイス202のユーザに、アプリケーション208がマルウェアを含むと通知することができる。
【0047】
少なくとも1つの実施例において、セキュリティモジュール112は、アプリケーション208のインストールをブロックすることができる。例えば、セキュリティモジュール112は、アプリケーションインストールエージェント210がアプリケーション208をモバイルコンピューティングデバイス202にインストールしようとする試みをブロックすることができる。別の実施例において、セキュリティモジュール112は、アプリケーションインストールエージェント210が、アプリケーション208をインストールしようと試みることさえも防止することができる。
【0048】
上で簡潔に述べられるように、方法300は、スマートフォンに記憶されたアンチマルウェアシステムに組み込むことができる。
図4のシステム400は、モジュール102の全てで構成されており、かつスマートフォン402に記憶されたアンチマルウェアシステム412の例示的な例証である。この例証において、アンチマルウェアシステム412は、監視エージェント414と、スキャンエージェント416とを含む。スマートフォン402のユーザが、アプリケーションストアクライアント410を起動しようと試みたときに、監視エージェント414は、その試みをリダイレクトし、アプリケーションストアクライアント410を、監視エージェント414が監視することができるプロセスで起動することができる。こうすることによって、監視エージェント414は、音楽アプリケーション408をダウンロード及びインストールしようと試みるなどの、アプリケーションストアクライアント410から送信される、及び/又はそれによって受信される通信を傍受することができる。
【0049】
この例証において、監視エージェント414は、アプリケーションストアクライアント410の入力/出力プロセスをフックすることができ、したがって、アプリケーションストアクライアント410が、ネットワーク404を介して、アプリケーションストアサーバ406から音楽アプリケーション408をダウンロードしていることを検出することができる。監視エージェント414は、音楽アプリケーション408のファイルパスを識別し、スキャンエージェント416に提供し、次いで、スキャンエージェント416に音楽アプリケーション408をスキャンするように命令することができる。本実施例において、スキャンエージェント416は、ファイルの場所を特定するためにファイルパスを使用し、次いで、シグネチャマッチスキャン方法を使用することによって、ファイルがマルウェアを含むかどうかを判定するように構成されたマルウェアスキャンモジュールとすることができる。
【0050】
次いで、スキャンエージェント416は、(音楽アプリケーション408がダウンロードされている間に、又は音楽アプリケーション408が完全にダウンロードされた後に)音楽アプリケーション408をスキャンすることができ、そして、音楽アプリケーション408がマルウェアを含むと判定することができる。この時点で、スキャンエージェント416は、アンチマルウェアシステム412に、アプリケーション408がマルウェアを含むと通知することができる。それに応答して、アンチマルウェアシステム412は、アプリケーションストアクライアント410が音楽アプリケーション408をインストールしようとする任意の試みをブロックすることができる。アンチマルウェアシステム412は、セキュリティログにおけるインシデントを報告し、次いで、スマートフォン402のユーザに、アプリケーション408がマルウェアを含むと通知することもできる。
【0051】
図3の方法300に関連して上で説明されるように、アプリケーションストアクライアントは、マルウェアについてアプリケーションをスキャンしてしまう前にアプリケーションをモバイルデバイスにインストールすることによって、モバイルデバイスのセキュリティを危殆化し得る。いくつかのソリューションは、インストール直後にアプリケーションをスキャンすることによってこの問題に対処しようと試みることができるが、該ソリューションは、インストールが短時間であったときでさえも、マルウェアがモバイルデバイスのセキュリティを著しく危殆化することができるという、潜在的に深刻な問題に対処することができない。
【0052】
本開示は、アプリケーションがモバイルデバイスにインストールされる前に、マルウェアについてアプリケーションをスキャンすることによって、この問題を解決することができる。具体的には、アプリケーションストアクライアントの入力/出力をフックし、アプリケーションを識別し、次いで、マルウェアについてアプリケーションをスキャンすることによって、本明細書に記載されるシステム及び方法は、マルウェアがモバイルデバイスにインストールされる前にマルウェアを検出することができ、したがって、多数の潜在的に深刻なセキュリティ問題を防止する。
【0053】
図5は、本明細書に記載及び/又は例証される実施形態のうちの1つ以上を実装することができる例示的なコンピューティングシステム510のブロック図である。例えば、コンピューティングシステム510の全て又は一部は、単独で又は他の要素と組み合わせて、(
図3に例証される工程のうち1つ以上などの)本明細書に記載される工程のうち1つ以上を実施してもよく、かつ/又はそれを実施するための手段であってもよい。コンピューティングシステム510の全て又は一部はまた、本明細書に記載及び/若しくは例証される他の任意の工程、方法、若しくは処理を実施してもよく、かつ/又はそれを実施するための手段であってもよい。
【0054】
コンピューティングシステム510は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム510の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は任意の他のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム510は、少なくとも1つのプロセッサ514及びシステムメモリ516を含んでもよい。
【0055】
プロセッサ514は一般に、データの処理又は命令の解釈及び実行が可能な任意のタイプ又は形態の物理的処理ユニット(例えば、ハードウェア実装型中央処理ユニット)を表す。ある特定の実施形態では、プロセッサ514は、ソフトウェアアプリケーション又はモジュールから命令を受信することができる。これらの命令は、プロセッサ514に、本明細書に記載及び/又は例証される例示的な実施形態のうちの1つ以上の機能を実施させることができる。
【0056】
システムメモリ516は一般に、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形態の揮発性又は不揮発性記憶デバイス若しくは媒体を表す。システムメモリ516の例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、ある特定の実施形態において、コンピューティングシステム510は、揮発性メモリユニット(例えば、システムメモリ516など)、及び不揮発性記憶デバイス(例えば、以下で詳細に説明されるような一次記憶デバイス532など)の両方を含むことができる。一実施例では、
図1のモジュール102のうちの1つ以上が、システムメモリ516にロードされてもよい。
【0057】
ある特定の実施形態では、例示的なコンピューティングシステム510はまた、プロセッサ514及びシステムメモリ516に加えて、1つ以上の構成要素又は要素を含んでもよい。例えば、
図5に例証されるように、コンピューティングシステム510は、メモリコントローラ518、入力/出力(I/O)コントローラ520、及び通信インターフェース522を含んでもよく、それらはそれぞれ通信基盤512を介して相互接続されてもよい。通信基盤512は一般に、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることができる、任意のタイプ若しくは形態の基盤を表す。通信基盤512の例としては、限定することなく、通信バス(産業標準アーキテクチャ(ISA)、周辺装置相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバスなど)、及びネットワークが挙げられる。
【0058】
メモリコントローラ518は、一般に、メモリ若しくはデータを扱うか、又はコンピューティングシステム510の1つ以上の構成要素間の通信を制御することができる、任意のタイプ又は形態のデバイスを表す。例えば、ある特定の実施形態では、メモリコントローラ518は、通信基盤512を介して、プロセッサ514、システムメモリ516、及びI/Oコントローラ520の間の通信を制御してもよい。
【0059】
I/Oコントローラ520は、一般に、コンピューティングデバイスの入出力機能を調整及び/又は制御することができる、任意のタイプ又は形態のモジュールを表す。例えば、ある特定の実施形態において、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インターフェース522、ディスプレイアダプタ526、入力インターフェース530、及び記憶インターフェース534などの、コンピューティングシステム510の1つ以上の要素間のデータの転送を制御するか又は容易にすることができる。
【0060】
通信インターフェース522は、例示的なコンピューティングシステム510と1つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ若しくは形態の通信デバイス又はアダプタを広く表す。例えば、ある特定の実施形態において、通信インターフェース522は、コンピューティングシステム510と、追加のコンピューティングシステムを含むプライベート又はパブリックネットワークネットワークとの間の通信を容易にすることができる。通信インターフェース522の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び他の任意の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース522は、インターネットなどのネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供してもよい。通信インターフェース522はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通した、かかる接続を間接的に提供してもよい。
【0061】
ある特定の実施形態では、通信インターフェース522はまた、外部バス又は通信チャネルを介して、コンピューティングシステム510と1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、小型コンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子学会(IEEE)1394ホストアダプタ、アドバンストテクノロジーアタッチメント(ATA)、パラレルATA(PATA)、シリアルATA(SATA)、及び外部SATA(eSATA)ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネット(登録商標)アダプタなどが挙げられる。通信インターフェース522はまた、コンピューティングシステム510が分散型又はリモートコンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース522は、実行のためにリモートデバイスから命令を受信するか又はリモートデバイスに命令を送信してもよい。
【0062】
図5に例証されるように、コンピューティングシステム510は、ディスプレイアダプタ526を介して通信基盤512に連結される少なくとも1つのディスプレイデバイス524も含んでもよい。ディスプレイデバイス524は一般に、ディスプレイアダプタ526によって転送される情報を視覚的に表示することができる、任意のタイプ若しくは形態のデバイスを表す。同様に、ディスプレイアダプタ526は、一般に、ディスプレイデバイス524に表示するために、通信基盤512から(又は当該技術分野において既知であるようにフレームバッファから)グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形態のデバイスを表す。
【0063】
図5に例証されるように、例示的なコンピューティングシステム510はまた、入力インターフェース530を介して通信基盤512に連結される少なくとも1つの入力デバイス528を含んでもよい。入力デバイス528は、一般に、コンピュータ又は人間のいずれかが生成した入力を、例示的なコンピューティングシステム510に提供することができる、任意のタイプ若しくは形態の入力デバイスを表す。入力デバイス528の例としては、限定されないが、キーボード、ポインティングデバイス、音声認識デバイス、又は他の任意の入力デバイスが挙げられる。
【0064】
図5に例証されるように、例示的なコンピューティングシステム510はまた、記憶インターフェース534を介して通信基盤512に連結される、一次記憶デバイス532及びバックアップ記憶デバイス533を含んでもよい。記憶デバイス532及び533は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス532及び533は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。記憶装置インターフェース534は、一般に、記憶デバイス532及び533とコンピューティングシステム510の他の構成要素との間でデータを転送するための、任意のタイプ又は形態のインターフェース又はデバイスを表す。一実施例において、
図1のマルウェアシグネチャデータベース120は、一次記憶デバイス532に記憶され得る。
【0065】
ある特定の実施形態において、記憶デバイス532及び533は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能な記憶ユニットから読み取り、かつ/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例として、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられるが、これらに限定されない。記憶デバイス532及び533はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム510内にロードされることを可能にするための他の同様の構造体又はデバイスを含んでもよい。例えば、記憶デバイス532及び533は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、かつこれを書き込むように構成されてもよい。記憶デバイス532及び533はまた、コンピューティングシステム510の一部であってもよく、又は他のインターフェースシステムを介してアクセスされる別々のデバイスであってもよい。
【0066】
多くの他のデバイス又はサブシステムをコンピューティングシステム510に接続することができる。反対に、
図5に例証される構成要素及びデバイスの全てが、本明細書で説明及び/又は例証される実施形態を実践するために存在する必要があるわけではない。上で言及されるデバイス及びサブシステムはまた、
図5に示されるものと異なる方法で相互接続されてもよい。コンピューティングシステム510はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェアの構成を用いることもできる。例えば、本明細書で開示される例示的な実施形態のうちの1つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)として符号化することができる。本明細書で使用するとき、「コンピュータ可読媒体」という句は一般に、コンピュータ可読命令を記憶又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波などの伝送型媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びブルーレイ(BLU−RAY)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)、並びに他の分散システムなどの非一時的媒体が挙げられる。
【0067】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム510にロードされてもよい。次に、コンピュータ可読媒体に記憶されたコンピュータプログラムの全て又は一部は、システムメモリ516に、並びに/又は記憶デバイス532及び533の様々な部分に記憶されてもよい。プロセッサ514によって実行されると、コンピューティングシステム510にロードされたコンピュータプログラムは、プロセッサ514に、本明細書で説明及び/又は例証される例示的な実施形態のうちの1つ以上の機能を行わせてもよく、かつ/又はそれらを行うための手段であってもよい。加えて、又は代替的に、本明細書に記載及び/又は例証される例示的な実施形態の1つ以上は、ファームウェア及び/又はハードウェアに実装されてもよい。例えば、コンピューティングシステム510は、本明細書に開示される例示的な実施形態の1つ以上を実装するように適合された、特定用途向け集積回路(ASIC)として構成されてもよい。
【0068】
図6は、クライアントシステム610、620、及び630、並びにサーバ640及び645がネットワーク650に連結されていてもよい、例示的なネットワークアーキテクチャ600のブロック図である。上で詳述されるように、ネットワークアーキテクチャ600の全て又は一部は、単独で又は他の要素と組み合わせて、本明細書で開示される工程のうちの1つ以上(
図3に例証される工程のうちの1つ以上など)を行ってもよく、及び/又はそれを行うための手段であってもよい。ネットワークアーキテクチャ600の全て又は一部はまた、本開示に記載される他の工程及び特性を実施するために使用されてもよく、かつ/又はそれを実施するための手段であってもよい。
【0069】
クライアントシステム610、620、及び630は一般に、
図5の例示的なコンピューティングシステム510などの、任意のタイプ若しくは形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ640及び645は一般に、様々なデータベースサービスを提供し、かつ/又はある特定のソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバ又はデータベースサーバなどの、コンピューティングデバイス又はシステムを表す。ネットワーク650は一般に、例えばイントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを表す。一実施例において、クライアントシステム610、620、及び/若しくは630、並びに/又はサーバ640及び/若しくは645は、
図1からのシステム100の全て又は一部を含んでもよい。
【0070】
図6に例証されるように、1つ以上の記憶デバイス660(1)〜(N)は、サーバ640に直接取り付けられてもよい。同様に、1つ以上の記憶デバイス670(1)〜(N)は、サーバ645に直接取り付けられてもよい。記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を表す。ある特定の実施形態において、記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)は、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又は共通インターネットファイルシステム(CIFS)などの様々なプロトコルを使用して、サーバ640及び645と通信するように構成されたネットワーク接続記憶(NAS)デバイスを表すことができる。
【0071】
サーバ640及び645はまた、ストレージエリアネットワーク(SAN)ファブリック680に接続することもできる。SANファブリック680は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意のタイプ若しくは形態のコンピュータネットワーク又はアーキテクチャを表す。SANファブリック680は、サーバ640及び645と、複数の記憶デバイス690(1)〜(N)及び/又はインテリジェント記憶アレイ695との間の通信を容易にすることができる。SANファブリック680はまた、記憶デバイス690(1)〜(N)及びインテリジェント記憶アレイ695が、クライアントシステム610、620、及び630にローカルで取り付けられたデバイスとして現れるような方式で、ネットワーク650並びにサーバ640及び645を介して、クライアントシステム610、620、及び630と、デバイス690(1)〜(N)及び/又はアレイ695との間の通信を容易にすることもできる。記憶デバイス660(1)〜(N)及び記憶デバイス670(1)〜(N)と同様に、記憶デバイス690(1)〜(N)及びインテリジェント記憶アレイ695は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる任意のタイプ又は形態の記憶デバイス又は媒体を表す。
【0072】
ある特定の実施形態において、
図5の例示的なコンピューティングシステム510を参照して、
図5の通信インターフェース522などの通信インターフェースは、それぞれのクライアントシステム610、620、及び630とネットワーク650との間を接続するように使用されてもよい。クライアントシステム610、620、及び630は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ640又は645上の情報にアクセスすることが可能であり得る。そのようなソフトウェアは、クライアントシステム610、620、及び630が、サーバ640、サーバ645、記憶デバイス660(1)〜(N)、記憶デバイス670(1)〜(N)、記憶デバイス690(1)〜(N)、又はインテリジェント記憶アレイ695によってホストされるデータにアクセスすることを可能にすることができる。
図6は、データを送受信するための(インターネットなどの)ネットワークの使用を示しているが、本明細書に記載及び/又は例証される実施形態は、インターネット、又は任意の特定のネットワークベースの環境に限定されない。
【0073】
少なくとも1つの実施形態において、本明細書に開示される例示的な実施形態のうち1つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、サーバ640、サーバ645、記憶デバイス660(1)〜(N)、記憶デバイス670(1)〜(N)、記憶デバイス690(1)〜(N)、インテリジェント記憶アレイ695、又はこれらの任意の組み合わせ上にロードされ、これらによって実行されてもよい。本明細書に開示される例示的な実施形態のうち1つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、サーバ640に記憶され、サーバ645によって作動し、ネットワーク650上でクライアントシステム610、620、及び630に配信されてもよい。
【0074】
上で詳述されるように、コンピューティングシステム510、及び/又はネットワークアーキテクチャ600の1つ以上の構成要素は、単独で、又は他の要素と組み合わせて、インストール前にモバイルデバイス上でマルウェアを検出するための例示的な方法の1つ以上の工程を行ってもよく、及び/又はそれを行うための手段であってもよい。
【0075】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書で説明及び/又は例証される各ブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、個別にかつ/又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア(若しくはそれらの任意の組み合わせの)構成を使用して実装することができる。それに加えて、他の多くのアーキテクチャが同じ機能性を達成するように実装可能であるので、他の構成要素内に含有される構成要素のあらゆる開示は、本質的に例示と見なされるべきである。
【0076】
いくつかの実施例において、
図1の例示的なシステム100の全て又は一部は、クラウドコンピューティング環境又はネットワークベースの環境の一部を表すことができる。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤など)は、ウェブブラウザ又は他のリモートインターフェースを通じてアクセス可能であり得る。本明細書に記載される様々な機能は、リモートデスクトップの環境又は任意の他のクラウドベースのコンピューティング環境を介して提供されてもよい。
【0077】
様々な実施形態において、
図1の例示的なシステム100の全て又は一部は、クラウドベースのコンピューティング環境内でのマルチテナンシーを容易にすることができる。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能の1つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成してもよい。例えば、本明細書で説明されるソフトウェアモジュールのうちの1つ以上は、2つ以上のクライアント(例えば、顧客)が、サーバ上で作動しているアプリケーションを共有することを可能にするようにサーバをプログラムすることができる。このようにプログラムされたサーバは、複数の顧客(すなわち、テナント)の間で、アプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有することができる。本明細書に記載されるモジュールのうち1つ以上はまた、ある顧客が別の顧客のデータ及び/又は設定情報にアクセスすることができないように顧客ごとに、マルチテナントアプリケーションのデータ及び/又は設定情報を分割してもよい。
【0078】
様々な実施形態によると、
図1の例示的なシステム100の全て又は一部は、仮想環境内で実装することができる。例えば、本明細書に記載されるモジュール及び/又はデータは、仮想機械内に常駐及び/又はそこで実行してもよい。本明細書で使用するとき、「仮想機械」という句は、一般に、仮想機械マネージャ(例えば、ハイパーバイザ)によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。加えて、又は代替的に、本明細書に記載されるモジュール及び/又はデータは、仮想化層内で常駐及び/又は実行してもよい。本明細書で使用するとき、「仮想化層」という句は、一般に、オペレーティングシステム環境にオーバーレイする、並びに/あるいはそこから抽出される、任意のデータ層及び/又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び/又はレジストリ内の場所に方向付けられる呼出しを、仮想化層内の場所にリダイレクトしてもよい。
【0079】
いくつかの実施例において、
図1の例示的なシステム100の全て又は一部は、モバイルコンピューティング環境の一部を表すことができる。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダー、携帯情報端末、ウェアラブルコンピューティングデバイス(例えば、ヘッドマウントディスプレイを備えたコンピューティングデバイス、スマートウォッチなど)などを含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。いくつかの実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での1つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する、アプリケーションのインストールを制限するように(例えば、認可されたアプリケーションストアからのみ生じるように)制御するなど、制限されたプラットフォームを含む、1つ以上の個別の特性を有することができる。本明細書で説明される様々な機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
【0080】
加えて、
図1の例示的なシステム100の全て又は一部は、情報管理のための1つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、かつ/又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という句は、データの保護、組織化、及び/又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどが挙げられ得る。
【0081】
いくつかの実施形態では、
図1の例示的なシステム100の全て又は一部は、情報セキュリティのための1つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、かつ/又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という句は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システムなどが挙げられ得る。
【0082】
いくつかの実施例によると、
図1の例示的なシステム100の全て又は一部は、エンドポイントセキュリティのための1つ以上のシステムの部分を表してもよく、それと通信してもよく、かつ/又はそれから保護を受けてもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という句は、権限がない及び/又は違法な使用、アクセス、並びに/あるいは制御からの、エンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、アンチマルウェアシステム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられ得る。
【0083】
本明細書に記載及び/又は例証されるプロセスパラメータ及び工程の順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に例証及び/又は記載される工程は特定の順序で示され又は考察され得るが、これらの工程は、必ずしも例証又は考察される順序で実施される必要はない。本明細書に記載及び/又は例証される様々な例示的な方法はまた、本明細書に記載若しくは例証される工程の1つ以上を省略するか、又は開示されるものに加えて追加の工程を含んでもよい。
【0084】
様々な実施形態を、完全に機能的なコンピューティングシステムの文脈において、本明細書に記載及び/又は例証してきたが、これらの例示的な実施形態の1つ以上は、実際に配布を実行するために使用されるコンピュータ可読媒体の特定のタイプにかかわらず、様々な形態のプログラム製品として配布されてもよい。本明細書で開示される実施形態はまた、ある特定のタスクを実施するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体に、又はコンピューティングシステムに記憶することができる、スクリプト、バッチ、又は他の実行可能ファイルを含んでもよい。いくつかの実施形態において、これらのソフトウェアモジュールは、本明細書で開示される例示的な実施形態のうちの1つ以上を行うようにコンピューティングシステムを構成することができる。
【0085】
更に、本明細書で説明されるモジュールのうちの1つ以上は、データ、物理デバイス、及び/又は物理デバイスの表現を1つの形態から別の形態へと変換することができる。例えば、本明細書に列挙されるモジュールのうちの1つ以上は、監視エージェントがアプリケーションインストールエージェントプロセスを監視することができるように、アプリケーションインストールエージェントプロセスを再起動することによって、アプリケーションインストールエージェントプロセスを変換することができる。加えて、又は代替的に、本明細書に列挙されるモジュールのうちの1つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを記憶し、及び/又は別様にコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理コンピューティングデバイスの任意の他の一部を、1つの形態から別の形態へと変換することができる。
【0086】
前述の記述は、他の当業者が本明細書に開示される例示的な実施形態の様々な態様を最良に利用することができるように提供されてきた。この例示的な記述は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの変更例及び変形例が可能である。本明細書で開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範囲を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【0087】
別途記載のない限り、用語「に接続される」及び「に連結される」(並びにこれらの派生語)は、本明細書及び特許請求の範囲で使用される際、直接的接続と間接的接続(すなわち、他の要素又は構成要素を介した)との両方を許容するものとして解釈することができる。更に、用語「1つの(a)」又は「1つの(an)」は、本明細書及び特許請求の範囲で使用される際、「のうち少なくとも1つ」を意味するものとして解釈することができる。最後に、簡潔にするため、用語「含む」及び「有する」(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用される際、単語「備える」と互換性があり、同じ意味を有する。