【文献】
碓井利宣,APIの傾向によるラベル付けとSVMによるマルウェアの分類,CSS2011コンピュータセキュリティシンポジウム2011論文集 併催 マルウェア対策研究人材育成ワークショップ2011 情報処理学会シンポジウムシリーズ Vol.2011 No.3 [CD−ROM],日本,一般社団法人情報処理学会 コンピュータセキュリティ研究会,2011年10月12日,第2011巻,p.797-802
【文献】
神薗雅紀,メモリ上の不正コード検出による未知ウイルス解析システム,コンピュータセキュリティシンポジウム2004 Volume II of II,日本,社団法人情報処理学会,2004年10月20日,第2004巻,p.427-432
(58)【調査した分野】(Int.Cl.,DB名)
特定のプラットフォームのソフトウェア開発キットのセマンティック・モデルに対して特定のアプリケーションのコードを解析する解析ステップであって、前記セマンティック・モデルは、複数のアプリケーション挙動を、前記特定のプラットフォームのそれぞれのアプリケーション・プログラミング・インタフェース(API)コールに関連付け、前記特定のアプリケーションの前記コードは、前記特定のアプリケーションを特定のユーザ・デバイス上で実施する試みに関して解析される、解析ステップと、
前記コードの前記解析に基づいて、前記特定のアプリケーションの挙動のセットを識別するステップと、
前記挙動のセットのうちの特定の挙動が望ましくない挙動であると識別するステップと、
前記挙動のセットのうちの1以上の挙動が望ましくない挙動であるとの識別に基づいて、前記特定のユーザ・デバイスへの前記特定のアプリケーションのインストールをブロックするステップと、
を含む、方法であって、
前記特定のアプリケーションのコードを制御フローに逆アセンブルし、前記セマンティック・モデルに少なくとも部分的に基づいて、前記特定のアプリケーションに関するアプリケーション・ロジックのモデルを生成するステップ
をさらに含む、
方法。
【発明を実施するための形態】
【0004】
図1は、例えば、例示的なアプリケーション管理サーバ105及び1以上のモバイル・ユーザ・デバイス110、115、120、125を含む例示的なシステム100を示している。そのようなモバイル・ユーザ・デバイスとして、いくつかある例の中でもとりわけ、スマートフォン、モバイル・ゲーミング・システム、タブレット・コンピュータ、ラップトップ、ネットブックがある。アプリケーション管理サーバ105は、ダウンロードされたアプリケーション、インストールされたアプリケーション、使用されているアプリケーション、又はユーザ・デバイス110、115、120、125のために提供されたアプリケーションの管理を支援するための1以上のサービスをユーザ・デバイスに提供することができる。ユーザ・デバイス110、115、120、125は、例えば、Android(登録商標) Market、iTunes(登録商標)、及び他の例等の集約型アプリケーション店舗(centralized application storefront)等のアプリケーション・サーバ140にアクセスすることができる。アプリケーション・サーバ140は、いくつかの例において、ユーザ・デバイス110、115、120、125にダウンロード及びインストールされ得るソフトウェア・アプリケーションの他のソースをさらに含み得る。ユーザ・デバイス110、115、120、125は、ローカル・エリア・ネットワーク及びインターネット等のワイド・エリア・ネットワークを含む1以上のネットワーク130を介して、アプリケーション管理サーバ105と通信することができ、アプリケーション管理サーバ105のデータ及びサービスを使用することができる。例示的なアプリケーション管理サーバ105のサービスの中でもとりわけ、ユーザ・デバイス110、115、120、125に利用可能なアプリケーションは、少なくとも部分的にアプリケーション管理サーバ105を介して提供される機能により、解析、評価、及び回復され得る。さらに、アプリケーション管理サーバ105は、ユーザ・デバイス110、115、120、125に利用可能になったサービスに関して、情報サーバ145等の他の外部システム及びサーバとインタラクトして、他の外部システム及びサーバのリソース、データ、及びサービスを使用することができる。例えば、そのような情報サーバ145は、いくつかある例の中でもとりわけ、ユーザ・デバイス110、115、120、125に利用可能なアプリケーションに関するさらなるインテリジェンス(intelligence)及びコンテキスト(context)を提供するサービス及びデータをホストすることができる。
【0005】
一般に、例示的なコンピューティング環境100におけるシステム・デバイスを含む「サーバ」、「クライアント」、「クライアント・デバイス」、「ユーザ・デバイス」、「モバイル・デバイス」、「コンピューティング・デバイス」、「ネットワーク・エレメント」、「ホスト」、「システム・タイプ・システム・エンティティ」、及び「システム」(例えば、105、110、115、120、125、140、145等)は、コンピューティング環境100に関連するデータ及び情報を受信、送信、処理、記憶、又は管理するよう動作可能な電子コンピューティング・デバイスを含み得る。本文書で使用されるとき、用語「コンピュータ」、「プロセッサ」、「プロセッサ・デバイス」、又は「処理デバイス」は、任意の適切な処理デバイスを含むよう意図されている。例えば、コンピューティング環境100内の単一のデバイスとして示されるエレメントは、複数のサーバ・コンピュータを含むサーバ・プール等の複数のコンピューティング・デバイス及びプロセッサを用いて実装され得る。さらに、コンピューティング・デバイスのうちのいずれか、全て、又はいくつかは、Linux(登録商標)、UNIX(登録商標)、Microsoft(登録商標) Windows(登録商標)、Apple(登録商標) OS、Apple(登録商標) iOS(登録商標)、Google(登録商標) Android(登録商標)、Windows(登録商標) Server等を含む任意のオペレーティング・システムとともに、カスタマイズされたオペレーティング・システム及びプロプライエタリなオペレーティング・システムを含む特定のオペレーティング・システムの実行を仮想化するよう適合された仮想マシンを実行するよう適合され得る。
【0006】
さらに、サーバ、ユーザ・デバイス、ネットワーク・エレメント、システム、及び他のコンピューティング・デバイスは、それぞれ、いくつかある機能及びハードウェアの中でもとりわけ、1以上のプロセッサ、コンピュータ読み取り可能メモリ、及び1以上のインタフェースを含み得る。サーバは、任意の適切なソフトウェア・コンポーネント若しくはモジュール、又は、分散ソフトウェア・アプリケーション、エンタプライズ・ソフトウェア・アプリケーション、又はクラウドベースのソフトウェア・アプリケーション、データ、及びサービスを含む、ソフトウェア・アプリケーション及びサービス(例えば、サーバ105のパーソナル・セーフティ・システム、サービス、及びアプリケーション等)をホスト及び/又はサーブすることができる1以上のコンピューティング・デバイスを含み得る。例えば、いくつかの実施例において、アプリケーション管理サーバ105、アプリケーション・サーバ140、情報サーバ145、又はコンピューティング・システム100の他のサブシステムは、システム100における他のサービス及びデバイスとインタフェースをとり、協働し、そのようなサービス等に依存し、あるいはそのようなサービス等により使用されるデータ、ソフトウェア・サービス、及びアプリケーションをリモートでホストし、サーブし、あるいは管理するよう構成されるクラウド実装型システムに少なくとも部分的に含まれ得る。いくつかの例において、サーバ、システム、サブシステム、又はコンピューティング・デバイスは、一般的コンピューティング・システム、サーバ、サーバ・プール、又はクラウド・コンピューティング環境上でホストされ得、共有メモリ、共有プロセッサ、及び共有インタフェースを含むコンピューティング・リソースを共有し得るデバイスの組合せとして実装され得る。
【0007】
ユーザ、エンドポイント、又はクライアント・コンピューティング・デバイス(例えば、110、115、120、125等)は、従来のコンピューティング・デバイス及びモバイル・コンピューティング・デバイスを含み得る。そのようなコンピューティング・デバイスとして、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、携帯情報端末、フィーチャフォン、ハンドヘルド・ビデオ・ゲーム・コンソール、デスクトップ・コンピュータ、インターネット対応テレビジョン、及び人間のユーザとインタフェースをとり、1以上のネットワーク(例えば、130)を介して他のデバイスと通信することができる他のデバイスがある。コンピュータ支援型アプライアンス(computer-assisted appliance)又は「スマート」アプライアンスは、家庭用デバイス及び産業用デバイス、並びに家庭用機械及び産業用機械を含み得る。そのようなデバイス及び機械は、コンピュータ・プロセッサを含み、コンピュータ・プロセッサ、他のハードウェア、及び/又はコンピュータ・プロセッサにより実行される1以上のソフトウェア・プログラムにより、制御され、モニタリングされ、支援され、補完され、あるいはデバイスの機能を向上させる。コンピュータ支援型アプライアンスは、多様なコンピュータ支援型機械及び製品を含み得る。そのようなコンピュータ支援型機械及び製品として、冷蔵庫、洗濯機、自動車、HVACシステム、産業用機械、オーブン、セキュリティ・システム等がある。
【0008】
ユーザ・コンピューティング・デバイス、コンピュータ支援型アプライアンス、サーバ、及びコンピューティング・デバイスの特性は、一般に、それぞれのオペレーティング・システム、及びロードされたソフトウェア・プログラム、インストールされたソフトウェア・プログラム、実行されたソフトウェア・プログラム、動作されたソフトウェア・プログラム、又は各デバイスがアクセス可能なソフトウェア・プログラムの集合を含め、デバイスごとに大きく変わり得る。例えば、コンピューティング・デバイスは、プログラムの様々なセットをランし、実行し、インストールし、あるいは含むことができる。そのようなプログラムのセットとして、オペレーティング・システム、アプリケーション、プラグイン、アプレット、仮想マシン、マシン画像、ドライバ、実行可能ファイル、及びそれぞれのデバイスによりラン、実行、又は使用されることが可能な他のソフトウェアベースのプログラムを含む。
【0009】
いくつかのシステム・デバイスは、システム・デバイスのコンピュータ・プロセッサによりサポートされる少なくとも1つのグラフィカル・ディスプレイ・デバイス及びユーザ・インタフェースをさらに含み得る。これにより、ユーザは、システム内で提供されるアプリケーション及び他のプログラムのグラフィカル・ユーザ・インタフェースを見て、グラフィカル・ユーザ・インタフェースとインタラクトすることが可能となる。そのようなグラフィカル・ユーザ・インタフェースは、システム・デバイス内でホストされるアプリケーションとインタラクトするプログラムのユーザ・インタフェース及びグラフィカル表現とともに、アプリケーション管理サーバ・サービス及び他のアプリケーションに関連付けられたユーザ・インタフェース等を含む。さらに、システム・デバイスは、1人のユーザにより使用されるという観点で説明され得るが、本開示は、多くのユーザが1つのコンピュータを使用し得ること、又は1人のユーザが、複数のコンピュータを使用し得ることも意図している。
【0010】
図1は、複数のエレメントを含むものとして、又は複数のエレメントに関連付けられるものとして説明されるが、
図1のコンピューティング環境100内に示される全てのエレメントが、本開示の各代替実施例において使用され得るわけではない。さらに、
図1の例に関して説明したエレメントのうち1以上は、コンピューティング環境100の外部に配置されてもよいのに対し、他の例では、所定のエレメントは、他の説明したエレメント及び例示した実施例に記載されていない他のエレメントのうちの1以上の一部内に、又は他の説明したエレメント及び例示した実施例に記載されていない他のエレメントのうちの1以上の一部として含まれてもよい。さらに、
図1に示した所定のエレメントは、他のコンポーネントと組み合されてもよいとともに、本明細書で説明する目的に加えて、代替の目的又は追加の目的のために使用されてもよい。
【0011】
次に
図2の例示的なブロック図に移ると、例えば、1以上のネットワーク130を介して通信するアプリケーション・サーバ140及び情報サーバ145を含むいくつかあるコンピューティング・デバイス及びネットワーク・エレメントの中でもとりわけ、アプリケーション・マネージャ205、ユーザ・システム210を含む例示的なシステムが示されている。1つの例示的な実施例において、アプリケーション・マネージャ205は、1以上のプロセッサ・デバイス215、メモリ・エレメント218、並びに1以上の他のソフトウェア実装型コンポーネント及び/又はハードウェア実装型コンポーネントを含み得る。例えば、1つの例示的な実施例において、アプリケーション・マネージャ205は、前述したものの組合せを含むいくつかある可能なマシン実行可能ロジック、コンポーネント、及び機能の中でもとりわけ、共有エンジン220、ユーザ・マネージャ222、回復エンジン225、挙動解析エンジン228、アプリケーション・インテリジェンス・エンジン230を含み得る。
【0012】
一例において、共有エンジン220は、アプリケーション(例えば、アプリケーション・サーバ140により利用可能になったもの)に関連する情報のクラウドソーシングを管理するための機能を提供するとともに、アプリケーション・マネージャ205により少なくとも部分的に生成又は収集されたリソースを含む、そのような情報及びリソースの共有を提供するよう構成され得る。例えば、例示的な共有エンジン220は、いくつかある例の中でもとりわけ、特定のユーザ及び関連するユーザ・デバイス(例えば、210)向けに開発された修正されたアプリケーション232及び定義されたアプリケーション・モード240を、複数のユーザ・デバイス(例えば、210)にわたって共有されるようにすることができる。例示的なユーザ・マネージャ222は、アプリケーション・マネージャ205のサービスを使用又は利用する様々なユーザ・デバイス(例えば、210)のユーザ・アカウントを管理するための機能を提供することができる。例示的なユーザ・マネージャ222は、いくつかある例の中でもとりわけ、様々な修正されたアプリケーション232、アプリケーション・データ及びフィードバック・データ(例えば、235)、並びに特定のユーザにより作成又は修正されたアプリケーション・モードを含むアプリケーション・モード240を、1以上のユーザ・アカウント及びシステム内のユーザ・デバイス(例えば、210)に関連付けることができる。
【0013】
いくつかの実施例において、アプリケーション・マネージャ205は、ユーザが、1以上のアプリケーション・サーバ(例えば、140)を介して提供されたアプリケーションを含む様々なアプリケーションをダウンロード、インストール、アクティブ化、又は使用、若しくは入手することを試みることに関して、1以上のユーザ・デバイス(例えば、210)にアプリケーション管理、セキュリティ、及び診断サービスを提供することができるコンポーネント、エンジン、及びモジュールをさらに含み得る。例えば、1つの例示的な実施例において、アプリケーション・マネージャ205は、システム上のユーザ・デバイスに利用可能になった様々なアプリケーションの機能を解析及び識別するよう適合された例示的な挙動解析エンジン228を含み得る。さらに、ユーザ又は管理者が、いくつかある例の中でもとりわけ、ブロック、制限、回復、又は修正することを望み得るアプリケーションの機能が、例えば、挙動解析エンジン228により識別され得る。したがって、いくつかの実施例において、例示的なアプリケーション・マネージャ205は、例えば、挙動解析エンジン228により検出された望ましくないアプリケーション機能を除去するために、ユーザに代わってアプリケーションを修正し、それにより修正されたアプリケーション232を生成するよう構成された例示的な回復エンジン225を含み得る。いくつかの例において、修正されたアプリケーション232は、対応するユーザのリクエスト、ルール、設定、及び嗜好に基づいて、具体的に修正及び構成され得る。さらに、アプリケーション・マネージャ205は、例えば、情報サーバ145及びアプリケーション・マネージャ205の内部と外部の両方にある他のソース並びにそのクライアント・ユーザ・デバイス(例えば、210)から、アプリケーション・データ(例えば、235)を収集するよう構成されたアプリケーション・インテリジェンス・エンジン230を含み得る。アプリケーション・インテリジェンス・エンジン230を使用して、例えば、アプリケーション・サーバ140によりサーブされた1以上のアプリケーションに関するインテリジェンスを収集することができる。インテリジェンスは、いくつかある例の中でもとりわけ、アプリケーション・マネージャ205による挙動解析及びアプリケーションの評価等の、アプリケーション・マネージャ205により提供されるサービスに関して使用され得る。
【0014】
いくつかの実施例において、ユーザ・デバイス(例えば、210)は、1以上のプロセッサ・デバイス242及び1以上のメモリ・エレメント245に加えて、例えば、モード・マネージャ248、設定マネージャ252、セキュリティ・ツール250を含む1以上の他のソフトウェア実装型コンポーネント並びに/又はハードウェア実装型コンポーネント、及び1以上のアプリケーション255(例えば、アプリケーション・サーバ140を介して入手されたもの)を含み得る。1つの例示的な実施例において、ユーザ・デバイス210は、ユーザ・デバイス210上の複数のアプリケーション・アクセス・モード265を定義、実行、及び管理するための機能を備えたモード・マネージャ248を含み得る。モード・ルール270は、さらに、モード・マネージャ248により管理され得る。モード・ルール270は、例えば、ユーザ・デバイス210上の様々なモード265を自動的に開始又は実行するための特定の条件を定義する。さらに、1以上の設定260は、例えば、例示的な設定マネージャ252を介してユーザにより定義され得る。設定は、いくつかある例の中でもとりわけ、デバイス210の様々なモード265に対応するものであり、場合によっては、デバイス210の様々なモード265に関して使用される。
【0015】
図3の例に移ると、簡略化されたブロック
図300は、例示的なアプリケーション・マネージャの機能及びフローを示している。例えば、挙動モニタ228は、いくつかある例の中でもとりわけ、アプリケーションの1以上の機能及び/又はコンテンツが、良いものであるか、悪いものであるか、疑わしいものであるか、あるいは未知の品質のものであるかを識別するために、アプリケーションを評価することができる。この評価は、情報サーバ、ユーザ・フィードバック、及び他のソース等の様々なソース(例えば、145)から取得された情報に基づき得る。「悪い」アプリケーション機能及び/又はコンテンツが識別される例において、アプリケーション回復エンジン225は、アプリケーションを修正し、アプリケーションの回復バージョンに対応する修正アプリケーション・ファイル232を生成するために識別された望ましくない機能を修正するよう関与し得る。さらに、疑わしいアプリケーション又は未知のアプリケーションは、実際においてアプリケーションンの機能に関するより多くのインテリジェンスが取得されるまで疑わしいアプリケーションを隔離するために、ユーザ・デバイス210の特定の制限アクセス・モードに専用となるよう、例えば、モード・マネージャ248により指定され得る。アプリケーションが、ユーザ、ネットワーク、管理者等のルール、要件、又は嗜好を満たすと判定される例において、アプリケーションは、ユーザ・デバイス上へのインストールに進むことが許可され得る。さらに、修正アプリケーション・ファイルを生成するよう回復されたアプリケーションは、いくつかある例の中でもとりわけ、修正されたアプリケーションがデバイス上へのインストールのためにユーザ・デバイスに進むことを可能にし得る。
【0016】
図4は、例示的なアプリケーション挙動解析エンジンを介して可能にされる例示的な原理及びアクティビティを示すブロック
図400を含む。アプリケーション・バイナリ405は、逆アセンブラ・データ/制御フロー・アナライザ410によりアクセス又は受信され得る。逆アセンブラ・データ/制御フロー・アナライザ410は、アプリケーション説明、レビュー、コメント、並びに他の構造化データ及び非構造化データ等の、(例えば、外部情報ソースに加えて、ユーザ、レビューワ等から収集された)アンビエント・アプリケーション・ナレッジ(ambient application knowledge)415と相まって、アプリケーション・バイナリ405ごとに、アプリケーション・ロジックのモデル420を作成することができる。逆アセンブラ・制御フロー・アナライザ410は、例えば、コード又はアプリケーション・ロジック・モデルを、ソフトウェア開発キット内で定義された既知の機能又はソフトウェア開発キットから識別可能な既知の機能と、及び/又は対応するクライアント・デバイス・オペレーティング・システムに加えて、クライアント・デバイスに適合するアプリケーションの大部分又は全てにより使用される共通APIと比較することに基づいて、所与のアプリケーションの挙動425を識別することができる。いくつかの例は、いくつかある例の中でもとりわけ、Google(登録商標) Android(登録商標)ソフトウェア開発キット、Apple(登録商標) iOS(登録商標)ソフトウェア開発キット、Windows(登録商標)ソフトウェア開発キットを含む。
【0017】
一般に、プラットフォーム・ソフトウェア開発キット(「SDK」)は、プラットフォームに適合するアプリケーションによりアクセス可能な種々のプラットフォーム・サブシステムを定義し、そのようなプラットフォーム・サブシステムへのアクセスを提供するドキュメンテーション、ヘッダ・ファイル、ライブラリ、コマンド、インタフェース等を提供することができる。1つの例示的な実施例において、プラットフォームSDK及び対応するAPI並びにAPIコール(すなわち、APIの関数及びルーチンに対するコール)は、プラットフォームに適合するアプリケーションの挙動及び機能を判定するために、例えば、アプリケーション挙動エンジンにより使用され得るモデル内に表現され得る。共通に使用されるAPIのセマンティックスが、アプリケーション挙動を導出するのに必要な重要情報とともに、プログラム読み取り可能な形態で表現される。例示的なアプリケーション挙動エンジンが、APIコールを用いて所与のアプリケーションのオペレーション及び挙動を理解及び識別するために、セマンティック・モデルを使用することができるように、プラットフォームSDKのセマンティックスが表現され得る。例えば、1つの例示的な実施例において、プラットフォームの潜在的なAPIの全てが、それぞれのAPIコールがプラットフォーム上で行うことを説明するとともにAPIのオペレーション及び挙動の対応するパラメータを説明する挙動タグ(behavioral tag)でそれぞれのAPIコールの名前をタグ付けすることにより、例えば、APIインテリジェンス430を介して表現され得る。一例として、そのようなセマンティック表現のテンプレートが、例えば、以下のようにモデル化され得る。
【数1】
【0018】
前述の例において、「category」は、APIコールのタイプを指定し得、そのようなAPIコールの一般的機能を識別するために使用され得る。そのような機能として、APIコールが、特定のサブシステム、ディスク等から情報を読み出すもの、様々なメッセージを生成するもの、様々なネットワーク挙動を開始するもの、様々な外部サーバと通信することを試みるもの、特定のデバイス機能又はエレメント(例えば、カメラ、SMSコントローラ等)をトリガするものがある。「Sensitivity」は、サブシステムが、多くの例の中でもとりわけ、マルウェアの導入、許可されていないトラッキング又はデータ収集、SMSメッセージ又は電子メール・メッセージの許可されていない又は望ましくない読み取り又は送信を潜在的に許す場合、特定のメモリ位置への読み込みがスパイ(spying)の可能性をもたらすかどうか等、サブシステムに関する悪意のある挙動の可能性のコンテキストにおいて、APIにより影響が及ぼされる、あるいはAPIにより関連付けられるサブシステムのそれぞれの感度(sensitivity)を表し得る。さらに、「dependency」は、このAPIの出力がプログラムの他の部分に直接的に影響を及ぼし得るかどうかを表し得る。例えば、sendTextMessage()APIは、いくつかある例の中でもとりわけ、このAPIが単にSMSメッセージを送出するだけであり、何も返さない場合には、依存関係を有さないものとして識別され得る。
【0019】
他の情報は、ソースのコミュニティ445、ルール450、及び他の情報からインテリジェンスを収集するグローバル・スレット・インテリジェンス(GTI)440等の、評価下にあるアプリケーションの挙動を判定するために、(例えば、例示的な解析エンジン(例えば、228)の)挙動ヒューリスティックス/ルール・エンジン435により使用され得る。
【0020】
上述したように、例示的なアプリケーション挙動解析エンジン(例えば、228)は、例えば、適合するアプリケーションが基づく標準プラットフォームSDKのセマンティック表現に基づいて、所与のアプリケーションの制御フロー、オペレーション、機能、及び挙動を識別するための機能を有することができる。
図5Aにおいて、例示的なゲーミング・アプリケーションのための簡略化されたアプリケーション制御フローの表現500が示されている。ゲームの機能は、一般的に、望ましく、セキュアであり、安全であり得るが、プラットフォームSDKのセマンティック表現及びゲーム・アプリケーションのためのアンビエント・アプリケーション・インテリジェンスと比較したゲーム・アプリケーション・バイナリのコードのより深い検査は、ユーザの明示的な知識又は許可を伴う又は伴わない、SMSメッセージを送信するアプリケーション等の、ユーザにより即座に識別可能でない、理解されない、あるいは認識されない他の機能の識別をもたらし得る。別の例として、
図5Bに示されるように、アプリケーション・バイナリの特定のオブジェクトの検査が、所与のアプリケーションの機能及び制御フローの全体を明らかにし得るとともに、ユーザが認識、理解、又は承認し得ない、個々のプログラム、プログラム・ユニット、又はアプリケーション間の依存関係を明らかにし得る。一例として、いくつかの実施例において、識別された挙動ヒューリスティックスは、データ・フロー及びコールの特定のパターンを識別するXMLファイルにおいて、外部的に表現され得る。挙動は、そこから、識別することができる。例えば:
【数2】
【0021】
いくつかの実施例において、例えば、プラットフォームSDKのセマンティック表現のモデルに基づいて、アプリケーション・ロジックはモデル化され得、ルールが、アプリケーション・ロジックを解釈して、悪意のある挙動、プライバシを侵害する挙動、ポリシ違反の挙動、又は他の望ましくない挙動に対応するアプリケーションの対応するバイナリ内の命令及びコールを識別するために、適用され得る。アプリケーションの機能の論理モデルは、いくつかある例の中でもとりわけ、データ・フロー構造及び制御フロー構造を介したアプリケーション・ロジックの表現(例えば、505)を含み得る。データ・フロー構造は、データ・オブジェクトが、アプリケーション・ロジック(例えば、510)を通って、外部プログラム・ユニットを含む他のプログラム・ユニット(例えば、515)に到達するときの、データ・オブジェクトの寿命を表し得る。データ・フロー構造(例えば、505)を使用して、データが移動しアプリケーション・ロジックにより潜在的に変形されるときに、アプリケーション・プログラムの一部分からデータのフローを識別することができる。例えば、データ・フロー・モデルを使用して、いくつかある例の中でもとりわけ、インターネット通信後オペレーションを介して、特定のデータがアプリケーションによりリークされていると推定することができる。さらに、制御フロー構造は、影響を受けやすい(sensitive)又は望ましくないものであると判定されたアプリケーション・コールの発生源を識別するための、様々な関数コール(例えば、520、525)の制御フローを表し得る。例示的な例として、SMSメッセージを送信するアプリケーションによるコールは、多くの可能な例の中でもとりわけ、例えば、ユーザがインタラクトしたアプリケーションのUIエレメントに遡ることができる、あるいは、アプリケーションのバックグラウンド・プロセスにおける自律的イベントにまで遡ることができる。
【0022】
図6の例に移ると、例えば、プラットフォームSDKにおいて定義された1以上のAPIを介してアプリケーションによりアクセス可能な様々なサブシステム、デバイス、及び機能を示す簡略化されたブロック図が示されている。いくつかの実施例において、全てのプラットフォーム・サブシステムは、サブシステムが、悪意のある挙動又は望ましくない挙動に関して操作又は使用されるかもしれないという可能性のコンテキストにおけるそれぞれのサブシステムの感度に基づいて、分類され得る、あるいは重みが割り当てられ得る。そのような重み及び感度は、様々なファクタに基づき得る。そのようなファクタとして、いくつかある例の中でもとりわけ、例えば、プライバシの侵害の可能性、データ・リーク、金銭上の感度がある。これらのファクタはまた、プラットフォームの様々なサブシステムの分類の基礎を形成し得る。そのようなサブシステムは、モバイル・デバイスに組み込まれ得る将来の機能を含む多くの可能な機能及びサブシステムの中でもとりわけ、例えば、連絡先リスト、フォト・ギャラリ、電子メール・クライアント、カレンダ、インターネット接続及び閲覧、グラフィックス、ビデオ機能、カメラ、オーディオ、セキュリティ・ツール及びエンジン、電話、Wi−Fi(登録商標)機能、Bluetooth(登録商標)機能、データ・ポート、バッテリ電力、タッチスクリーン、グローバル・ポジショニング・システムを含み得る。
【0023】
図7の例に示されるように、アプリケーション挙動解析エンジンのルール・エンジンは、例えば、ルール・データベースからのルールにアクセスすることができる。そのようなルールは、例えば、ユーザの嗜好に従った、特定のユーザ又はユーザのセット向けにカスタム定義されたルール及び/又はそのような特定のユーザ又はユーザのセットによりカスタム定義されたルールに加えて、ユーザに適用可能なポリシ(例えば、インターネット・サービス・プロバイダ、エンタプライズ・ネットワーク、ブロードバンド・データ・プロバイダ等のポリシ)を含む。ルール・エンジンは、(例えば、アプリケーションに対応するプラットフォームSDKのセマンティック表現に基づいて作成された)アプリケーション・ロジック・モデルをさらなる入力として受け取り、アプリケーション・ロジック・モデルにおいて識別されたアプリケーションの様々なオペレーション及び機能を評価することができる。ルール・エンジンは、アプリケーションの特定のインスタンスに適用可能なものとして識別されたルールに従って、アプリケーションの様々なオペレーション及び機能を評価することができる。そのようなアプリケーションのインスタンスとして、識別されたルールに関連付けられたユーザの特定のユーザ・コンピューティング・デバイスにダウンロード又はインストールされることを試みられたアプリケーションのインスタンスがある。1以上のルール(例えば、所定の挙動又はアクションを禁止するルール)に違反し、いくつかの例において、識別されたアプリケーション挙動の修正及び/又は目標ユーザ・デバイス上の1以上のオペレーション・モードへのアプリケーションの割り当てを促すものとして識別されたアプリケーション挙動を含むアプリケーション挙動が、ルール・エンジンにより識別され得る。そのようなオペレーション・モードとして、いくつかある例の中でもとりわけ、隔離オペレーション・モード又は管理者オペレーション・モードがある。
【0024】
いくつかの実施例において、識別された挙動の、APIセマンティックスの説明に基づく人間が読み取り可能な説明が構築され得る。一例において、人間が話すことができる動詞及び名詞が、セマンティック表現におけるテンプレート・メッセージに関連付けられ得、APIに利用可能な関数及びオペレーションの特定の人間が理解可能な説明にマッピングされ得る。さらに、例えば、アプリケーション挙動解析エンジンにより実行される、セマンティック・モデルに従ったアプリケーションの評価に関して、挙動解析結果の人間が読み取り可能なサマリが、そのマッピングから生成され得、いくつかの実施例では、解析されたアプリケーションの制御フロー、データ・フローとともに、様々な機能を説明するように、ユーザに提示され得る。そのような結果は、ユーザに不可視なあるいはユーザによる検出が難しい機能を含む、アプリケーションの解析中にカバーされなかった機能の説明を生成するために、人間が読み取り可能な説明を利用し得る。例えば、一実施例において、ユーザのデバイスからSMSデータを読み取るための例示的なアプリケーションの機能を識別及び説明するために、テンプレートが使用及び入力され得る。例示的な例として、「このアプリケーションは、SMSインボックスから、あなたのSMSデータを読み取り、ウェブ・サイトに送信する」といった対応する説明が生成され得る。そのような説明は、例えば、次のようなプラットフォームSDKのセマンティック表現及びAPIに基づいて例示的なテンプレートに書き入れることにより構築され得る:「このアプリケーションは、<名詞:SMSインボックス>から、あなたの<名詞:SMSデータ>を<動詞:読み取り>、<名詞:ウェブ・サイト>に<動詞:送信する>」。
【0025】
いくつかの例において、解析されたアプリケーション挙動は、解析されたアプリケーションによる他のアプリケーション、プログラム、又はサービスの使用を明らかにし得る。いくつかの例において、解析されたアプリケーションによる、ローカル・アプリケーション、リモート・サービス、又は他のプログラムへのコールは、例えば、他のコールされたアプリケーションが、いくつかある例の中でもとりわけ、安全でない、信頼できない、あるいは未知であるとして識別される場合、望ましくないものであり得る。他の例において、解析されたアプリケーションによりコール又は使用されたプログラムは、信頼できるプログラムとして識別され得る。したがって、いくつかの実施例において、アプリケーション挙動解析エンジンは、様々な解析されたアプリケーションに既知である、あるいはそのようなアプリケーションにより潜在的にコールされ得る様々なプログラムのステータス及び評価を識別するホワイトリスト及び/又はブラックリストを使用、生成、変更、及び管理することができる。いくつかの実施例において、リモート・サーバによりホストされるアプリケーション及びサービスは、さらに、いくつかある例の中でもとりわけ、それぞれのURL又はそれぞれのホスト・サーバに対応する他のアドレス情報により、そのようなホワイトリスト及び/又はブラックリストにおいて識別され得る。
【0026】
いくつかの実施例において、挙動解析エンジンは、評価下で、アプリケーションにより特定のアクティビティが実行される、プラットフォームAPIがアクセスされる、あるいは機能が使用されるコンテキストを識別することができる。一例として、プラットフォーム電話サブシステムにアクセスしようとする解析されたアプリケーションの試みは、その試みの原因又はコンテキストに基づいて評価され得る。例えば、いくつかのコンテキストにおいて、特定のAPIコールは、完全に容認できるものであり得るのに対し、他のコンテキストにおいて、そのAPIコールは望ましくないものであり得る。例えば、ボタン押下等のユーザ・インタフェース・インタラクションに応答して電話サブシステムにアクセスする識別されたアプリケーション機能は、いくつかある例の中でもとりわけ、ユーザにより提供された指示に応答するものではなく、自律的に電話サブシステムにアクセスしようとするアプリケーションによる試みとは異なって評価され得る。
【0027】
上述したように、いくつかの実施例において、アプリケーション挙動の評価において使用され得るルールが定義され得る。そのようなルールは、挙動が悪意のあるものであると判定されるべきであるコンテキストを含む、アプリケーション挙動解析エンジンにより識別されたアプリケーションのロジック又は潜在的に悪意のある挙動のヒューリスティック解析を実行する際の使用のために表現及び構成され得る。例えば、ルール・エンジンは、アプリケーション内に存在する1以上の潜在的に悪意のある挙動又は望ましくない挙動を識別するために、1以上のルールをアプリケーション・ロジック・モデルに適用することができる。いくつかの実施例において、ルールは、以下のように表現され得る。
【数3】
ルールは汎用的なものであってもよいし、特定のサブシステム等に固有のものであってもよい。そのようなルールとして、いくつかある例の中でもとりわけ、個人用連絡先データを記憶するメモリ・エレメントのデータ・リークを検出するルール等がある。特定のアプリケーション挙動は、単一のルール又は複数のルールのアプリケーションに基づいて導出され得る。
【0028】
いくつかの実施例において、アプリケーション挙動解析エンジンは、解析が実行されるモバイル・ユーザ・デバイスからリモートにある1以上のサーバ・コンピューティング・デバイス上でホストされ得る。他の例では、アプリケーション挙動解析エンジンの少なくとも一部分は、サーバ・サイド・アプリケーション挙動解析エンジン・コンポーネントの機能とともに、代替的に又は重複して提供され得る。例えば、1つの例示的な実施例において、ユーザ・コンピューティング・デバイスには、ユーザ・デバイスにおいて実行されるアプリケーションの少なくとも部分的な又は迅速な予備的評価を可能にするアプリケーション挙動解析エンジン機能が提供され得る。それにより、ユーザに迅速なフィードバックを提供することができるとともに、アプリケーションが隔離されるべきであるか、ダウンロード又はインストールを拒否されるべきであるか、且つ/あるいは例えば、クラウド・システム内に設けられたもの等のリモート・アプリケーション挙動解析エンジンに転送されるべきであるかを評価することができる。それにより、アプリケーションのよりロバストな挙動解析が可能となる(おそらくは、挙動解析評価により増大した待ち時間をもたらし得る)。
【0029】
いくつかの実施例において、アプリケーションの解析中、解析されるアプリケーションのダウンロード、隔離、又は起動は、解析が終了するまで、止められ得る、あるいは遅延され得る。いくつかの例において、ユーザには、アプリケーションの解析を識別するとともに、解析されるアプリケーションのインストール、ダウンロード、又は起動に対処するための様々なオプションを提供するプロンプトが提供され得る。例えば、ユーザには、いくつかある例の中でもとりわけ、解析を省略するオプション、解析されるアプリケーションのインストールを遅らせるオプション、解析されるアプリケーションを特定のモードに割り当てるオプションが提供され得る。さらに、いくつかの実施例において、評価に関してユーザに提示されるプロンプトは、挙動解析エンジン評価及び/又は解析されるアプリケーションに関連する外部インテリジェンスから収集された予備的情報等の情報とともに提示され得る。そのようなインテリジェンスは、例えば、いくつかある例の中でもとりわけ、解析されるアプリケーションの以前の評価において挙動解析エンジンにより収集されたインテリジェンスを含み得る。実際、いくつかの実施例において、挙動解析エンジンは、いくつかある例の中でもとりわけ、特定の解析されるアプリケーションに関して、挙動解析エンジンから受信されたフィードバックに他のユーザがどのように反応したかを、そのアプリケーションのために発見されたユーザ挙動に対して示すことができる。
【0030】
いくつかの実施例において、挙動解析エンジンは、挙動解析エンジンに既知の、且つ/あるいは挙動解析エンジンにより以前に解析された、アプリケーションのブラックリスト、グレイリスト、及び/又はホワイトリストを保持することができる。そのようなブラックリスト、グレイリスト、及び/又はホワイトリストは、他のソース及び他のユーザからの外部インテリジェンスである、以前の挙動解析から収集されたインテリジェンスの履歴に基づき得る。挙動解析エンジンは、そのような情報を使用して、アプリケーションの初期評価を実行することができ、以前の解析から収集された情報を利用することができる。それにより、初期フィルタリング又はフィードバックが、ユーザが特定のアプリケーションをどのように扱うかとともに、挙動解析エンジンを用いてそのアプリケーションに対するさらなる挙動解析を開始するかどうかを決定することを支援するために、ユーザに提供され得る。
【0031】
アプリケーションの挙動解析、及び/又はブラックリスト/ホワイトリストは、さらに、いくつかある例及び考慮事項の中でもとりわけ、様々なアプリケーションに責任があるとして識別された開発者又は他のパーティの一般的評価情報を組み込む、あるいは考慮に入れることができる。アプリケーションの開発者、ディストリビュータ等の信頼性又は非信頼性(untrustworthiness)を考慮に入れたルールが定義され得る。例えば、挙動解析エンジンによる開発者のアプリケーションの集約解析に基づいて、アプリケーション開発スコア・レーティングが、開発者のために計算され得る。例えば、そのようなレーティングは、いくつかある例の中でもとりわけ、以下のように導出され得る:
AppDeveloper Rating=f(アプリケーションの総数,アプリケーションにおける望ましくない挙動の重み付き平均,アプリケーションの人気、低レーティングの平均レシオ)
例えば、1つの例示的な例において、望ましくない挙動の重み付き平均は、開発者のアプリケーションのセットに対して生成され得る:
【表1】
いくつかある例示的な実施例の中でもとりわけ、平均重み(average weight)は、
平均重み=総重み/アプリケーションの総数
により導出され得る。
【0032】
挙動解析エンジンにより評価されるアプリケーションにより使用され得る、1以上のネットワークにわたって検出された悪意のある挙動を識別するために、グローバル・スレット・インテリジェンス(GTI)フィード等のインテリジェンス・データベース等の外部ソースを使用することができる。例えば、他の悪意のある攻撃、マルウェア、又は疑わしいシステムに関連する、あるいは他の悪意のある攻撃、マルウェア、又は疑わしいシステムにおいて使用されたと以前に判定された様々なURL、IPアドレス、電話番号、及びファイルを識別することができる。さらに、挙動解析エンジンは、インテリジェンス・データベースとインタフェースをとって、いくつかある例の中でもとりわけ、挙動解析エンジン自身により実行されたアプリケーションの挙動解析から収集されたさらなるインテリジェンスを提供することができる。
【0033】
さらに、いくつかのシステム及びプラットフォームにおいて、1以上のアプリケーション・サーバ又は店舗により提供されたアプリケーションは、所与のアプリケーションのために収集された、基本的説明、レーティング、ユーザ・フィードバック等をユーザに提供することができる。残念なことに、多くの例において、そのようなレーティング、アプリケーション説明、コンテンツ・レーティング等は、アプリケーション開発者自身により提供、操作、又は影響され得る。それにより、いくつかのアプリケーションに関してユーザに提供される情報の信頼性又は正当性が潜在的に損なわれる。したがって、実施例のうちのいくつかにおいて、例示的な挙動解析エンジンにより実行されたアプリケーションの挙動解析から収集されたインテリジェンス(例えば、挙動説明)を使用して、プラットフォーム上で利用可能なアプリケーションの閲覧、購入、及びダウンロードに関して、ユーザに提供される説明を補足、訂正、又は修正することができる。さらに、いくつかの実施例において、挙動解析エンジンは、こうしたデフォルトのアプリケーション説明、コンテンツ・レーティング、ユーザ・フィードバック等を、挙動解析に関して考慮される外部インテリジェンスとして使用することができる。さらに他の例において、挙動解析エンジンを使用して、挙動に従ってアプリケーションを分類するための基礎として機能し得る、複数のアプリケーション間の共通挙動特徴(common behavioral trait)を識別することができる。そのような分類は、いくつかある例の中でもとりわけ、ユーザが様々なアプリケーションの品質及び挙動、並びに潜在的リスクをより良く理解するのを支援するために、ユーザに提供され得る。
【0034】
図8に移ると、(例えば、挙動解析エンジンを用いた)アプリケーション挙動の深い解析を実行し、アプリケーションにおいて望ましくないと判定された挙動を修正する試みにおけるアプリケーション回復を実行するとともに、いくつかの例において、アプリケーションの他のコア機能を維持するための例示的なフローである簡略化された概略
図800が示されている。図示されるように、アプリケーション・バイナリが、いくつかの例において、アンビエント・アプリケーション・ナレッジ415、インテリジェンス等にさらに基づくアプリケーション・ロジック・モデル(例えば、420)を作成するために、(例えば、挙動解析エンジンの)逆アセンブラ・データ制御フロー・アナライザ410に提供され得る。上述したように、アプリケーション・ロジックのモデル420は、それぞれのアプリケーションのアプリケーション挙動を識別するために、定義されたルール、プラットフォームAPIインテリジェンス、及び挙動ヒューリスティックスに基づいて、挙動ヒューリスティック/ルール・エンジン435により評価され得る。さらに、アプリケーションのコードのセクションが、示された望ましくない挙動に責任を有するとして、評価中識別され得る。このコードには、修正のためにフラグが付けられ得る。さらに、アプリケーション挙動が望ましくないものとして識別され、ユーザ、管理者、又は予め定義されたルールにより回復されるようリクエスト又は指示される例において、アプリケーション・バイナリは、さらに、規律を破る挙動及び対応するコードを除去、ブロック、又は修正し、それによりユーザがその後にユーザのデバイスにダウンロード及びインストールさせ、ユーザのデバイス上で実行させることができるアプリケーション・バイナリの回復バージョン232を生成するために、処理され得る。さらに、上述したように、グローバル・スレット・インテリジェンス・フィード440又は他のインテリジェンス・データベースは、考慮及び挙動解析とともにアプリケーション回復のために、インテリジェンスを提供することができる。さらに、挙動解析から収集されたインテリジェンスは、ユーザ及びシステムのコミュニティ445から入力、データ、及びインテリジェンスをさらに受信する外部インテリジェンス・データベースと共有され得る。
【0035】
次に
図9の例に移ると、アプリケーションの挙動解析に基づいて望ましくない挙動を含むと判定されたアプリケーションの管理及び修正に関してなされる決定を示すさらなるフローチャート900が示されている。例えば、ルール及びポリシが、1以上の望ましくない挙動を含むと判定されたアプリケーションがどのように処理されるべきか及びどのような条件下で処理されるべきかを定義するために、例えば、ユーザ、システム管理者、又はネットワーク管理者により定義され得る。そのようなポリシは、例えば、望ましくない挙動の特定のタイプを識別し得、そのような挙動を、いくつかある例の中でもとりわけ、アプリケーションの回復又は修正、アプリケーションのブラックリスト化又はホワイトリスト化、アプリケーションの隔離等のアクションの予め定められたコース(course)にマッピングし得る。さらに、ユーザ入力は、ユーザ・コンピューティング・デバイス上へのアプリケーションの配備(deployment)の管理を促進させ得る。そのような入力は、ユーザに提示されたプロンプトに関して受信され得、いくつかある例の中でもとりわけ、例えば、1以上の識別された望ましくない挙動を修正するリクエスト、解析されたアプリケーションを特定のオペレーション・モード又は隔離領域に割り当てる命令を含み得る。
【0036】
上述したように、アプリケーション挙動の静的回復及び個別化(personalization)が、アプリケーションのコードを修正することを可能にする回復エンジンにより実行され得、ユーザが望ましくない挙動を除去するとともにアプリケーションの安全な機能又は正当な機能を維持することを可能にするアプリケーションの「安全」バージョンを生成し得る。そのような回復は、いくつかのケースでは、回復を促進させる個別に定義されたポリシに個別化又はカスタムマイズされ得る。それにより、ユーザ、サービス・プロバイダ、デバイス製造業者等は、対応するユーザ・デバイスにインストールされるアプリケーションの機能を制御して個別化することが可能となる。
図10において、オリジナル・アプリケーション1005の例示的な回復のフローを示す簡略化されたb
図1000が示されている。望ましくない挙動及びアプリケーション・バイナリのコードの規律を破るセクションを識別すると(1010)、規律を破るコード及び対応する挙動を識別、除去、置換、又はブロックして、修正されたアプリケーション・バイナリ1015を生成するために、回復エンジンが提供され得る。一例として、回復エンジン228は、様々なタイプの望ましくない挙動を除去又はブロックすることによりアプリケーションを修正するためのロジックを含み得る。そのような除去又はブロックは、例えば、この例において、オリジナル・アプリケーション・バイナリにおいて発見された規律を破る命令を除去することによるSMS機能の許可されていない読み取り又はアクセスである。この例に示されているように、他の例では、回復エンジンは、例えば、APIコールを信頼できるシステム、宛先、アドレス等にリダイレクトするようコードを書き換えることにより、規律を破るコードを修正することができる。回復エンジン228は、アプリケーションの所望のコア機能に影響を及ぼすのを避けるために、最小限の変更でオリジナル・コードを修正することができる。さらに、回復ポリシは、回復のためのアプリケーション・コードを識別するために考慮されるパターンを識別し得る。これは、例えば、規律を破る挙動に対応するコードのヒューリスティック・パターンを識別するXMLファイルで表現され得る。各タイプのコードの定義されたパターン又は識別されたパターンは、例えば、対応するポリシに従って、特定の回復方法により回復され得る。そのような方法は、回復がアプリケーションの機能の残りの部分に影響を及ぼさないように、識別及び定義され得る。
【0037】
様々な回復方法が、アプリケーション回復エンジンにより使用され得る。例えば、コード機能の特定の規律を破るラインが、制御チェーンにおける最終ノード又はリーフ・ノードとして識別され得る。そのような例において、規律を破るコードが、いくつかある例の中でもとりわけ、アプリケーション内の依存関係に影響を及ぼすことなく、抑制又は除去されることが可能であると判定され得る。別の例において、特定のAPIコールの除去が、周囲コードに影響を及ぼす可能性がないと判定される場合、除去による回復方法が適用され得る。APIの性質及び特性が、いくつかある例の中でもとりわけ、例えば、セマンティック・プラットフォームSDK表現から学習され得る。他の例において、規律を破る挙動が、コードの1以上のセクションからのものであり得、いくつかある例の中でもとりわけ、例えば、APIの挙動を変更するためにレジスタ内のデータを置換することや、規律を破るAPIコードを新たなAPIコードで置換することにより同じインタフェースでAPIコールをAPIの新たなバージョンにリダイレクトすることによる、その挙動を修正するために適用される複数の回復の方法をもたらし得る。APIの新たなバージョンが導入される例において、その新たなAPIは、望ましくない挙動を解決するいくつかある例示的な技術の中でもとりわけ、例えば、何もせずプログラムの他の部分に影響を及ぼさないようにレジスタ・ステータスを設定する、望ましくない挙動を避けるために様々な方法で入力を処理する、あるいは、入力/出力パラメータの前処理及び/又は後処理を行ってオリジナルAPIをコールすることができる。
【0038】
図11に移ると、特定の望ましくない挙動に関連するコードの識別を示す簡略化されたブロック図が示されている。例えば、アプリケーション・コードのセクション1a及びセクション1bは、検出された望ましくない第1の挙動に対応するものとして識別され得、セクション2a及びセクション2bは、アプリケーションの望ましくない第2の挙動に対応するものとして識別され得る。したがって、アプリケーションを回復することは、コードの識別された規律を破るセクションを、望ましくない挙動を修正又は抑制するコードで修正又は置換することを含み得る。さらに、識別されたコード又はAPIコールに対応する回復ポリシは、規律を破るコードを修正し望ましくない挙動を修正するための回復技術を識別するために、識別され得る。
【0039】
図12A〜
図12Eにおいて、望ましくない挙動の検出及び望ましくない挙動の修正のさらなる例が示されている。例えば、
図12Aにおいて、アプリケーションが緯度及び経度情報を外部サーバに送信することを可能にする例示的なコード・フラグメントが、例えば、挙動解析エンジンを使用するAPIテンプレートに入力するために処理されているものとして示されている。
図12Bに示されるように、地理的位置データを収集し地理的位置データを外部サーバに送信する挙動に対応するアプリケーション・コードの部分が識別され得る。一例に従うと、コードの規律を破るラインが、例えば、いくつかある例の中でもとりわけ、アプリケーションがユーザ位置を追跡するのを防止するように、地理的位置データの送信をマスク又はリダイレクトするコードで置換され得る。別の例において、
図12Cに示されるように、アプリケーション内の制御フローが、対応するアプリケーション・コードとともに識別され得る。
図12D〜
図12Eの例に示されるように、特定の望ましくない挙動の修正は、いくつかある例の中でもとりわけ、コードの規律を破るラインの削除を含み得る。
【0040】
図13は、アプリケーションの1以上の検出された望ましくない挙動の修正に関する例示的なフロー1300を示している。例えば、特定のユーザに関するアプリケーションの挙動の動的個別化とのコネクション、アプリケーションの複合的挙動、及び対応するコード・セグメントが識別され得る。ユーザが修正又は変更のための特定の識別された挙動を選択することを可能にするユーザ・インタフェースが、アプリケーションの回復又はカスタマイズに関して提示され得る。1つの例示的な実施例において、ユーザ・インタフェースには、アプリケーション回復エンジンに関して、アプリケーション回復エンジンがどのように(例えば、どの識別された挙動)アプリケーションを修正するかを指示するユーザ入力が提供され得る。別の例において、アプリケーション回復エンジンは、修正されたアプリケーションの起動時にユーザがアプリケーションの挙動を動的に有効にする、無効にする、あるいは修正又はカスタムマイズすることを可能にする1以上のユーザ・インタフェース・コントロールをアプリケーションのオリジナル・バイナリに挿入することができる。例えば、ユーザの選択に基づいて、容認された挙動に対応するコードのオリジナル・セクションが、いくつかある例の中でもとりわけ、同一のコードの回復バージョンの代わりに使用され得る。効果的なことに、挙動が示されるコードのセグメントの各々が、ユーザ嗜好及び入力に基づいて、選択的にオフ又はオンにされ得る。さらに、ユーザ・インタフェースは、アプリケーション挙動の特定のサブセットの選択が存続し、アプリケーションがユーザのデバイス上で起動される次回に利用可能なように、アプリケーションの設定を保存するオプションをユーザに提供することができる。
【0041】
いくつかの実施例において、ユーザ・デバイス上で定義される使用モードを定義する、有効にする、及び使用するための機能が提供され得る。従来では、いくつかある例の中でもとりわけ、スマートフォン及びタブレット・コンピュータ等のユーザ・デバイスは、単一のユーザ及びアプリケーション・プロファイルをサポートするよう設計されている。しかしながら、単一のオペレーション・プロファイル及びモードは、デバイスの実際のユーザ又はデバイスが使用される状況の全てに対して適切ではない場合がある。例えば、ユーザは、短期間の間、ユーザのデバイスを友人に貸すことを望む場合があるが、デバイス上の影響を受けやすいアプリケーション及びデータ、電子メール・アプリケーション、連絡先、カレンダ、メッセージング機能等のうちのいくつかへのアクセスの制御をそれでも維持したいであろう。他の例において、ユーザは、例えば、ゲームをプレイするために子供が一時的にデバイスを使用することを許可することを望む場合があるが、他のアプリケーション(例えば、ウェブ・ブラウザ)並びに所定のデバイス設定及びデータへのアクセスを子供からブロックしたいと望むであろう。さらに、ユーザは、デバイス上のアプリケーションの何らかのサブセットの使用を、特定の時間、位置、及び状況に制御したいと望む場合がある。例えば、ゲーム及びソーシャル・ネットワーキング・アプリケーションは、いくつかある例の中でもとりわけ、学校の時間の間は無効にされることが望まれ得る。
【0042】
図14Aは、モード・マネージャの例示的な実施例の簡略化されたブロック
図1400aを示している。例えば、様々なモードが、ユーザ・デバイス及び外部サービスから収集されたインテリジェンスに基づいて定義され得る。ユーザは、ユーザ・インタフェースを介して1以上のモードを定義することができ、デバイス上のモード・マネージャは、例えば、モードの各々に割り当てられた、例えば、専用クレデンシャルを用いて、様々なモードへのアクセスを管理することができる。さらに、上述したように、アプリケーション・モニタリング・サービス又はアプリケーション挙動解析エンジンは、ユーザ・デバイス上で利用可能な隔離モード又は高セキュリティ・モードを特定のアプリケーションにレコメンドすることができる。したがって、ユーザは、そのようなモードを定義して、潜在的にリスクのあるアプリケーション又は現在解析されているアプリケーションへのアクセスを、いくつかある例の中でもとりわけ、管理者、大人、又は他の信頼できるユーザに制限することができる。
【0043】
図14Bは、アプリケーション・モード・マネージャの原理を示す別の簡略化されたブロック
図1400bを示している。アプリケーション・モード・マネージャ248は、いくつかの実施例において、いくつかある例の中でもとりわけ、モード設定マネージャ1405、ロック・サービス1410、ロック・マネージャ1415、クレデンシャル・マネージャ1420、アプリケーション・アクセス・マネージャ1425、アプリケーション保護サービス1430、パスワード・エンジン1435等の様々なモジュール及び機能を含み得る。例えば、例示する例において、管理特権を有するユーザは、パスワード又はPINを設定し、例えば、モード設定マネージャを用いて、ユーザにより定義されたモードにそのようなクレデンシャルを割り当てることができる。アクセス・マネージャは、クレデンシャル・マネージャを使用して、デバイスの現在のユーザがデバイスのために定義されたモードのセットのうちの1つにアクセスすることを可能にする有効なクレデンシャルが受信されたかどうかを検証することができる。正しくないクレデンシャルが入力された場合、ロック・マネージャは、ロック・サービスを呼び出して、ユーザを制限モードに割り当てることにより、あるいはユーザを完全にロック・アウトすることにより、現在のユーザを1以上のアプリケーションからロック・アウトすることができる。
【0044】
いくつかの実施例において、デバイス・モードは、除外リスト(exclusion list)又は包含リスト(inclusion list)から構成され得る。デバイス・モードは、使用が禁止されている、あるいは制限されているという点で、そのモードにおいて許可されている、あるいはいくらか保護されているアプリケーションのそれぞれのセットとして定義され得る。いくつかの例において、除外リストは、対応するモード下(すなわち、残っているアプリケーションが、そのモードで保護されている、あるいはロックされている)でアクセス可能な、デバイスのアプリケーション及び/又はサブシステムの特定のサブセットを示すモードのために定義され得る。例えば、モードは、例えば、<ModeName, Inclusion/Exclusion, Access PIN, App 1, App 2, App 3.....App N>に従って定義され得る。いくつかの例において、各デバイス・モードは、特定のパスワードで保護され得、特定のパスワードに関連付けられ得る。デバイスの機能及びアプリケーションの全てへのアクセスを許可するマスタ・モードが定義され得る。したがって、マスタ・モードへのアクセスを可能にするマスタ・パスワードが提供され得る。マスタ・モード内では、ユーザには、デバイスで利用可能な又はデバイスで定義されたモードのセットを管理するための管理コンソールへのアクセスが提供され得る。したがって、ユーザは、管理コンソールを介して、モードを編集又は定義することができるとともに、予め定義されたモードをアクティブ化又は削除することもできる。例示的な管理コンソールは、ユーザが、アプリケーションのリストから、ユーザが任意の所与のモードで保護されるものとして又はアクセス可能なものとして指定することを望むアプリケーションを選択することを可能にし得る。いくつかのケースでは、単一のアプリケーションが、複数の異なるモード下で、許可又は保護され得る。
【0045】
いくつかの実施例において、モード・パスワードは、暗号化されたメモリに記憶され得る。例えば、各モードのパスワードは、同じパスワードにより生成されたキーを用いて暗号化され得る。次いで、記憶された暗号化されたパスワードは、ユーザにより入力されたパスワードから生成されたキーを用いてパスワードを復号することにより、認証され得る。次いで、復号されたデータは、ユーザが入力したパスワードと比較され得る。ユーザにより提供されたパスワードに基づいて、ユーザによるモードへのアクセスを可能にするために、対応するモードが識別され認証され得る。いくつかの実施例において、例えば、アクティビティが長時間なかった後、ユーザが、デバイスを手動でロックする場合もあるし、デバイスが、自身でロックする場合もある。デバイスをアンロックする、あるいはデバイスをウェーク・アップすることを試みるとき、ユーザには、デバイスで利用可能なデバイスのために定義されたモードのうちの1つのパスワードを要求するログイン・プロンプトが、再度提示され得る。
【0046】
いくつかの実施例において、モードは階層的であり得る。例えば、より高いレベルのモード(すなわち、比較的高いレベルのアクセスを提供するモード)にログインしたユーザは、より低いレベルのモードのクレデンシャルを提供することなく、自由に別のモードに移動することができ得る。一方、より低いレベルのモードに対して認証されたユーザは、ユーザが以前に認証されたより低いレベルのモードよりも階層的に高いレベルの別のモードにアクセスすることを試みるとき、さらなるクレデンシャルを入力するよう強いられる。例えば、一例において、以下の4つのデバイス・モードが定義され得る:
モード1は管理者レベル・モードである;
モード2はゲスト・レベル・モードである;
モード3はゲスト・レベル・モードである;
モード4は低特権モードである
そして、階層は、いくつかある例示的な実施例の中でもとりわけ、モード1>モード2及びモード3>モード4であり、モード2はモード3と同じレベルであると定義される。
【0047】
いくつかの実施例において、所定のモードがアクティブであるとき、デバイスの構成が、変更され得る、カスタムマイズされ得る、あるいは少なくとも部分的に制限され得る。例えば、特定のモードは、GPS機能、データ・アクセス、電話機能、及び所定のアプリケーションをアクティブ化又は非アクティブ化し得る。さらに、いくつかの例において、モードにあるときに特定のアプリケーションのデータをセキュアにするデバイス・モードが提供され得る。例えば、新たなモードが作成され、アプリケーションのセットへの対応するアクセス・レベルを割り当てられると、それらのアプリケーションのデータは、別々の暗号化キーを介した暗号化により保護され得る。これは、例えば、いくつかある例の中でもとりわけ、ファイル及びフォルダを暗号化するための暗号化ファイル・システムを用いることにより実装され得る。
【0048】
いくつかの実施例において、アプリケーションの実行可能コードは、アプリケーションの挙動又は特徴のうちの1以上へのアクセス及び/又はアプリケーションの挙動又は特徴のうちの1以上の使用を許可しないモードにおいて使用されているアプリケーションに対して保護するために、セキュアにされ得る。例えば、一実施例において、アプリケーション実行可能コードは、暗号化されたセカンダリ・ストレージに記憶され得る。ユーザ・デバイスのアプリケーション・ローダは、いくつかの例において、いくつかある可能な実施例の中でもとりわけ、アプリケーションへのアクセスが試みられるアクティブ・デバイス・モードに関して、アプリケーションが許可されたアプリケーション・リスト内で発見される場合のみ、実行可能コードへの条件付き非暗号化アクセスを得ることができる。
【0049】
いくつかの例において、ユーザ・デバイスのための複数のデバイス・モードを定義することは、さらに、対応するモードの各々において提示される複数の一意なホーム・スクリーンの設定(provision)をもたらし得る。結果として、そのような実施例では、所与のホーム・スクリーンの出現は、デバイス上でアクティブであるモードをユーザに示し得るとともに、そのモードで利用可能なアクセス特権をユーザに示し得る。いくつかの例において、ホーム・スクリーンは、その対応するモード内で利用可能なアプリケーションのアイコンを含み得、いくつかある例の中でもとりわけ、そのモード内で保護される他のアプリケーションのアイコンを隠す、あるいは目立たなくする。
【0050】
さらに、いくつかの例において、デバイス・モードは、例えば、ユーザ・デバイス上で検出又はロードされるアプリケーションの識別された挙動及びセキュリティ・プロファイルに基づいて、自動的に作成され得る。例えば、モード・マネージャは、例えば、例示的なアプリケーション挙動解析エンジンにより実行された挙動解析を使用して、挙動の共通分類又はセキュリティ・プロファイルの分類を示すアプリケーションを識別することができる。例えば、オンライン・リソースへのアクセスを許可するものとして識別されたアプリケーションは、そのようなアクセスを許可するものとして定義された1以上のモードに動的にグループ化され割り当てられ得る。未成年ユーザに専用のモード等の他のモードは、いくつかある例の中でもとりわけ、ユーザがインターネットへアクセスすることを可能にするアプリケーションへのアクセスを拒否され得る。他の例示的な分類は、電話機能又はモバイル・メッセージング機能を可能にするアプリケーション、影響を受けやすいデータを使用し潜在的にプライベートな情報を収集するサブシステム(例えば、カメラ、ボイス・レコーダ、GPSシステム等)を使用するアプリケーション、及び他の例を含み得る。いくつかの実施例において、年齢レーティング(例えば、7+、12+、18+年齢等)等の、アプリケーションに関連するアンビエント・インテリジェンス、ユーザ・レビュー、又は他の情報を使用して、アプリケーションを分類し様々なモードにグループ化することができる。例えば、アプリケーションの説明は、年齢又は成熟度レーティングに加えて、成熟度レーティングの理由も含み得る。したがって、一例において、いくつかある例の中でもとりわけ、例えば、より高い成熟度レーティングを有するアプリケーションへの子供のユーザによるアクセスをブロックする1以上のモードが定義され得る。
【0051】
他のグローバル・インテリジェンス又は分散インテリジェンスを使用して、
図19の簡略化されたブロック
図1900に示されているもののような、所与のアプリケーションのための情報を作成することもできる。例えば、アプリケーション情報は、いくつかある例の中でもとりわけ、グローバル・スレット・インテリジェンス440、パブリッシャ/開発者評価情報1905、アプリケーション・ストア・フィードバック及びレビュー1910、挙動解析結果1915からの、アプリケーションの挙動に関するセキュリティ情報から構築され得る。そのような情報(例えば、440、1905、1910等)を、アプリケーションの挙動評価1915(例えば、アプリケーションが潜在的にデータをリークするかどうか、位置情報を提供するかどうか、SMSメッセージングを可能にするかどうか等)とともに使用して、所定のアプリケーションを、いくつかある例の中でもとりわけ、隔離モード又は管理者モード等の特定のデバイス・モードに割り当てることができる。ユーザは、さらに、いくつかある例の中でもとりわけ、1以上のモードに含めるために自由にアプリケーションを個別に選択するのではなく、それぞれのモードに対するアプリケーションの割り当てのための基礎として、カスタム分類又は挙動を指定することができる、あるいは予め定義された分類又は挙動を選択することができる。
【0052】
図15Aの例に移ると、特定のモードに関連付けられたパスワード情報を記憶するための例示的なアルゴリズムが示されている。
図15Bは、パスワードを検証し、入力されたパスワードに対応する、アクティブ化すべきモードを識別するための例示的なアルゴリズムを示している。
図15A〜
図15Bのアルゴリズムは、例示の目的で単に提示される非限定的な例であり、他の代替アルゴリズム及び実施例が他の例では使用され得ることを理解すべきである。
【0053】
図16の例に移ると、いくつかの実施例において、所与のユーザにより定義されたモードは、例えば、1以上のモードとともに、そのモードに関連付けられたルールを収集し他のユーザと共有することを可能にするアプリケーション管理サービス、クラウド・サービス、又は他のサービス(例えば、1600)に提供され得る。さらに、モード共有サービス1600により維持される共有デバイス・モードは、ユーザ・デバイス110、120へのダウンロード及びユーザ・デバイス110、120での使用のために閲覧及び選択され得、それにより、ユーザは、他のユーザにより作成されモード共有サービスを用いて共有されているモードを有するユーザのデバイスを設定することが可能となる。さらに、ユーザは、いくつかの例において、モード共有サービスから共有モードの定義をダウンロード及びインストールして、一意なパスワードをその新たにインストールされたモードに割り当てることにより、共有モードを設定することができる。さらに他の例において、モード構成は、デバイス間で直接的に共有され得、1つのデバイスは、例えば、Bluetooth(登録商標)、近距離通信(NFC)、WiFi(登録商標)、及びその他等の無線ピア・ツー・ピア技術を介して、モードを共有している別のデバイスから新たなモードを得ることができる。
【0054】
いくつかの実施例において、
図17の例に示されるように、モードは、例えば、デバイス自身により検出されたコンテキスト情報に基づいて、自動的にアクティブ化され得る。いくつかの例において、ユーザは、(例えば、管理コンソール上で)特定のモードを自動的にアクティブ化するためのルールを構成することができる。例えば、特定のモードは、ユーザ・デバイスにおける特定のコンテキストの検出に応答して、自動的にアクティブ化され得る。そのようなコンテキストは、多くの可能な例の中でもとりわけ、例えば、定められた地理的領域内でのデバイスの位置又は近接さを検出すること、デバイスが他のデバイスの近くに存在するのを検出すること、特定のデータ・ネットワークの範囲内のデバイスを検出すること、(例えば、デバイスにより収集されたユーザ生体情報に基づいて)デバイスのユーザを検出すること、検出された時刻、デバイス・バッテリ・ステータス、使用アクティビティ(例えば、デバイス上で非常に多くの時間を費やすユーザから守るため等)、デバイスが移動中である、すなわち、動いている最中であるかどうか(例えば、GPS機能、加速度計、又はデバイス上の他の機能を介して検出される)を含み得る。
【0055】
次に
図18の例に移ると、いくつかの実施例において、モードは、ユーザがリモートでモードをアクティブ化/非アクティブ化又は定義することを可能にするクラウド・サービス等のリモート・サービスを介して、設定及び構成され得る。そのようなサービスを用いると、ユーザは、リモートで(例えば、ターゲット・モバイル・ユーザ・デバイスではないコンピュータを用いて)モードを作成することができ、ターゲット・ユーザ・デバイスに1以上のモードを設定することができ、また、リモート位置からユーザ・デバイス上のモードをアクティブ化及び非アクティブ化することができる。さらに、管理者は、そのサービスを使用して、モバイル・ユーザ・デバイス上にそのようなモードを設定することができるとともに、いくつかある例の中でもとりわけ、所与のモードを自動的にアクティブ化、適用、又は非アクティブ化するためのルール及びコンテキストを定義することができる。
【0056】
図20A〜
図20Dは、モバイル・ユーザ・デバイス上でのモード管理のいくつかの例示的な実施例の特定の特徴を示すユーザ・インタフェースの例示的なスクリーンショットを示している。例えば、
図20Aのスクリーンショットは、新たなモード及びモード・パスワードを定義するためのユーザ・インタフェースを示している。ユーザがデバイス上の複数の利用可能なモードのうち1つのモードを選択してアクティブ化することを可能にする、且つ/あるいはユーザが選択されたモードのためのクレデンシャルを提供することを可能にする同様のユーザ・インタフェースが提供され得る。いくつかの実施例において、ユーザ・デバイスは、ネイティブ・ログイン・クレデンシャル又はネイティブ・ログイン・マネージャを含み得る。モード・マネージャは、ネイティブ・ログイン・マネージャをオーバライドして、ネイティブ・ログイン・スクリーンをモード固有のログイン・プロンプト(例えば、ユーザ・デバイスの複数モード機能を可能にする)で置換するアプリケーション自体として実装され得る。いくつかの例において、ユーザは、複数のモードを有するユーザ・デバイスが設定されることに視覚的に気付かない場合がある。ここで、ログイン・スクリーンは、複数の異なるログイン・コードのうちの1つを受け入れることができ、各ログイン・コードは、ユーザ・デバイス上で設定される(隠されたモードを含む)サポートされるモードに対応する。
【0057】
図20Bのスクリーンショットは、特定のモードのホーム・スクリーンのビューを示している。この例に示されるように、クレデンシャルを提供し、(例えば、制限されたアプリケーションのアクセスを許可する)より高いレベルのモードをアクティブ化することによってのみアクセスされ得る制限されたアプリケーションのセットが指定され得る。さらに、My Appsフォルダは、現在のアクティブ・モードにおいて有効にされているアプリケーションへのアクセスを提供し得る。
図20Cのスクリーンショットは、ユーザが新たなモードをアクティブ化、編集、又は作成することを可能にする例示的な管理スクリーンの別のビューを提供する。さらに、
図20Dの例示的なスクリーンショットは、モード・マネージャのいくつかの実施例において提供され得る、例えば、ユーザが、アプリケーションのリストから、どのアプリケーションが所与のモードに含まれるべきであるか、あるいは所与のモードにおいて保護されるべきであるかをデバイス上で指定することを可能にするユーザ・インタフェースを示している。前述の例は、所定の原理を例示する目的で単に提供されたに過ぎないことを理解すべきであり、限定的な例として解釈すべきではない。実際、様々な異なる実装、ユーザ・インタフェース、プログラム・アーキテクチャ、オペレーティング・システム、SDKプラットフォーム、及び方法シーケンスが、本明細書で例示及び説明した一般的原理から逸脱することなく、上述した例の代わりに使用されてもよい。
【0058】
図21A〜
図21Cは、モバイル・ユーザ・コンピューティング・デバイス上でのアプリケーションの管理における例示的な技術を示すフローチャート2100a〜2100cである。例えば、
図21Aの例において、特定のアプリケーションのコードが、例えば、プラットフォームSDKの表現及び/又はAPI等のプラットフォームのセマンティック表現に対して解析され得る(2105)。特定のアプリケーションの挙動のセットが識別され得る(2110)。挙動のセットのうちの少なくとも1つの望ましくない挙動が、例えば、識別された挙動のセットのうちの1つのユーザ選択に基づいて、又は、特定のモバイル・コンピューティング・デバイスにダウンロードされるアプリケーション、インストールされるアプリケーション、起動されるアプリケーション、あるいは使用されるアプリケーションのための(ユーザ又は管理者により)定義されたルール及び/又はポリシに従って自動的に、識別され得る(2115)。
【0059】
図21Bの例において、(例えば、
図21Aの例の原理に従って)挙動が識別され得(2120)、特定のアプリケーションの挙動のセットが検出され得る。次いで、識別された挙動に対応する特定のアプリケーションのコードのセクションが識別され得る(2125)。例えば、識別された挙動が望ましくない挙動である等といった識別に応答して、挙動を自動的に修正するために、識別されたコードのセクションに対して修正アクションが実行され得る(2130)。修正アクションは、特定のアプリケーションの「回復」バージョンの動的な生成をもたらし得る。特定のアプリケーションの「回復」バージョンは、オリジナルの機能の少なくとも一部分を維持し、望ましくない機能がブロックされる、あるいは回復バージョンから除去される。
【0060】
図21Cの例において、複数のモードのうちの特定のモードがアクティブ化され得る(2140)。複数のモードは、特定のユーザ・コンピューティング・デバイスのために定義され得、複数のモードにおけるそれぞれのモードにアクセスするためのクレデンシャルを有する特定のユーザに対してどのようなコンピューティング・デバイスの機能のサブセット及びそのソフトウェアがアクセス可能になり得るかを指示し得る。特定のモードのアクティブ化(2140)に従って、ユーザ・コンピューティング・デバイスにインストールされた1以上のアプリケーションへのアクセスが制限され得る(2145)。さらに、いくつかの実施例において、特定のモードのアクティブ化は、適用されるコンピューティング・デバイスの制限された構成又は代替構成をもたらし得る。これにより、いくつかある例の中でもとりわけ、ハードウェア機能、並びにユーザ・コンピューティング・デバイスの設定及びデータを含む1以上のサブシステム及び機能へのユーザのアクセスを制限する。
【0061】
本開示は、所定の実施例及び概ね関連する方法の観点で説明されたが、そのような実施例及び方法の変更及び入れ替えは、当業者に明らかであろう。例えば、本明細書で説明した動作は、説明したものと異なる順序で実行されてよく、それでも所望の結果を達成することができる。一例として、添付の図面に示されるプロセスは、所望の結果を達成するのに、必ずしも、示される特定の順序又は連続した順序を必要としない。所定の実施例では、マルチタスク化及び並行処理が有利である場合がある。さらに、多様なユーザ・インタフェース・レイアウト及び機能がサポートされ得る。他の変形例も添付の特許請求の範囲の範囲内にある。
【0062】
本明細書で説明した主題及びオペレーションの実施形態は、デジタル電子回路、又はコンピュータ・ソフトウェア、ファームウェア、若しくはハードウェアにより実装され得、これには、本明細書で開示した構造、その構造的均等物、又はそれらのうちの1以上の組合せが含まれる。本明細書で説明した主題の実施形態は、1以上のコンピュータ・プログラム、すなわち、コンピュータ・プログラム命令の1以上のモジュールとして実装され得、データ処理装置により実行される、あるいはデータ処理装置のオペレーションを制御するようコンピュータ記憶媒体において符号化され得る。代替的に又は追加的に、プログラム命令は、人工的に生成される伝播信号、例えば、データ処理装置により実行されるよう適切な受信機装置に送信する情報を符号化するように生成された、マシンにより生成された電気信号、光信号、又は電磁信号において符号化することができる。コンピュータ記憶媒体は、コンピュータ読み取り可能記憶デバイス、コンピュータ読み取り可能記憶基板、ランダム若しくはシリアル・アクセス・メモリ・アレイ若しくはデバイス、又はそれらのうちの1以上の組合せとすることができる、あるいはそれらに含まれ得る。さらに、コンピュータ記憶媒体は、それ自体が伝播信号ではないが、人工的に生成された伝播信号において符号化されたコンピュータ・プログラム命令のソース又は宛先となり得る。コンピュータ記憶媒体はまた、分散ソフトウェア環境又はクラウド・コンピューティング環境を含む、1以上の別個の物理コンポーネント若しくは媒体(例えば、複数のCD、ディスク、又は他の記憶デバイス)とすることもできる、あるいはそれらに含まれ得る。
【0063】
コア・ネットワーク及び無線アクセス・ネットワークを含むアクセス・ネットワークを含むネットワークは、1以上のネットワーク・エレメントを含み得る。「ネットワーク・エレメント」は、様々なタイプのルータ、スイッチ、ゲートウェイ、ブリッジ、ロード・バランサ、ファイヤ・ウォール、サーバ、インライン・サービス・ノード、プロキシ、プロセッサ、モジュール、又は、ネットワーク環境において情報を交換するよう動作可能な任意の他の適切なデバイス、コンポーネント、エレメント、若しくはオブジェクトを含み得る。ネットワーク・エレメントは、本明細書で概説したスクリーン管理機能のためのプロセッサを用いることに関連付けられたアクティビティをサポート(又は、実行)する適切なプロセッサ、メモリ・エレメント、ハードウェア、及び/又はソフトウェアを含み得る。さらに、ネットワーク・エレメントは、そのオペレーションを円滑にする任意の適切なコンポーネント、モジュール、インタフェース、又はオブジェクトを含み得る。これは、データ又は情報の効果的な交換を可能にする適切なアルゴリズム及び通信プロトコルを含み得る。
【0064】
本明細書で説明したオペレーションは、1以上のコンピュータ読み取り可能記憶デバイスに記憶された、あるいは他のソースから受信されたデータに対するデータ処理装置により実行されるオペレーションとして実施され得る。「データ処理装置」、「プロセッサ」、「処理デバイス」、及び「コンピューティング・デバイス」という用語は、データを処理するための全ての種類の装置、デバイス、及びマシンを含み得、これには、例として、プログラマブル・プロセッサ、コンピュータ、システム・オン・チップ、又は上記のうちの複数のもの若しくはそれらの組合せが含まれる。装置は、いくつかある適切なオプションの中でも、汎用論理回路又は専用論理回路、例えば、中央処理装置(CPU)、ブレード、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)を含み得る。いくつかのプロセッサ及びコンピューティング・デバイスが、単一のプロセッサとして説明及び/又は例示されたが、関連するサーバの特定の必要性に応じて、複数のプロセッサが使用されてもよい。単一のプロセッサへの言及は、適宜、複数のプロセッサを含むことを意味する。一般に、プロセッサは、命令を実行し、データを操作して、所定のオペレーションを実行する。装置はまた、ハードウェアに加えて、当該のコンピュータ・プログラムの実行環境を作成するコード、例えば、プロセッサ・ファームウェア、プロトコル・スタック、データベース管理システム、オペレーティング・システム、クロス・プラットフォーム・ランタイム環境、仮想マシン、又はそれらのうちの1以上の組合せを構成するコードも含み得る。装置及び実行環境は、ウェブ・サービス、分散コンピューティング・インフラストラクチャ及びグリッド・コンピューティング・インフラストラクチャ等の様々な異なるコンピューティング・モデル・インフラストラクチャを実現することができる。
【0065】
コンピュータ・プログラム(プログラム、ソフトウェア、ソフトウェア・アプリケーション、スクリプト、モジュール、(ソフトウェア・)ツール、(ソフトウェア・)エンジン、又はコードとしても知られる)は、コンパイラ型言語又はインタプリタ型言語、宣言型言語又は手続き型言語を含む任意の形態のプログラミング言語で書くことができ、スタンドアローン・プログラムとして、又はモジュール、コンポーネント、サブルーチン、オブジェクト、若しくはコンピューティング環境において用いるのに適した他のユニットとして配備することを含む任意の形で配備することができる。例えば、コンピュータ・プログラムは、実行されると、少なくとも本明細書で説明したプロセス及びオペレーションを実行するよう動作可能な、有体の媒体上のコンピュータ読み取り可能命令、ファームウェア、有線の若しくはプログラムされたハードウェア、又はそれらの任意の組合せを含み得る。コンピュータ・プログラムは、ファイル・システム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラム又はデータ(例えば、マークアップ言語文書に記憶される1以上のスクリプト)を保持するファイルの一部分に、若しくは当該プログラムに専用の単一のファイルに、又は複数の連携ファイル(例えば、1以上のモジュール、サブプログラム、又はコード部分を記憶するファイル)に記憶され得る。コンピュータ・プログラムは、1つのコンピュータ、又は1つのサイトに位置するあるいは複数のサイトにわたって分散され、通信ネットワークにより相互接続された複数のコンピュータ上で実行されるよう配備され得る。
【0066】
プログラムは、様々なオブジェクト、メソッド、若しくは他のプロセスを介して様々な特徴及び機能を実装する個々のモジュールとして実施され得る、あるいは、その代わりに、適宜、複数のサブモジュール、サード・パーティ・サービス、コンポーネント、ライブラリ等を含み得る。逆に、様々なコンポーネントの特徴及び機能は、適宜、単一のコンポーネントに結合され得る。所定のケースでは、プログラム及びソフトウェア・システムは、複合的なホストされるアプリケーションとして実装され得る。例えば、複合アプリケーションの一部分は、エンタプライズJava(登録商標) Bean(EJB)として実装され得る、あるいは、設計時間コンポーネントが、とりわけ、J2EE(Java(登録商標)2プラットフォーム・エンタプライズ・エディション)、ABAP(発展型ビジネス・アプリケーション・プログラミング)オブジェクト、又はマイクロソフト(登録商標)の.NET等の様々なプラットフォーム内にランタイム実装を生成する機能を有し得る。さらに、アプリケーションは、ネットワークを介して(例えば、インターネットを介して)アクセス及び実行されるウェブベースのアプリケーションを表し得る。さらに、特定のホストされるアプリケーション又はサービスに関連付けられる1以上のプロセスは、リモートで記憶、参照、又は実行され得る。例えば、特定のホストされるアプリケーション又はサービスの一部は、リモートでコールされたアプリケーションに関連付けられたウェブ・サービスであり得るのに対し、ホストされるアプリケーションの別の部分は、リモート・クライアントで処理するようにまとめられたインタフェース・オブジェクト又はエージェントであり得る。さらに、本開示の範囲から逸脱することなく、ホストされるアプリケーション及びソフトウェア・サービスのうちの任意のもの又は全てが、別のソフトウェア・モジュール又はエンタプライズ・アプリケーション(図示せず)の子モジュール又はサブモジュールであり得る。また、さらに、ホストされるアプリケーションの一部分は、機能しているユーザにより、アプリケーションをホストしているサーバにおいて直接、及びクライアントにおいてリモートで実行され得る。
【0067】
本明細書で説明したプロセス及び論理フローは、入力データに対し動作して出力を生成することにより動作を実行するよう1以上のコンピュータ・プログラムを実行する1以上のプログラマブル・プロセッサにより実行され得る。プロセス及び論理フローはまた、専用論理回路、例えば、FPGA(フィールド・プログラマブル・ゲート・アレイ)又はASIC(特定用途向け集積回路)により実行され得、装置はまた、この専用論理回路として実装され得る。
【0068】
コンピュータ・プログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ及び専用マイクロプロセッサの双方、並びに任意の種類のデジタル・コンピュータの任意の1以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ若しくはランダム・アクセス・メモリ又はその双方から命令及びデータを受信する。コンピュータの重要なエレメントは、命令に従って動作を実行するプロセッサと、命令及びデータを記憶する1以上のメモリ・デバイスとである。一般に、コンピュータはまた、データを記憶する1以上の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、若しくは光ディスクを含む、あるいはそれらからデータを受信する若しくはそれらにデータを伝送する若しくは双方を行うようにそれらに動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、いくつか例を挙げると、携帯電話機、携帯情報端末(PDA)、タブレット・コンピュータ、モバイル・オーディオ若しくはビデオ・プレーヤ、ゲーム・コンソール、グローバル・ポジショニング・システム(GPS)受信機、又はポータブル記憶デバイス(例えば、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ)に組み込まれ得る。コンピュータ・プログラム命令及びデータを記憶するのに適したデバイスは、例として、半導体メモリ・デバイス、例えば、EPROM、EEPROM、及びフラッシュ・メモリ・デバイス;磁気ディスク、例えば、内部ハードディスク又は取り外し可能なディスク;光磁気ディスク;並びにCD ROM及びDVD−ROMディスクを含む、全ての形態の不揮発性メモリ、媒体、及びメモリ・デバイスを含む。プロセッサ及びメモリは、専用論理回路により補われ得る、あるいは専用論理回路に組み込まれ得る。
【0069】
ユーザとのインタラクションを提供するために、本明細書で説明した主題の実施形態は、情報をユーザに表示するディスプレイ・デバイス、例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができるキーボード及びポインティング・デバイス、例えば、マウス又はトラックボールとを有するコンピュータ上で実施され得る。ユーザとのインタラクションを提供する他の種類のデバイスが使用されてもよい。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、又は触覚入力を含む任意の形態で受信され得る。さらに、コンピュータは、ユーザにより使用されるリモート・デバイスを含むデバイスに文書を送信しデバイスから文書を受信することにより、ユーザとインタラクトすることができる。
【0070】
本明細書で説明した主題の実施形態は、コンピューティング・システムにおいて実施され得、このコンピューティング・システムは、例えば、データ・サーバとしてバック・エンド・コンポーネントを含む、あるいはミドルウェア・コンポーネント、例えば、アプリケーション・サーバを含む、あるいはフロント・エンド・コンポーネント、例えば、ユーザが本明細書で説明した主題の実施例とインタラクトすることができるグラフィカル・ユーザ・インタフェース若しくはウェブ・ブラウザを有するクライアント・コンピュータを含む、あるいはそのようなバック・エンド・コンポーネント、ミドルウェア・コンポーネント、若しくはフロント・エンド・コンポーネントの任意の組合せを含む。システムのコンポーネントは、任意の形態又は媒体のデジタル・データ通信、例えば、通信ネットワークにより相互接続され得る。通信ネットワークの例として、システム内の様々なコンピューティング・コンポーネント間の通信を円滑にするよう動作可能な、任意の内部ネットワーク若しくは外部ネットワーク、ネットワーク、サブネットワーク、又はそれらの組合せがある。ネットワークは、例えば、インターネット・プロトコル(IP)パケット、フレーム・リレー・フレーム、非同期転送モード(ATM)セル、音声、ビデオ、データ、及び他の適切な情報を、ネットワーク・アドレス間で通信することができる。ネットワークはまた、1以上のローカル・エリア・ネットワーク(LAN)、無線アクセス・ネットワーク(RAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネットの全て又は一部分、ピア・ツー・ピア・ネットワーク(例えば、アド・ホック・ピア・ツー・ピア・ネットワーク)、及び/又は1以上のロケーションにおける任意の他の1以上の通信システムを含み得る。
【0071】
コンピューティング・システムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般に互いからリモートにあり、通常、通信ネットワークを介してインタラクトする。クライアント及びサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータ・プログラムにより生じる。いくつかの実施形態では、サーバが、データ(例えば、HTMLページ)を、クライアント・デバイスに(例えば、クライアント・デバイスとインタラクトしているユーザにデータを表示し、そのユーザからユーザ入力を受け取る目的で)送信する。クライアント・デバイスにおいて生成されるデータ(例えば、ユーザ・インタラクションの結果)は、サーバにおいてクライアント・デバイスから受信され得る。
【0072】
本明細書は、多くの特定の実施例の詳細を含むが、これらは、いかなる発明の範囲も、又は特許請求され得るものの範囲も限定するものとして解釈されるべきでなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態のコンテキストで本明細書において説明した所定の特徴は、組み合せて単一の実施形態において実施され得る。逆に、単一の実施形態のコンテキストで説明した様々な特徴も、複数の実施形態において別個に、又は任意の適切な下位組合せで実施され得る。さらに、特徴が、所定の組合せで機能するものとして上記で説明された場合があり、そのように最初に特許請求される場合さえあるが、特許請求される組合せからの1以上の特徴は、場合によっては、その組合せから削除され得、特許請求される組合せは、下位組合せ又は下位組合せの変形を対象とし得る。
【0073】
以下の例は、本明細書に従った実施形態に関する。1以上の実施形態は、特定のプラットフォームのソフトウェア開発キットのセマンティック・モデルに対して特定のアプリケーションのコードを解析し、コードの解析に基づいて、特定のアプリケーションの挙動のセットを識別し、挙動のセットのうちの1以上の挙動が望ましくない挙動であると識別する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。セマンティック・モデルは、潜在的なアプリケーション挙動を、特定のプラットフォームのAPIのうちの1以上のAPIに関連付け得る。
【0074】
一例において、挙動のセットのうちの1以上の挙動が望ましくない挙動であると識別することは、1以上の挙動が1以上のルールに違反すると判定することを含む。ルールは、特定のユーザに関連付けられ得る。
【0075】
一例において、ユーザ入力は、挙動のセットのうちの1以上の挙動を望ましくないものとして識別する。ユーザ入力は、識別された挙動のセットの人間が読み取り可能な説明を表示するユーザ・インタフェースに関して受信され得る。
【0076】
一例において、特定のアプリケーションのコードは、制御フローに逆アセンブルされ得、特定のアプリケーションに関するアプリケーション・ロジックのモデルが、セマンティック・モデルに少なくとも部分的に基づいて生成され得る。アプリケーション・ロジックのモデルは、さらに、アンビエント・アプリケーション・ナレッジに少なくとも部分的に基づき得る。
【0077】
一例において、挙動のセットのうちの1以上の挙動が望ましくない挙動であるという識別に基づいて、修正アクションが実行され得る。
【0078】
一例において、特定のアプリケーションのコードは、特定のアプリケーションを特定のユーザ・デバイス上で実施する試みに関して解析される。
【0079】
1以上の実施形態は、特定のアプリケーションに含まれるとして検出された挙動のセットのうちの特定の挙動を識別し、特定の挙動に対応する特定のアプリケーションのコードのセクションを識別し、特定の挙動を修正し特定のアプリケーションの回復バージョンを生成するために、コードのセクションに対して修正アクションを実行する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。
【0080】
一例において、修正アクションは、特定の挙動以外の特定のアプリケーションの他の挙動を維持する。
【0081】
一例において、修正アクションは、コードのセクションを削除することを含む。
【0082】
一例において、修正アクションは、コードのセクションを書き換えることを含む。
【0083】
一例において、修正アクションは、特定の挙動を無効にするために、追加のコードをアプリケーションに追加することを含む。
【0084】
一例において、修正アクションは、特定の挙動を修正することに適用可能であると判定された修正パターンを識別するポリシから識別される。
【0085】
一例において、修正アクションは、ユーザ・デバイス上での回復されたアプリケーションの起動時にユーザが特定の挙動の回復バージョンを選択的に有効にすることを可能にするアプリケーション・ロジックを挿入することを含む。ユーザは、さらに、回復バージョンの代わりに特定の挙動の未回復バージョンを選択的に有効にすることを可能にされる。
【0086】
一例において、特定のアプリケーションの挙動のセットは、特定のアプリケーションのコードの解析を介して検出され得る。
【0087】
一例において、修正アクションは、ユーザ・リクエストによりトリガされる。
【0088】
1以上の実施形態は、特定のユーザ・デバイスのために定義された複数のモードのうちの特定のモードをアクティブ化し、アクティブ化した特定のモードに従って、特定のユーザ・デバイスにインストールされた1以上のアプリケーションへのアクセスを制限する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。制限された1以上のアプリケーションは、複数のモードのうちの別のモードがアクティブ化されたとき、アクセス可能になる。
【0089】
一例において、特定のモードは、特定のユーザ・デバイスのユーザにより入力された特定のパスコードに応答してアクティブ化され、複数のモードの各々は、対応するパスコードに関連付けられる。特定のモードのアクティブ化は、特定のパスコードの入力に基づいて、複数のモードから特定のモードを識別することと、特定のパスコードの入力に基づいて、特定のモードへのアクセスを認証することと、を含み得る。
【0090】
一例において、複数のモードのうちの1以上のモードは、ユーザにより定義されたモードである。
【0091】
一例において、代替デバイス構成が、特定のモードのアクティブ化に基づいて、特定のユーザ・デバイスに適用され得る。代替デバイス構成は、特定のユーザ・デバイスの1以上のサブシステムへのアクセスを制限し得る。
【0092】
一例において、複数のモードのうちの1つのモードは、複数のモードの修正を可能にする管理者モードである。
【0093】
一例において、複数のモードのうちの少なくとも1つのモードは、特定のユーザ・デバイスからリモートにあるモード共有サービスからダウンロード可能なモードのインスタンスである。
【0094】
一例において、特定のモードは、特定のユーザ・デバイスの機能を用いた特定のコンテキストの検出に少なくとも部分的に基づいて、自動的にアクティブ化される。
【0095】
一例において、アプリケーションのうちの少なくとも1つの特定のアプリケーションは、特定のモードのために定義されたルールに基づいて制限される。
【0096】
一例において、定義されたルールは、特定のアプリケーションの検出された挙動に関連する。
【0097】
一例において、複数のモードは、挙動解析又は修正を待っているアプリケーションのための隔離モードとして指定されたモードを含む。
【0098】
一例において、特定のモードは、特定のユーザ・デバイスからリモートにあるデバイスにおいて受信されたユーザ・コマンドに応答してアクティブ化される。
【0099】
同様に、オペレーションは、図面において特定の順序で示されるが、これは、所望の結果を達成するために、そのようなオペレーションが示される特定の順序又は連続した順序で実行されること、又は全ての示されるオペレーションが実行されることを要するものとして理解すべきではない。所定の環境では、マルチタスク化及び並行処理が有利である場合がある。さらに、上述した実施形態における様々なシステム・コンポーネントの分離は、そのような分離を全ての実施形態において必要とすると理解すべきでなく、説明したプログラム・コンポーネント及びシステムは、一般に、単一のソフトウェア製品に一緒に統合されてもよいし、複数のソフトウェア製品にパッケージ化されてもよいことを理解すべきである。
【0100】
このように、主題の特定の実施形態が説明された。他の実施形態も添付の特許請求の範囲の範囲内にある。場合によっては、請求項において記載される動作は、異なる順序で実行されてもよく、それでも所望の結果を達成することができる。さらに、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも、示される特定の順序又は連続した順序を必要としない。