(57)【要約】  コンピューティングデバイスにおいてデータフローを追跡するための方法およびデバイスは、汚染されたメモリアドレスから情報を読み取る読取り動作を特定するために、コンピューティングデバイスのハードウェア構成要素内のメモリを監視するステップと、特定された読取り動作の後に実行された第1の動作の数、第2の動作の数、および第3の動作の数を特定するためにヒューリスティックを使用するステップと、第1の動作の数の後かつ第2の動作の数の前に実行された書込み動作のメモリアドレスを汚染されたものとしてマークするステップと、第3の動作の数の後かつ第2の動作の数の前に実行された書込み動作のメモリアドレスを汚染されていないものとしてマークするステップとを含む。
2018507472.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいてデータフローを追跡する方法であって、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む方法。
【請求項２】
前記第1の動作の数、前記第2の動作の数および前記第3の動作の数を特定するためにヒューリスティックを使用するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、
前記第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む、請求項6に記載の方法。
【請求項８】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含む、請求項7に記載の方法。
【請求項９】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションと前記第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含む、請求項7に記載の方法。
【請求項１０】
コンピューティングデバイスのプロセッサに、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1の動作の数、前記第2の動作の数および前記第3の動作の数を特定するためにヒューリスティックを使用するステップをさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップと
をさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行させるように構成される、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、
前記第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む動作を実行させるように構成される、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行させるように構成される、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションと前記第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
コンピューティングデバイスであって、
動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを備え、前記動作が、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む、コンピューティングデバイス。
【請求項２０】
前記プロセッサが、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと、
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成される、請求項19に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
セルラー通信技術およびワイヤレス通信技術は、過去数年の間に爆発的な成長をとげている。この成長は、より優れた通信、ハードウェア、より大きいネットワーク、およびより信頼できるプロトコルによって加速されている。ワイヤレスサービスプロバイダは現在、拡大し続ける多数の特徴およびサービスを顧客に提供し、情報、リソースおよび通信への、前例のないレベルのアクセスをユーザに提供することができる。これらのサービス向上と歩調を合わせて、モバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は、これまでよりも強力かつ複雑になってきている。この複雑さは、悪意のあるソフトウェア、ソフトウェアの競合、ハードウェアの欠陥、および他の同様のエラーまたは現象が、モバイルデバイスの長期的かつ継続的な性能および電力利用レベルに悪影響を与える新たな機会を生み出した。したがって、モバイルデバイスの長期的かつ継続的な性能および電力利用レベルに悪影響を与える可能性がある条件および/またはモバイルデバイス挙動を特定し修正することは、消費者に対して有益である。
【発明の概要】
【課題を解決するための手段】
【０００２】
様々な態様は、コンピューティングデバイスにおいてデータフローを追跡する方法を含み、方法は、汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、M個の動作が実行されること、および汚染されていないアドレスへのN個の書込み動作が特定されることのうちの1つが行われるまで、動作を監視するステップと、特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップとを含み得る。
【０００３】
一態様では、方法は、第1(O)の動作の数、第2(M)の動作の数および第3(N)の動作の数を特定するためにヒューリスティックを使用するステップを含み得る。さらなる態様では、方法は、汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップとを含み得る。さらなる態様では、方法は、汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップとを含み得る。
【０００４】
さらなる態様では、方法は、監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、挙動ベースの分析結果を生成するために、挙動ベクトル情報構造を分類器モデルに適用するステップと、第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、挙動ベースの分析結果を使用するステップとを含み得る。さらなる態様では、方法は、汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップとを含み得る。
【０００５】
さらなる態様では、方法は、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、挙動ベースの分析結果を生成するために、挙動ベクトル情報構造を分類器モデルに適用するステップと、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、挙動ベースの分析結果を使用するステップとを含み得る。さらなる態様では、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップは、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含み得る。さらなる態様では、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップは、第1のソフトウェアアプリケーションと第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含み得る。
【０００６】
さらなる態様は、コンピューティングデバイスのプロセッサに、汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、M個の動作が実行されること、および汚染されていないアドレスへのN個の書込み動作が特定されることのうちの1つが行われるまで、動作を監視するステップと、特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップとを含む動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体を含み得る。
【０００７】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作の数、第2の動作の数および第3の動作の数を特定するためにヒューリスティックを使用するステップをさらに含む動作を実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップとをさらに含む動作を実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップとをさらに含む動作を実行させるように構成され得る。
【０００８】
さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、挙動ベースの分析結果を生成するために、挙動ベクトル情報構造を分類器モデルに適用するステップと、第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、挙動ベースの分析結果を使用するステップとをさらに含む動作を実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップとをさらに含む動作を実行させるように構成され得る。
【０００９】
さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、挙動ベースの分析結果を生成するために、挙動ベクトル情報構造を分類器モデルに適用するステップと、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、挙動ベースの分析結果を使用するステップとをさらに含む動作を実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップが、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成され得る。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1のソフトウェアアプリケーションおよび第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップが、第1のソフトウェアアプリケーションと第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成され得る。
【００１０】
さらなる態様は、動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを含むコンピューティングデバイスを含み、動作は、汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)と、第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)と、第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)とを決定するステップと、M個の動作が実行されること、および汚染されていないアドレスへのN個の書込み動作が特定されることのうちの1つが行われるまで、動作を監視するステップと、特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップとを含み得る。
【００１１】
一態様では、プロセッサは、汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと、監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、挙動ベースの分析結果を生成するために、挙動ベクトル情報構造を分類器モデルに適用するステップと、第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、挙動ベースの分析結果を使用するステップとをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され得る。
【００１２】
さらなる態様は、上記で説明した方法動作の機能を実行するための様々な手段を有するコンピューティングデバイスを含む。
【００１３】
本明細書に組み込まれ、本明細書の一部を構成している添付の図面は、本発明の例示的な態様を示すものであり、上で与えられた全般的な説明および下で与えられる詳細な説明とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１４】
【図１】様々な態様を実装するのに適した、例示的なシステムオンチップのアーキテクチャ図である。
【図２】一態様による、データフローを追跡するように構成された一態様のモバイルデバイスにおける例示的な論理構成要素および情報フローを示すブロック図である。
【図３】一態様による、汚染されたものまたは汚染されていないものとしてコンピューティングデバイスによってマークされ得る例示的なメモリアドレスの図である。
【図４】一態様による、データフローを追跡する方法を示すプロセスフロー図である。
【図５】一態様による、データフローを追跡する方法を示すプロセスフロー図である。
【図６】別の態様による、データフローを追跡する方法を示すプロセスフロー図である。
【図７】様々な態様とともに使用するのに適した、例示的なモバイルデバイスの図である。
【発明を実施するための形態】
【００１５】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。特定の例および実装形態への言及は説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１６】
概して、様々な態様は、ヒューリスティックおよび機械学習技法を使用して、データを不正に使用している(たとえば、アドレス帳データを読み取り、アドレス帳データをサーバに送っている)ソフトウェアアプリケーションおよび/または他の点で非良性である(たとえば、悪意がある、不適切に書かれた、デバイスとの互換性がない、など)ソフトウェアアプリケーションを迅速におよび効率的に特定するためにモバイルデバイスおよびリソース制約のあるコンピューティングデバイスが使用するのに適した効率的なデータ追跡ソリューションを提供する方法を含む。
【００１７】
一態様では、コンピューティングデバイスは、綿密な監視が与えられるべきメモリアドレスを特定するか、またはコンピューティングデバイスがそのメモリアドレスを選択することを可能にする情報で事前構成され得る。コンピューティングデバイスは、選択されたメモリアドレスを(たとえば、そのメモリアドレスを汚染リストに追加することによって)「汚染された」ものとしてマークし、汚染されたメモリアドレス(すなわち、汚染されたものとしてマークされたメモリアドレス)から情報を読み取るソフトウェアアプリケーションを特定するためにコンピューティングデバイスにおける挙動、アクティビティ、または動作を監視し、特定されたソフトウェアアプリケーションを綿密な監視または追加の精査を必要とするものとして分類し、汚染されたものとしてマークされるべき追加のメモリアドレスを特定するためにおよび/または「汚染されていない」はずである(たとえば、汚染リストから削除される、もはや綿密な監視を必要としないものとしてマークされる、など)汚染されたメモリアドレスを特定するために汚染伝播ヒューリスティックを適用するように構成され得る。次いで、コンピューティングデバイスは、綿密な監視または追加の精査を必要とする追加のソフトウェアアプリケーションを特定するために、汚染されたメモリアドレスを監視し得る。一態様では、汚染されたアドレスアクセス(たとえば、汚染されたメモリに情報を書き込むかまたは汚染されたメモリから情報を読み取る動作など)に続くメモリアクセス動作の監視は、設定されたまたは構成可能な動作の数についてハードウェアモジュールにおいて実行され得る。これらの動作は、デバイスの性能または電力消費特性に著しい悪影響を与えることなしに非良性ソフトウェアアプリケーションを特定するために、コンピューティングデバイスにおいて繰り返しまたは継続的に実行され得る。
【００１８】
一態様では、コンピューティングデバイスは、汚染されたメモリアドレスから情報を読み取る読取り動作を特定するために、そのメモリを監視するように構成され得る。一態様では、この読取り動作の監視は、挙動監視システムの一部などのソフトウェアにおいて実行され得る。そのような読取り動作を特定したことに応答して、コンピューティングデバイスは、第1の動作の数(たとえば、「オフセット」または「O」個の動作の数)、第2の動作の数(たとえば、監視ウィンドウまたは「M」個の動作の数)、および第3の動作の数(たとえば、上限境界または「N」個の動作の数)を計算または決定するために汚染伝播ヒューリスティックを使用し得る。
【００１９】
第1の動作の数(O)は、コンピューティングデバイスがメモリアドレスを汚染されたものとしてマークし始める前に無視できる、検出された読取り動作の後の動作の数を特定し得る。動作のオフセット数(O)の前は、悪意のある動作が別のメモリアドレスに書き込む可能性が低いので、コンピューティングデバイス(たとえば、メモリ監視モジュール)は、処理リソースおよびバッテリーリソースを節約するために、O番目の動作の後までメモリアドレスをマークし始めないと決定することができる。第2の動作の数(M)は、コンピューティングデバイスが書込み動作を監視し得るO番目の動作の後の動作(たとえば、読取り、書込み、追加、シフト、分岐など)の数を特定することによって、監視ウィンドウを特定し得る。第3の動作の数(N)は、コンピューティングデバイスが汚染されたものとしてマークし得る(たとえば、M個の動作の数における)監視ウィンドウ内の書込み動作の数の上限境界を定義し得る。
【００２０】
例示的な例として、コンピューティングデバイスは、汚染伝播ヒューリスティックを使用して、O、M、およびNの値がそれぞれ、10、100および4であるべきであると決定し得る。次いで、コンピューティングデバイスは、汚染されたメモリアドレスから情報を読み取る読取り動作を特定し、検出された読取り動作の後に実行された最初の10個の動作(すなわち、O個の動作)を無視し、汚染されていないアドレスへの最初の4個の書込み動作(すなわち、最初のN個の動作)を特定するために次の100個の動作(すなわち、M個の動作)を監視し得る。コンピューティングデバイスは、監視ウィンドウにおいて4番目(すなわち、N番目)の書込み動作を特定した後、または監視ウィンドウの100個の動作が実行された後のうち、どちらか最初に生じた方の後に、汚染されていないアドレスへの書込み動作を監視するのを停止し得る。たとえば、監視ウィンドウの100個の動作の中に3個(3)の書込み動作しかない場合、コンピューティングデバイスはすべての100個の動作を監視する。一方、監視ウィンドウにおける2番目、4番目、8番目、および10番目の動作が汚染されていないアドレスへの書込み動作である場合、コンピューティングデバイスは、10番目の動作の後に(すなわち、N番目の動作の後に)、汚染されていないアドレスへの動作を監視するのを停止する。コンピューティングデバイスは、監視ウィンドウにおけるこれらの特定された書込み動作(最大N個の動作)に関連付けられたメモリアドレスを汚染されたものとしてマークし得る。加えて、コンピューティングデバイスは、書込み動作が監視ウィンドウ(M)内で行われるかどうかにかかわらず、N番目の書込み動作の後に(たとえば、上記の例では4番目の動作の後に)行われるすべての書込み動作を汚染されていないものとしてマークし得る。別の言い方をすれば、コンピューティングデバイスは、監視ウィンドウ(M)におけるN番目の動作の後に実行されたすべての書込み動作および監視ウィンドウ(M)の外のすべての書込み動作を汚染されていないものとしてマークし得る。
【００２１】
一態様では、メモリアクセス動作の監視は、コンピューティングデバイスのハードウェア構成要素において実行され得る。汚染されたアドレスが読み取られたことを認識するソフトウェアモジュールは、O個の動作の後にM個の動作が実行されるまでのメモリ動作の監視を開始するために、(たとえば、アプリケーションプログラミングインターフェース(API)命令を介して)メモリ監視ハードウェアモジュールをトリガし得る。代替的にまたは追加として、コンピューティングデバイス内の同じまたは異なる構成要素は、汚染されたメモリアドレスに対するすべてのメモリ読取り動作およびメモリ書込み動作を監視し、汚染されたメモリアドレスへの書込みを特定し、これらのメモリアドレスを汚染されていないものとしてマークし得る。
【００２２】
上記で説明した汚染伝播ヒューリスティックを実装および使用することによって、コンピューティングデバイスは、そのランタイムシステムへのいかなる変更もなしに、データがシステムを流れるときにそのデータを追跡し得る。(従来のソリューションが必要とする)ランタイムシステムへのそのような変更は、コンピューティングデバイスの性能および電力消費特性に著しい悪影響を及ぼす可能性があるので、汚染伝播ヒューリスティックの使用は、コンピューティングデバイスの機能を(たとえば、その性能および電力消費特性を改善することによって)改善し得る。加えて、汚染伝播ヒューリスティックを使用することによって、コンピューティングデバイスは、メモリアドレスを選択するために読取り動作および書込み動作を特定することによって、データがシステム(たとえば、ソース構成要素とシンク構成要素との間)を流れるときにそのデータを追跡し得る。これは、コンピューティングデバイスが、データに注釈を付ける、データをマークする、またはデータを識別子または(従来のデータフロー追跡ソリューションが必要とする)追跡/汚染情報でタグ付けするための動作などの複雑なまたは電力集約的な動作を実行することなしに、データフローを追跡することを可能にする。これは、コンピューティングデバイスの性能および電力消費特性をさらに改善する。
【００２３】
「ソース構成要素」は、その用語が本明細書で使用される場合、データを生成するおよび/またはデータを評価されているソフトウェアアプリケーションに入力する任意の構成要素を指す。ソース構成要素の例は、ファイル、ソフトウェアアプリケーション(たとえば、アドレス帳アプリケーションなど)、リモートプロセス、外部サーバ、システムサービスなどを含む。「シンク構成要素」は、データがソフトウェアアプリケーションによって処理された後にそのデータを消費または使用する任意の構成要素を指す。シンク構成要素の例は、ファイル、データベース、電子ディスプレイ、ネットワーク接続、およびインターネット、HTTP、テキストメッセージ、Bluetooth(登録商標)トランシーバなどの送信ポイントなどを含む。
【００２４】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、メモリと、性能が重要であるプログラマブルプロセッサとを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書では互換的に使用される。様々な態様は、限られたリソースを有しバッテリー電力で動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
【００２５】
「ランタイムシステム」という用語は、本明細書では、コンピューティングデバイスにおけるアプリケーションプログラムの実行をサポートする、そのデバイスにおけるソフトウェアリソースおよび/またはハードウェアリソースの組合せを指すために使用される。たとえば、ランタイムシステムは、コンピューティングデバイスの処理リソース、オペレーティングシステム、ライブラリモジュール、スケジューラ、プロセス、スレッド、スタック、カウンタ、および/または他の同様の構成要素のすべてまたは部分を含み得る。ランタイムシステムは、計算リソースをアプリケーションプログラムに割り振ること、割り振られたリソースを制御すること、およびアプリケーションプログラムの動作を実行することを担い得る。
【００２６】
「性能劣化」という用語は、本明細書では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリー寿命、プライベートデータの損失、悪意のある経済活動(たとえば、無認可のプレミアムSMSメッセージを送ること)、サービス拒否(DoS)、不適切に書かれたまたは設計されたソフトウェアアプリケーション、悪意のあるソフトウェア、マルウェア、ウイルス、フラグメント化されたメモリ、スパイまたはボットネットアクティビティのためにモバイルデバイスを乗っ取ることまたは電話を利用することに関する動作など、多種多様な望ましくないモバイルデバイス動作および特性を指すために使用される。また、これらの理由のいずれかで性能を劣化させるアプリケーションおよび条件は、本明細書では「良性ではない」または「非良性である」と呼ばれる。
【００２７】
一般に、モバイルデバイスの性能、電力効率、およびセキュリティは、経時的に劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを目的とするモバイル用アンチウイルス製品、ファイアウォール製品、および暗号化製品の販売を開始した。しかしながら、これらのソリューションの多くは、モバイルデバイス上で計算集約的なスキャニングエンジンを定期的に実行することに依存しており、このことは、モバイルデバイスの処理リソースおよびバッテリーリソースの多くを消費し、モバイルデバイスを遅くさせるか、もしくは長い時間期間の間使えなくさせ、ならびに/または場合によってはユーザエクスペリエンスを劣化させることがある。加えて、これらのソリューションは通常、知られているウイルスおよびマルウェアの検出に限定され、(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされないときに)経時的なモバイルデバイスの劣化に複合的に寄与することが多い、複数の複雑な要因および/または相互作用に対処しない。これらのおよび他の理由によって、既存のアンチウイルス製品、ファイアウォール製品、および暗号化製品は、経時的なモバイルデバイスの劣化に寄与し得る多数の要因を特定するための、モバイルデバイスの劣化を防止するための、または経年劣化したモバイルデバイスをその元の状態へと効率的に回復させるための十分なソリューションを提供しない。
【００２８】
様々な態様では、コンピューティングデバイス(たとえば、モバイルデバイスまたはリソース制約のあるコンピューティングデバイス)は、コンピューティングデバイスの性能および/または電力利用レベルを経時的に劣化させることが多い条件、要因、および/または挙動をインテリジェントにおよび効率的に特定、防止、および/または修正するために挙動分析および機械学習技法を使用するように構成された挙動ベースのセキュリティシステムを備え得る。たとえば、挙動ベースのセキュリティシステムは、ソフトウェアアプリケーション、プロセス、アクティビティ、またはデバイス挙動が良性であるか非良性であるかを迅速におよび効率的に決定するために、挙動分析技法を使用し得る。次いで、挙動ベースのセキュリティシステムは、コンピューティングデバイスに、特定された問題(たとえば、非良性であると決定された挙動)を修正する、修復する、解消する、分離する、またはさもなければ解決するための様々なアクションまたは動作を実行させ得る。
【００２９】
上述の挙動ベースのセキュリティシステムは一般に、経時的なコンピューティングデバイスの性能および電力利用レベルの劣化を防止するのに非常に効果的であるが、いくつかの非良性の挙動は、そのようなシステムによる検出を逃れることがある。さらに、悪意のあるソフトウェアアプリケーションは、動作を遅延させるか、協働して動作するか、またはさもなければ悪意のあるアクティビティをマスクすることによって、そのようなシステムによる検出を回避するかまたは逃れることを試みる可能性がある。たとえば、ユーザのアドレス帳から情報を盗むとき、悪意のあるソフトウェアアプリケーションは、アドレス帳にアクセスし、アドレス帳情報を符号化し、符号化された情報をアドレス帳ファイルとは別個の個別ファイルに記憶することによって、検出を逃れることを試みる可能性がある。次いで、悪意のあるアプリケーションは、個別ファイルから情報を取り出し、情報をサーバに送る前に数日待つことがあるか、または、第2の悪意のあるアプリケーションが情報を取り出し、情報をサーバに送ることがある。
【００３０】
通常、挙動ベースのセキュリティシステムは、上記で説明した動作のシーケンス(たとえば、アドレス帳データを読み取り、記憶し、送信する)がデバイスの通常の動作パターンと一致しないと決定し、この挙動を非良性として分類することが可能となる。しかしながら、これらの動作は比較的長い時間期間にわたっておよび/または協働して動作する複数のソフトウェアアプリケーションによって実行されるので、挙動ベースのセキュリティシステムは、これらの動作を同じシーケンスまたは挙動の一部であるものとして特定することができない可能性がある。
【００３１】
コンピューティングデバイスは、挙動ベースのセキュリティシステムとともにデータフロー追跡ソリューションを実装および使用することによって、上述の制限を克服することができる。手短に言えば、FlowDroidなどのデータフロー追跡ソリューションは、敏感なソース構成要素によって生成されたデータが重要なシンク構成要素(すなわち、悪用されやすいと決定された構成要素、重要であるとしてマークされた構成要素など)に到達したかどうかを決定するための機構を提供する。従来のソリューションを使用して、データに注釈が付けられるか、データがマークされるか、またはデータが識別子(たとえば、追跡または汚染情報)でタグ付けされる。これらの識別子は、データを処理し、使用し、または通信する各中間構成要素によって複製され、シンク構成要素は、データが許可された、信頼できる、承認された、または適切なソース構成要素から生じたかどうかを決定するために、これらの識別子を使用する。
【００３２】
一例として、コンピューティングデバイス内のソース構成要素は、ソースID値を、ソース構成要素が作り出す、生成する、または通信する各データ単位に関連付けることができる。そのデータ単位を処理する各中間構成要素は、データ単位とともにソースID値を通信することができ、その結果、データ単位とそのソースID値の両方は、シンク構成要素において受信されるまで、システムを伝搬する。シンク構成要素は、データ単位が許可された、信頼できる、承認された、またはさもなければ適切なソース構成要素から生じたかどうかを決定するために、ソースID値を使用し得る。コンピューティングデバイスは、データ単位が許可された、信頼できる、または承認されたソース構成要素に関連付けられていないと決定したことに応答して、エラーメッセージを生成するか、または例外を投げることができる。
【００３３】
上述のデータフロー追跡ソリューションは一般に、非良性のソフトウェアアプリケーションを特定するのに効果的であるが、多くの現代のコンピューティングデバイス(たとえば、モバイルデバイスなど)において使用するのに適していない。これは、現代のコンピューティングデバイスが高度に構成可能で複雑なシステムであり、多数の動作(読取り、書込み、データ符号化、データ送信など)を実行する多くの構成要素を含むからである。その結果、コンピューティングデバイスにおいて監視を必要とする多数のデータフローがある可能性があり、これらのデータフローの各々は、多くの異なる中間構成要素を伝搬する多数のデータ単位を含み得る。従来のデータフロー追跡ソリューションを使用して、コンピューティングデバイスは、これらのデータ単位の多くまたはすべてをマークする、監視する、追跡する、または評価することが必要とされる可能性がある。しばしば、これは、コンピューティングデバイスが多数の複雑で電力集約的な動作を実行することを必要とする。そのような動作は、デバイスの性能および電力消費特性に著しい悪影響を及ぼす可能性がある。
【００３４】
コンピューティングデバイスは、追跡を必要とするデータフローの数を低減するならびに/またはデバイス挙動を分析するときにマーク、監視、追跡、および評価を必要とするデータ単位の数を低減する汚染追跡ソリューションを実装および使用することによって、上述の制限を克服することができる。
【００３５】
一般に、汚染追跡は、いくつかの構成要素、動作、またはメモリロケーションを「汚染された」ものとしてマークするためにコンピューティングデバイスのランタイムシステムまたは仮想マシンが変更されるデータフロー追跡技法である。次いで、ランタイムシステムまたは仮想マシンは、これらの汚染されたリソースを使用する構成要素を特定するために、汚染された構成要素、動作、またはメモリロケーションを監視し得る。たとえば、コンピューティングデバイスは、敏感なソース構成要素によって使用されるメモリロケーションを汚染されたものとしてマークし、汚染されたメモリから情報を読み取る中間ソフトウェアアプリケーションまたはプロセスを特定するために汚染されたメモリロケーションを監視し、特定された中間アプリケーション/プロセスによって使用されるメモリロケーションを汚染されたものとしてマークすることなどを行うように構成され得る。これは、システムが、協働して動作しているソフトウェアアプリケーションなど、通常ならば挙動ベースのセキュリティによる検出を逃れるであろう非良性の挙動を特定することを可能にする。これはまた、コンピューティングデバイスが、データフローを追跡するときに実行される必要がある複雑で電力集約的な動作の数を低減するために、その動作をデバイス内の選択された数の構成要素、動作、またはメモリロケーションを監視することに集中させることを可能にする。
【００３６】
汚染追跡ソリューションは、さらなる従来のデータフロー追跡ソリューションの制限のうちのいくつかを克服するが、既存の汚染追跡ソリューションは、多くの現代のコンピューティングデバイスにおいて、挙動ベースのセキュリティソリューションの一部として使用するのに適していない。第1に、従来の汚染追跡ソリューションは、コンピューティングデバイスのランタイムシステムまたは仮想マシンに対する変更を必要とし、そのような変更は、コンピューティングデバイスの性能および電力消費特性に著しい悪影響を及ぼす可能性がある。加えて、多くの従来の汚染追跡ソリューションは、汚染された構成要素に関連付けられたすべての構成要素、動作およびメモリロケーションをやはり汚染されたものとしてマークすることを必要とするが、これらの汚染されたリソースが汚染されていないものとして再分類されるべきかどうかをインテリジェントに決定しない。その結果、経時的にこれらのソリューションを継続的にまたは繰り返し使用することは、コンピューティングデバイスが、多数の構成要素を特定、マーク、タグ付け、監視、および/または追跡することを必要とすることがあり、このことにより、コンピューティングデバイスが反応しなくなる可能性がある。さらに、多くの既存のソリューションは、コンピューティングデバイスが、複製された変数をメタデータとして使用することおよび/またはあらゆるストア命令上で識別子(すなわち、追跡/汚染情報)を動的に伝搬するために命令セット全体または追加の命令セットを実装することを必要とし、このことは、デバイスの処理リソース、電力リソース、またはメモリリソースのかなりの量を消費する可能性がある。
【００３７】
すべての上記で説明した理由によって、従来の汚染追跡ソリューションは、限られたメモリリソース、電力リソース、および処理リソースを有するリソース制約のあるデバイスである、モバイルデバイスなどの現代のコンピューティングデバイスにおいて使用するのに適していない。これらのソリューションはまた、多数のデバイス挙動を継続的にまたは繰り返し監視および分析する包括的な挙動ベースのセキュリティシステムの一部として使用するのに適しておらず、これは、これらの既存のソリューションを継続的にまたは繰り返し使用することにより、コンピューティングデバイスが反応しなくなる可能性があるからである。
【００３８】
様々な態様は、ヒューリスティックおよび機械学習技法を使用して、既存のソリューションの上述の制限を克服し、リソース制約のあるコンピューティングデバイスの挙動ベースのセキュリティシステムの一部として使用するのに適した、改善されたデータ追跡ソリューション(たとえば、改善された汚染追跡ソリューションなど)を実装および提供する方法、およびこれらの方法を実装するように構成されたコンピューティングデバイスを含む。
【００３９】
従来のソリューションとは異なり、様々な態様は、コンピューティングデバイスが、メモリアクセス、データ変換動作、メモリ書込み動作がデータをシステムに流すときに大量のデータをタグ付けまたは追跡することを必要としない、データ追跡ソリューションを含む。様々な態様は、コンピューティングデバイスが、メモリロケーションが汚染されたものとしてマークされるべきか汚染されていないものとしてマークされるべきかを決定するために汚染伝播ヒューリスティックを使用することを可能にする。これは、デバイスが、データがシステムを流れるときにそのデータをインテリジェントに追跡し、デバイスの性能および電力消費特性に著しい悪影響を及ぼすことなしに、追加のまたはより詳細な監視、分析、または精査を必要とするデバイス挙動、特徴、またはソフトウェアアプリケーションを特定することを可能にする。本方法を実装するために追跡されなければならないデータの量を低減することによって、様々な態様は、そのような監視の処理オーバーヘッドを低減するために、少なくとも部分的にハードウェア(たとえば、メモリ監視モジュール)において実装され得る。
【００４０】
いくつかの態様では、挙動ベースのセキュリティシステムは、非良性のソフトウェアアプリケーション(たとえば、悪意のあるアプリケーション、不適切に書かれたアプリケーション、デバイスとの互換性がないアプリケーションなど)を効率的に特定し、そのようなアプリケーションがデバイスの性能および/または電力利用レベルを経時的に劣化させるのを防止するように構成された挙動監視および分析システムであり得る。挙動監視および分析システムは、コンピューティングデバイスシステムの様々なレベルでの様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタまたは他の構成要素(本明細書では総称して「計装化構成要素」)を計装するかまたは協調させるように構成された観測器プロセス、デーモン、モジュール、またはサブシステム(本明細書では総称して「モジュール」と呼ぶ)を含み得る。観測器モジュールは、計装化構成要素から挙動情報を収集することによってデバイス挙動を継続的に(またはほぼ継続的に)監視することができ、挙動情報の収集は、デバイスのメモリに記憶されたログファイル(たとえば、APIログ)から情報を読み取ることによって達成され得る。挙動監視および分析システムはまた、分析器モジュールを含むことができ、観測器モジュールは、収集された挙動情報を(たとえば、メモリ書込み動作、関数呼出しなどを介して)分析器モジュールに通信し得る。分析器モジュールは、挙動情報を受信し、挙動情報を使用して挙動分析動作を実行することができ、これらの動作は、デバイス挙動が良性であるか非良性/性能を劣化させるものであるかを決定するためにデータ、アルゴリズム、分類器および/またはモデルを遂行すること、実行することおよび/または適用することを含み得る。
【００４１】
一態様では、コンピューティングデバイスは、セキュリティポリシーを生成するためにおよび/またはより綿密なもしくは追加の監視もしくは分析を必要とする構成要素もしくは特徴を特定するために、包括的な挙動監視および分析システムの一部として態様データ追跡ソリューションを使用するように構成され得る。たとえば、挙動監視および分析システムは、選択された制御フローパラメータおよび/またはランタイムパラメータを特定、測定、監視、および/または分析し、次いで、シンク構成要素において受信されたデータがより綿密な監視または追加の精査を必要とする敏感なまたは保護されたソース構成要素に由来するものである可能性を特定する確率値を計算するために、これらの動作の結果を使用することができる。これは、コンピューティングデバイスが、敏感なデータを特定するために(データフロー全体を追跡することとは対照的に)選択されたランタイムパラメータのみを分析し、その監視および分析動作をコンピューティングデバイスの最も重要な特徴を評価することに集中させることを可能にする。これは、(たとえば、挙動ベースのセキュリティシステムの性能を改善することなどによって)デバイスの速度、応答性、および全体的な性能を改善する。
【００４２】
一態様では、コンピューティングデバイスは、機械学習技法およびヒューリスティックを使用して、従来のデータフロー追跡ソリューションを使用するときに必要とされるようなデータのタグ付けまたはトレースを行うことなしに、非良性である(たとえば、悪意がある、不適切に書かれた、デバイスとの互換性がない、など)ソフトウェアアプリケーションを特定するために挙動監視および分析システムによって使用され得るデータ、アルゴリズム、分類器および/または挙動モデルを生成、更新、および/または訓練するように構成され得る。たとえば、コンピューティングデバイスプロセッサは、ソフトウェアアプリケーションを起動/実行し、アプリケーションによって使用されるデータソースおよびシンクポイントまたは構成要素のすべてを特定し、特定されたポイント/構成要素ごとにヒューリスティック値およびグランドトゥルース値(たとえば、「データリークが発生した」など)を収集および記憶し、メモリロケーションが汚染されたものとしてマークされるべきか汚染されていないものとしてマークされるべきかを決定するためにヒューリスティック値を使用し、汚染されたメモリアドレスから情報を読み取るかまたは汚染されたメモリアドレスに情報を書き込むソフトウェアアプリケーションを特定するために汚染されたメモリアドレスを監視し、特定されたソフトウェアアプリケーションが良性であるか非良性であるかを決定するためのプロセッサ実行可能命令で構成され得る。
【００４３】
様々な態様では、コンピューティングデバイスは、マルチスレッドソフトウェアアプリケーションの複数のスレッドを通じておよび/またはアプリケーションの複数のコンカレント実行においてデータフローを追跡するように構成され得る。一態様では、これは、デバイスがスレッドまたはプロセスごとにスレッド別ヒューリスティックカウンタを実装および使用することによって達成され得る。一態様では、コンピューティングデバイスは、スレッドごとに別個のヒューリスティックを生成し、維持することができる。バックグラウンドスレッドおよびスレッドプールでは、デバイスは、スレッドプール内のスレッドが誤って複数のタスクにわたってヒューリスティック値を共有する(このことは、スレッドを共有した無関係のタスク間の精度をゆがめることになる)ことがないように、タスク/プロセスがスケジュールされる/実行されるたびにタスク/プロセスごとにカウンタを維持、復元、または保存するように構成され得る。
【００４４】
一態様では、コンピューティングデバイスは、デバイスの過剰な量の処理リソース、電力リソース、またはメモリリソースを消費することなしに、ソース構成要素からシンク構成要素に機密情報が漏れている(すなわち、不正にまたは無認可の構成要素によって使用されている、など)かどうかを迅速におよび効率的に決定するように構成され得る。これは、敏感なソース構成要素に関連付けられた第1のメモリアドレスを特定し、シンク構成要素に関連付けられた第2のメモリアドレスを特定し、第1のメモリアドレスが第2のメモリアドレスと同じであるかどうかを決定するデバイスプロセッサを介して達成され得る。たとえば、ソース構成要素(たとえば、gps_locationなど)およびシンク構成要素(たとえば、sendsms(msg))を特定した後、コンピューティングデバイスプロセッサは、アドレスが一致する(たとえば、同じである、等しい、同等である、など)かどうかを決定するために、シンク引数(たとえば、「sendsms(msg)」中の「msg」、「send(a)」中の「a」など)のアドレスをソース構成要素のアドレスと比較し得る。デバイスプロセッサは、第1のメモリアドレスが第2のメモリアドレスと同じであると決定したことに応答して、情報漏れが発生したと決定し得る。コンピューティングデバイスはまた、ソース構成要素およびシンク構成要素のアドレスが一致する(すなわち、第1のメモリアドレスが第2のメモリアドレスと同じである)と決定したことに応答して、ソースもしくはシンクを使用するかまたはソースもしくはシンクに関連付けられた(したがって、より綿密な精査またはより深い分析を必要とする)構成要素を特定し得る。次いで、コンピューティングデバイスは、特定されたアドレスから情報を読み取るかまたは特定されたアドレスに情報を書き込むアプリケーションプログラム、ソース構成要素またはシンク構成要素を使用するアプリケーションプログラムなどを隔離することなどによって、情報漏れに対応し得る。
【００４５】
様々な態様は、シングルプロセッサシステムおよびマルチプロセッサシステムを含む、いくつかの異なるコンピューティングデバイスにおいて実装され得る。図1は、様々な態様を実装するコンピューティングデバイスにおいて使用される場合がある例示的なシステムオンチップ(SOC)100アーキテクチャを示すアーキテクチャ図である。SOC100は、デジタル信号プロセッサ(DSP)103、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含み得る。SOC100はまた、異種プロセッサ103〜108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。
【００４６】
各プロセッサ103〜110は、1つまたは複数のコアを含むことができ、各プロセッサ/コアは、その他のプロセッサ/コアとは無関係に動作を実行し得る。さらに、各プロセッサ103〜108は、システム内のその他のオペレーティングシステムおよびプロセッサとは無関係にメモリ管理動作を実行するオペレーティングシステムを含み得る。たとえば、マルチプロセッサシステムは、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行する第1のプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 10など)を実行する第2のプロセッサとを含み得る。これらのオペレーティングシステムの各々は、そのプロセッサ103〜108上で実行されるアプリケーションプログラムによるシステムメモリ116の割振りおよび使用を管理するためのメモリ管理システムを含み得る。たとえば、各オペレーティングシステムは、仮想メモリアドレスをアプリケーションプログラムに割り振り、あるプロセスによって使用されるメモリが別のプロセスによってすでに使用されているメモリに干渉しないことを保証するように構成された仮想メモリマネージャ(OS VMM)を含み得る。プロセスが物理メモリへのアクセスを必要とするとき、これらの仮想アドレスは、そのプロセッサ103〜108に固有のメモリ管理ユニット(MMU)によって物理メモリアドレスに変換され得る。
【００４７】
SOC100は、汚染されたメモリアドレスのリストを維持し、汚染されたメモリアドレスに関連付けられた読取り動作および書込み動作を特定するためにメモリ116を監視し、情報が汚染されたメモリアドレスから読み取られた後に実行された動作に関する情報を特定および収集し、いずれかまたはすべてのそのような情報をコンピューティングデバイスの1つまたは複数のソフトウェアモジュールに通信する、メモリ監視モジュール118を含み得る。
【００４８】
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび動画用の符号化されたオーディオ信号の処理などの他の特殊な動作を実行するためのアナログ回路およびカスタム回路112を含み得る。SOC100は、電圧調節器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびにコンピューティングデバイス上で実行されているプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース114を含み得る。リソース/システム構成要素114およびカスタム回路112は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。
【００４９】
プロセッサ103〜108は、再構成可能な論理ゲートのアレイを含み、および/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、メモリ要素116、メモリ監視モジュール118、リソースおよびカスタム回路112に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)などの高度な相互接続によって提供され得る。
【００５０】
SOC100は、クロック120および電圧調節器122など、SOC100の外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック120、電圧調節器122)は、内部SOCプロセッサ/コア(たとえば、DSP103、モデムプロセッサ104、グラフィックスプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【００５１】
SOC100はまた、スピーカーとインターフェースし、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)から入力を受信し、マイクロフォンアレイからオーディオデータを受信し、物理条件(たとえば、位置、方向、動き、方位、振動、圧力など)を監視するためのセンサー、カメラ、コンパス、GPS受信機、通信回路(たとえば、セルラー、Bluetooth(登録商標)、WLAN、WiFiなど)、および現代の電子デバイスの他のよく知られている構成要素(たとえば、加速度計、ジャイロスコープなど)を含むセンサーからセンサーデータを収集するのに適したハードウェア構成要素および/またはソフトウェア構成要素を含み得る。
【００５２】
プロセッサ103〜108は、互いに(たとえば、単一の基板、ダイ、集積チップなどの上で)極めて近接している独立した処理コアであり得る。プロセッサ103〜108が近接していることによって、オンチップメモリ116の共有およびコア間のより調整された協調が可能になる。加えて、プロセッサ103〜108が近接していることによって、メモリ116が、データ信号がオフチップで移動しなければならない場合に可能な周波数/クロックレートよりもはるかに高い周波数/クロックレートで動作することも可能になる。
【００５３】
図2は、特定のモバイルデバイス挙動、ソフトウェアアプリケーション、またはプロセスが非良性である(すなわち、悪意がある、性能を劣化させる、または疑わしい)かどうかを決定するように構成された、一態様のモバイルデバイス102のプロセッサにおいて実装され得る例示的な論理構成要素および情報フローを示す。図2に示す例では、モバイルデバイス102は、ハードウェア構成要素とソフトウェア構成要素の両方を含む。
【００５４】
ハードウェア構成要素は、汚染された/敏感なメモリアドレスのリスト222を含む/記憶するメモリ監視モジュール118を含み得る。ソフトウェア構成要素は、オペレーティングシステムフレームワークモジュール202、汚染管理モジュール204、および挙動ベースのセキュリティモジュール206を含み得る。汚染管理モジュール204は、データ-アドレス変換モジュール208、汚染プロパゲータモジュール210、および汚染されたアドレスモジュール212を含み得る。挙動ベースのセキュリティモジュール206は、挙動観測器モジュール214、挙動分析器モジュール216、およびアクチュエータモジュール218を含み得る。
【００５５】
オペレーティングシステムフレームワークモジュール202は、綿密な監視を必要とする敏感な構成要素の初期リストを送り得る。汚染管理モジュール204は、これらの敏感な構成要素によって使用されたメモリアドレスを「汚染された」ものとしてマークし得る。これは、敏感な構成要素によって使用されたメモリアドレスを含む汚染リストを生成し、その汚染リストをメモリ監視モジュール118に送ることによって達成され得る。
【００５６】
メモリ監視モジュール118は、汚染管理モジュール204から汚染リストを受信し、その汚染された/敏感なメモリアドレスのリスト222を更新するように構成され得る。メモリ監視モジュール118は、汚染された/敏感なメモリアドレスのリスト222に含まれるメモリアドレスから情報を読み取る読取り動作を検出するためにデバイスのメモリを監視し得る。メモリ監視モジュール118は、検出された読取り動作の後に実行された動作に関する情報を収集し、これらの動作を含む動作リストを生成し、そのリストを汚染管理モジュール204に送り得る。
【００５７】
汚染管理モジュール204は、メモリ監視モジュール118から動作リストを受信し、第1の動作の数(O)、第2の動作の数(M)、および第3の動作の数(N)を計算または決定するために汚染伝播ヒューリスティックを使用し得る。上記で説明したように、第1の動作の数(O)は、コンピューティングデバイスがメモリアドレスを汚染されたものとしてマークし始める前に無視できる、検出された読取り動作の後の動作の数を特定し得る。第2の動作の数(M)は、コンピューティングデバイスが書込み動作を監視し得るO番目の動作の後の動作(たとえば、読取り、書込み、追加、シフト、分岐など)の数を特定することによって、監視ウィンドウを特定し得る。第3の動作の数(N)は、コンピューティングデバイスが汚染されたものとしてマークし得る(たとえば、M個の動作の数における)監視ウィンドウ内の書込み動作の数の上限境界を定義し得る。
【００５８】
O値、M値、およびN値を決定した後、汚染管理モジュール204は、O番目の動作とM番目の動作との間に実行された最初のN個の書込み動作に関連付けられたメモリアドレスを含め、N番目の検出された書込み動作の後、またはM番目の動作の後のうち、どちらか最初に生じた方の後に実行された書込み動作に関連付けられたメモリアドレスを汚染リストから削除するために、汚染リストを更新し得る。汚染管理モジュール204はまた、汚染されたメモリアドレスから情報を読み取るかまたは汚染されたメモリアドレスに情報を書き込むソフトウェアアプリケーションを特定し、この情報を挙動ベースのセキュリティモジュール206に送り得る。これらの動作は、モバイルデバイス102の性能または電力消費特性に著しい悪影響を及ぼすことなしに、性能を劣化させる挙動の発生源または原因を特定するために、繰り返しまたは継続的に実行され得る。
【００５９】
挙動観測器モジュール214は、モバイルデバイスの様々なレベル/モジュールにおいてアプリケーションプログラミングインターフェース(API)を計装するかまたは協調させ、計装化APIを介して様々なレベル/モジュールにおいてモバイルデバイスの動作およびイベント(たとえば、システムイベント、状態変化など)を監視/観測し、観測された動作/イベントに関係する情報を収集し、収集された情報をインテリジェントにフィルタリングし、フィルタリングされた情報に基づいて1つまたは複数の観測値を生成し、生成された観測値をメモリに(たとえば、ログファイル、キャッシュメモリなどに)記憶し、ならびに/または生成された観測値を挙動分析器モジュール216に(たとえば、メモリ書込み、関数呼出しなどを介して)送るように構成され得る。様々な態様では、生成された観測値は、挙動ベクトルとしておよび/またはAPIログファイルもしくは構造に記憶され得る。
【００６０】
様々な態様では、挙動観測器モジュール214は、汚染されたメモリアドレスからの読取り/汚染されたメモリアドレスへの書込み、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリAPI呼、システム呼API、ファイルシステムおよびネットワーキングサブシステムの動作、デバイス(センサーデバイスを含む)の状態変化、ならびに他の同様のイベントに関係する情報を収集することによって、モバイルデバイスの動作およびイベントを監視/観測し得る。挙動観測器モジュール214はまた、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読取り/書込み/シーク動作、ファイルパーミッションを変更することなどを含み得る、ファイルシステムのアクティビティを監視し得る。
【００６１】
挙動観測器モジュール214はまた、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得る、データネットワークのアクティビティを監視/観測し得る。挙動観測器モジュール214は、送出された、受信された、または傍受された呼またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る、電話ネットワークのアクティビティを監視し得る。
【００６２】
挙動観測器モジュール214はまた、フォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含み得る、システムリソースの使用を監視/観測し得る。挙動観測器モジュール214は、ディスプレイがオンであるかオフであるか、デバイスがロックされているかロックされていないか、バッテリーの残量、カメラの状態など、様々な要因を監視することを含み得る、モバイルデバイスの状態を監視し得る。挙動観測器モジュール214はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信(IPC)を監視し得る。
【００６３】
挙動観測器モジュール214はまた、カメラ、センサー、電子ディスプレイ、WiFi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、ならびに、モバイルコンピューティングデバイス上で実行されるプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素を含み得る、1つまたは複数のハードウェア構成要素のドライバ統計および/またはステータスを監視/観測し得る。
【００６４】
挙動観測器モジュール214はまた、モバイルコンピューティングデバイスおよび/またはモバイルデバイスサブシステムの状態またはステータスを示す1つまたは複数のハードウェアカウンタを監視/観測し得る。ハードウェアカウンタは、モバイルコンピューティングデバイスにおいて発生するハードウェア関連のアクティビティまたはイベントのカウント値または状態を記憶するように構成されたプロセッサ/コアの専用レジスタを含み得る。
【００６５】
挙動観測器モジュール214はまた、ソフトウェアアプリケーションのアクションまたは動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標) App Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるモバイルデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、ロケーション情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth（登録商標）、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視/観測し得る。
【００６６】
挙動観測器モジュール214はまた、ボイスメール(VoiceMailComm)、デバイス識別子(DeviceIDComm)、ユーザアカウント情報(UserAccountComm)、カレンダー情報(CalendarComm)、ロケーション情報(LocationComm)、記録されたオーディオ情報(RecordAudioComm)、加速度計情報(AccelerometerComm)などを含む通信を含む、モバイルデバイスの送信または通信を監視/観測し得る。
【００６７】
挙動観測器モジュール214はまた、コンパス情報、モバイルデバイス設定、バッテリー寿命、ジャイロスコープ情報、圧力センサー、磁気センサー、スクリーンアクティビティなどの使用、およびそれらに対する更新/変更を監視/観測し得る。挙動観測器モジュール214は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視/観測し得る。挙動観測器モジュール214は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関係する条件またはイベントを監視/観測し得る。挙動観測器モジュール214は、パスワードの入力などのユーザ検証に関係する条件またはイベントを監視/観測し得る。
【００６８】
挙動観測器モジュール214はまた、アプリケーションレベル、無線レベル、およびセンサーレベルを含む、モバイルデバイスの複数のレベルにおける条件またはイベントを監視/観測し得る。アプリケーションレベルの観測は、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された注釈を観測すること、PassBook/Google Wallet/Paypalの使用に関係するイベントを観測することなどを含み得る。アプリケーションレベルの観測はまた、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザアクティビティなしでのカメラの使用、ユーザアクティビティなしでのマイクロフォンの使用などに関係するイベントを観測することを含み得る。
【００６９】
無線レベルの観測は、無線通信リンクを確立するかまたは情報を送信する前のモバイルデバイスとのユーザ対話、デュアル/マルチSIMカード、インターネット無線、モバイルフォンテザリング、計算用のデータのオフローディング、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を決定することを含み得る。無線レベルの観測はまた、測位、ピアツーピア(p2p)通信、同期、車両間通信、および/または機械間(m2m)のための、無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視することを含み得る。無線レベルの観測は、ネットワークトラフィックの使用、統計値、またはプロファイルを監視することをさらに含み得る。
【００７０】
センサーレベルの観測は、モバイルデバイスの使用環境および/または外部環境を決定するために磁気センサーまたは他のセンサーを監視することを含み得る。たとえば、モバイルデバイスプロセッサは、電話が(たとえば、ホルスター内の磁石を感知するように構成された磁気センサーを介して)ホルスターの中にあるか、または(たとえば、カメラまたは光センサーによって検出される光の量を介して)ユーザのポケットの中にあるかを決定するように構成され得る。たとえば、モバイルデバイスがホルスターに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声呼を行うこと、録音することなど)に関するアクティビティおよび機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行されている不正なプロセスの兆候であり得るので、モバイルデバイスがホルスターの中にあることを検出することは、疑わしい挙動を認識することに関連し得る。
【００７１】
使用環境または外部環境に関するセンサーレベルの観測の他の例は、近距離場通信(NFC)を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、USB電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに結合されていることを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに結合されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が修正されているまたは無効化されている(たとえば、悪意をもって緊急シグナリングアプリを無効化する、など)かどうかを決定すること、スピーカーまたはマイクロフォンがオンにされているまたは電源投入されていることを検出すること、充電イベントまたは電力イベントを検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出することなどを含む。センサーレベルの観測はまた、医療センサーもしくはヘルスケアセンサーから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサーから情報を収集すること、(たとえば、バイブレータインターフェースなどを介して)触知センサーまたは触覚センサーから情報を収集すること、モバイルデバイスの熱状態に関係する情報を収集することなどを含み得る。
【００７２】
挙動観測器モジュール214は、観測された挙動の簡明な定義を含む挙動ベクトルを生成するように構成され得る。各挙動ベクトルは、モバイルデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形で)簡潔に記述し得る。挙動ベクトルはまた、モバイルデバイスシステムがモバイルデバイス挙動を迅速に認識、特定、および/または分析することを可能にする、識別子として機能し得る。一態様では、挙動観測器モジュール214は、一連の数字を含む挙動ベクトルを生成することができ、これらの数字の各々は、モバイルデバイスの特徴または挙動を表す。たとえば、挙動ベクトルに含まれる数字は、モバイルデバイスのカメラが使用されているかどうか(たとえば、0または1として)、どのくらいのネットワークトラフィックがモバイルデバイスから送信されたかまたはモバイルデバイスによって生成されたか(たとえば、20KB/秒など)、いくつのインターネットメッセージが通信されたか(たとえば、SMSメッセージの数など)などを表し得る。
【００７３】
監視される要因の数を管理可能なレベルまで減らすために、一態様では、挙動観測器モジュール214は、モバイルデバイスの劣化に寄与する可能性があるすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実行するように構成され得る。様々な態様では、挙動観測器モジュール214は、他のモバイルデバイス、ネットワークサーバ、またはクラウドサービスもしくはネットワーク内の構成要素から挙動および/または要因の初期セットを受信し得る。一態様では、挙動/要因の初期セットは、他のモバイルデバイス、ネットワークサーバまたはクラウドサービス/ネットワークから受信されたデータ/挙動モデル内で指定され得る。一態様では、挙動/要因の初期セットは、縮小された特徴モデル(RFM)内で指定され得る。
【００７４】
挙動分析器モジュール216は、挙動観測器モジュール214から観測値、挙動ベクトル、および/または収集された挙動情報を受信し、受信された情報(すなわち、観測値)をコンテキスト情報と比較し、デバイスの劣化に経時的に寄与している(または寄与する可能性がある)か、または場合によってはデバイスに問題を引き起こす可能性がある、受信された観測値に関連付けられたサブシステム、プロセス、および/またはアプリケーションを特定し得る。
【００７５】
一態様では、挙動分析器モジュール216は、デバイスの劣化に経時的に寄与している-または寄与する可能性がある-か、または場合によってはデバイスに問題を引き起こす可能性がある、挙動、プロセス、またはプログラムを特定するために、情報の限定されたセット(すなわち、粗い観測値)を利用するためのインテリジェンスを含み得る。たとえば、挙動分析器モジュール216は、様々なモジュールから収集された(たとえば、観測値の形の)情報を分析し、モバイルデバイスの正常な動作挙動を学習し、比較の結果に基づいて1つまたは複数の挙動ベクトルを生成するように構成され得る。挙動分析器モジュール216は、生成された挙動ベクトルをアクチュエータモジュールに送ることができ、アクチュエータモジュールは、特定された問題を修復する、解消する、分離する、またはさもなければ解決するための様々な動作を実行し得る。
【００７６】
挙動分析器モジュール216は、挙動ベクトルを受信し、それらを1つまたは複数の挙動モジュールと比較して、特定のモバイルデバイス挙動、ソフトウェアアプリケーション、またはプロセスが非良性である(たとえば、性能を劣化させる/悪意がある)か、良性であるか、または疑わしいかを決定し得る。挙動、ソフトウェアアプリケーション、またはプロセスが悪意があるかまたは性能を劣化させると決定されるとき、挙動分析器モジュール216は、アクチュエータモジュール218に通知することができ、アクチュエータモジュール218は、非良性である、悪意があるまたは性能を劣化させると決定されたモバイルデバイス挙動を修正するための様々なアクションまたは動作を実行し、および/あるいは特定された問題を修復する、解消する、分離する、またはさもなければ解決するための動作を実行し得る。
【００７７】
挙動、ソフトウェアアプリケーション、またはプロセスが疑わしいと挙動分析器モジュール216が決定するとき、挙動分析器モジュール216は、挙動観測器モジュール214に通知することができ、挙動観測器モジュール214は、その観測の細分性(すなわち、モバイルデバイス挙動が観測される詳細さのレベル)を調整し、および/または、挙動分析器モジュール216から受信された情報(たとえば、リアルタイムの分析動作の結果)に基づいて観測される挙動を変更し、新しいまたは追加の挙動情報を生成もしくは収集し、さらなる分析/分類のために新しい/追加の情報を挙動分析器モジュール216に送ることができる。挙動観測器モジュール214と挙動分析器モジュール216との間のそのようなフィードバック通信は、疑わしいもしくは性能を劣化させるモバイルデバイス挙動の発生源が特定されるまで、処理もしくはバッテリー消費しきい値に達するまで、または観測細分性をさらに向上させても疑わしいもしくは性能を劣化させるモバイルデバイス挙動の発生源が特定され得ないことをモバイルデバイスプロセッサが決定するまで、モバイルデバイス102が、観測の細分性を再帰的に向上させる(すなわち、より微細なまたはより詳細な観測を行う)こと、または観測される特徴/挙動を変更することを可能にする。そのようなフィードバック通信はまた、モバイルデバイス102が、モバイルデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなしに、モバイルデバイスにおいてローカルにデータ/挙動モデルを調整または修正することを可能にする。
【００７８】
したがって、挙動分析器モジュール216は、挙動観測器モジュール214から粗い観測値を受信し、モバイルデバイスの劣化に潜在的に寄与する可能性がある受信された粗い観測値に関連付けられたサブシステム、プロセス、および/またはアプリケーションを特定するように構成され得る。これは、たとえば、受信された情報を外部構成要素から受信されたコンテキスト情報と比較する挙動分析器モジュール216によって達成され得る。
【００７９】
挙動分析器モジュール216は、特定されたサブシステム、プロセスまたはアプリケーションに対するより深いロギング/観測または最後のロギングを実行するように、またはそれを可能にするように、挙動観測器モジュール214に命令し得る。挙動観測器モジュール214は、特定されたサブシステム、プロセスまたはアプリケーションに対するより深い観測を実行し得る。挙動観測器モジュール214は、さらなる(およびより深い)分析のために、より深い観測の結果を挙動分析器モジュール216に送り得る。これらの動作は、問題の原因が特定されるまで、または、特定されたサブシステム、プロセスもしくはアプリケーションが問題もしくは劣化を引き起こす可能性が低いと決定されるまで、繰り返され得る。次いで、挙動分析器モジュール216は、分析の結果をアクチュエータモジュール218に送ることができ、アクチュエータモジュール218は、結果を受信し、特定された問題を修復する、解消する、分離する、またはさもなければ解決するための動作を実行し得る。
【００８０】
挙動観測器モジュール214および挙動分析器モジュール216は、限られた粗い観測値から疑わしい挙動を特定するため、挙動を動的に決定してより詳細に観測するため、および観測に必要な詳細さのレベルを動的に決定するために、コンピューティングシステムの挙動のリアルタイムの挙動分析を、個別にまたは集合的にのいずれかで提供し得る。このようにして、挙動観測器モジュール214は、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリーリソースを必要とすることなしに、コンピューティングシステム200が問題を効率的に特定し、モバイルデバイス上で問題が発生するのを防止することを可能にする。
【００８１】
挙動観測器モジュール214は、マルチレベルのロギング(たとえば、きめの細かいロギングおよびきめの粗いロギング)を可能にする様々な観測器モードをシステムに提供し得る。挙動観測器モジュール214は、異なる観測器モード間で自動的におよび動的に切り替えるための能力を提供し得る。挙動観測器モジュール214は、システムリソースを消耗する可能性があるプロセス/アプリケーションを監視し、制限し得る。挙動観測器モジュール214は、オーバーヘッドが最小であり、フロー制御が効率的に維持/実行されるように、(たとえば、非セキュアな世界からセキュアな世界への)通信オーバーヘッドを管理し得る。
【００８２】
一態様では、挙動観測器モジュール214は、良性のアプリケーションおよびモバイルデバイスに対する性能の影響を低減するために、空間的に効率的でクエリサービス時間が効率的な方法で、挙動情報を観測値として記憶するように構成され得る。
【００８３】
様々な態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、綿密な監視を必要とするクリティカルデータリソースを特定し、クリティカルデータリソースに関連付けられた中間リソースを特定し、クリティカルデータリソースおよび中間リソースにアクセスするときにソフトウェアアプリケーションによって行われるAPI呼を監視し、API呼によって消費または生成されるモバイルコンピューティングデバイスリソースを特定し、ソフトウェアアプリケーションによる非良性のアクティビティを示すものとしてAPI呼のパターンを特定し、特定されたAPI呼のパターンおよび特定されたモバイルコンピューティングデバイスリソースに基づいて軽量な挙動シグネチャを生成し、軽量な挙動シグネチャを使用して挙動分析動作を実行し、挙動分析動作に基づいてソフトウェアアプリケーションが非良性であるか良性であるかを決定することによって、モバイルコンピューティングデバイス挙動を分析するように構成され得る。
【００８４】
様々な態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、モバイルコンピューティングデバイス上で実行されているソフトウェアアプリケーションによって最も頻繁に使用されるAPIを特定し、特定されたホットAPIの使用に関する情報をモバイルコンピューティングデバイスのメモリ内のAPIログに記憶し、APIログに記憶された情報に基づいて挙動分析動作を実行して正常な動作パターンと一致しないモバイルコンピューティングデバイス挙動を特定することによって、モバイルコンピューティングデバイス挙動を分析するように構成され得る。一態様では、APIの複数の呼出しにわたって同じままである汎用的なフィールドの値が、APIの各呼出しに固有のものである特定のフィールドの値を記憶するテーブルとは別個のテーブルに記憶されるようにAPIログが編成されるように、APIログが生成され得る。APIログはまた、特定のフィールドの値が、汎用的なフィールドの値を記憶する別個のテーブルに対するハッシュ鍵とともにテーブルに記憶されるように、生成され得る。
【００８５】
様々な態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、複数のブーストされた決定株としての変換または表現に適した有限状態機械を含むフル分類器モデルを受信し、フル分類器モデルに基づいてモバイルコンピューティングデバイスにおいてリーン分類器モデルを生成し、モバイルコンピューティングデバイスにおけるリーン分類器モデルを使用してモバイルコンピューティングデバイスの挙動を良性または非良性(すなわち、悪意がある、性能を劣化させる、など)のいずれかであるものとして分類することによって、モバイルコンピューティングデバイス挙動を分析するように構成され得る。一態様では、フル分類器モデルに基づいてリーン分類器モデルを生成することは、モバイルコンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなしに、モバイルコンピューティングデバイス挙動を分類するために評価されるべきである固有のテスト条件の数を決定することと、ブーストされた決定株のリストを順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含み得るまで、各順次トラバースされたブーストされた決定株に関連付けられたテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成することと、生成されたテスト条件のリストに含まれる複数のテスト条件のうちの1つをテストするそれらのブーストされた決定株のみを含むようにリーン分類器モデルを生成することとを含み得る。
【００８６】
様々な態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、能力および状態情報などのモバイルコンピューティングデバイスのデバイス固有の情報を使用してモバイルコンピューティングデバイスの挙動を分類することに関連する複数のテスト条件の中のモバイルコンピューティングデバイス固有のテスト条件を特定し、特定されたモバイルコンピューティングデバイス固有のテスト条件のみを含むリーン分類器モデルを生成し、モバイルコンピューティングデバイスにおいて生成されたリーン分類器モデルを使用してモバイルコンピューティングデバイスの挙動を分類するように構成され得る。一態様では、リーン分類器モデルは、モバイルコンピューティングデバイスの現在の動作状態または構成に関連するモバイルコンピューティングデバイス特徴を評価する決定ノードのみを含むように生成され得る。さらなる態様では、リーン分類器モデルを生成することは、過剰な量のモバイルコンピューティングデバイスのリソース(たとえば、処理リソース、メモリリソース、またはエネルギーリソース)を消費することなしに、挙動を分類するために評価されるべきである固有のテスト条件の数を決定することと、フル分類器モデルの中の複数のテスト条件を順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含むまで、モバイルコンピューティングデバイスの挙動を分類することに関連するそれらのテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成することと、生成されたテスト条件のリストに含まれる条件のうちの1つをテストするフル分類器モデルに含まれる決定ノードを含むようにリーン分類器モデルを生成することとを含み得る。
【００８７】
様々な態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、ソフトウェアアプリケーションまたはプロセスのアクティビティを監視し、ソフトウェアアプリケーション/プロセスのオペレーティングシステム実行状態を決定し、アクティビティおよび/またはアクティビティが監視された間のソフトウェアアプリケーションもしくはプロセスのオペレーティングシステム実行状態に基づいてアクティビティが良性であるかどうかを決定することによって、モバイルコンピューティングデバイスの正常な動作パターンと一致しないモバイルコンピューティングデバイス挙動を認識するように構成され得る。さらなる態様では、挙動観測器モジュール214および/または挙動分析器モジュール216は、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態がアクティビティに関連するかどうかを決定し、アクティビティが監視された間のソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を特定する影の特徴値を生成し、アクティビティをオペレーティングシステム実行状態を特定する影の特徴値と関連付ける挙動ベクトルを生成し、挙動ベクトルを使用してアクティビティが良性であるか、疑わしいか、または非良性である(すなわち、悪意があるまたは性能を劣化させる)かを決定し得る。
【００８８】
一態様では、モバイルデバイス102はまた、悪用されやすいおよび/または綿密な監視を必要とすると決定されたデータリソース(たとえば、アドレス帳、カメラなど)のリストを記憶し、管理するクリティカルデータリソースモジュールを含み得る。モバイルデバイス102は、挙動分析器モジュール、ヒューリスティック、機械学習、履歴情報、現在の使用、モバイルデバイスにおいて検出されたイベントもしくは条件、サーバから受信された情報、ユーザ構成、および/または他の同様の基準、要因、イベント、もしくは条件からのフィードバックに基づいて、クリティカルデータリソースのリストを動的に更新/変更するように構成され得る。
【００８９】
さらなる態様では、モバイルデバイス102はまた、クリティカルリソースの使用を追跡するために監視を必要とすると決定された中間リソースのリストを記憶し得る。たとえば、ソフトウェアアプリケーションが、モバイルデバイスのクリティカルリソース(たとえば、アドレス帳など)から情報を読み取り、その情報を汎用ファイルに書き込むとき、モバイルデバイス102は、その汎用ファイルが、クリティカルリソース(すなわち、アドレス帳)を適切に追跡するために監視を必要とする中間リソースであると決定し得る。一態様では、クリティカルデータリソースモジュールは、中間リソースのリストを記憶し、管理し得る。
【００９０】
一態様では、モバイルデバイス102は、クリティカルリソース(たとえば、クリティカルデータリソースモジュールにおいて特定されるリソース)に関係するソフトウェアスタックの様々なレベルにおいてAPI呼を監視するように構成され得る。これは、クリティカルリソースに関係する計装化構成要素から挙動情報を収集することによっておよび/またはクリティカルリソースによって生成されたAPIログから情報を読み取ることによって達成され得る。モバイルデバイスは、この情報をAPI呼挙動ログデータベースに記憶し、監視を必要とする追加のリソースを特定し、クリティカルリソースの継続的な監視が有用な情報を提供する可能性が低いと決定し、それに応じて、クリティカルデータリソースに記憶されたデータリソースのリストにリソースを追加またはそのリストからリソースを削除し得る。
【００９１】
一態様では、モバイルデバイス102は、非良性の/悪意のあるアクティビティまたは挙動を示すAPI呼の疑わしいシーケンスまたはパターンを特定するために、単一のモバイルデバイス挙動の一部として一緒に評価されるべきである動作を特定するために、分析を必要とする様々な制御フローパラメータまたはデータフローパラメータを特定するために、ソースとシンクとの間の距離を計算するために、および/あるいは、挙動分析器モジュール216によるより綿密な監視または精査を必要とするクリティカルリソースを特定するために、API呼挙動ログデータベースに記憶された情報を挙動仕様モデルと比較するおよび/またはその情報を分析するように構成され得る。モバイルデバイス102は、比較動作および/または分析動作の結果に基づいて、クリティカルリソースごとに簡明で軽量な挙動シグネチャを生成し、分析のためにこれらの軽量な挙動シグネチャを挙動分析器モジュール216に送り得る。挙動分析器モジュール216は、軽量な挙動シグネチャを受信し、軽量な挙動シグネチャを使用して追加の、異なる、またはより深い分析を必要とするモバイルデバイス挙動または構成要素を迅速におよび効率的に決定し得る。
【００９２】
図3は、コンピューティングデバイスが、汚染されたメモリアドレスに関連付けられた読取り動作302を特定し、評価されるべきである第1(O)の動作の数、第2(M)の動作の数の動作、および第3(N)の動作の数を計算または決定するために汚染伝播ヒューリスティックを使用し、O番目の動作の後およびM番目の動作の前に実行された最初のN個の書込み動作304に関連付けられたメモリアドレスを汚染し、N番目の動作の後に実行された書込み動作306に関連付けられたメモリアドレスを汚染しないことがあることを示す。
【００９３】
図4および図5は、様々な態様による、コンピューティングデバイスにおいてデータフローを追跡する方法を示す。具体的には、図4は、データフローを追跡するときにハードウェアにおける監視を伴うメモリアドレスを特定するために汚染伝播ヒューリスティックを使用する態様方法400を示し、図5は、コンピューティングデバイスのハードウェアベースのメモリ監視モジュールにおいてメモリを監視する態様方法500を示す。
【００９４】
図4に示すブロック402において、コンピューティングデバイスのプロセッサは、汚染されたメモリアドレスの初期リストをコンピューティングデバイスのハードウェア構成要素に送り得る。一態様では、ハードウェア構成要素は、ハードウェアベースのメモリ監視モジュールであり得る。ブロック404において、プロセッサは、特定された動作およびそれらに関連するメモリアドレスのリストをハードウェア構成要素から受信し得る。ブロック406において、プロセッサは、特定された読取り動作の後に実行された「O」個の動作の数を計算、決定、または特定するために、受信されたリスト内の情報を使用し得る。ブロック408において、プロセッサは、O番目の動作の後に実行されたM個の動作の数を特定することによって、監視ウィンドウを決定し得る。ブロック410において、プロセッサは、監視ウィンドウ(M)における最初の「N」個の書込み動作の数を特定し得る。
【００９５】
ブロック412において、プロセッサは、特定された読取り動作に関連付けられたメモリアドレスを汚染リストに追加し得る。ブロック414において、プロセッサは、特定された書込み動作(すなわち、監視ウィンドウMにおける最初のN個の書込み動作)に関連付けられたメモリアドレスを汚染リストに追加し得る。ブロック416において、プロセッサは、N番目の書込み動作が検出された後に実行された書込み動作に関連付けられたメモリアドレスを汚染リストから削除し得る。ブロック418において、プロセッサは、汚染リストをハードウェア構成要素に送り得る。ブロック404〜418における動作は、コンピューティングデバイスの性能または電力消費特性に著しい影響または悪影響を及ぼすことなしにデータフローを追跡するために、繰り返しまたは継続的に実行され得る。
【００９６】
図5を参照すると、ブロック502において、コンピューティングデバイスのハードウェアベースのメモリ監視モジュールは、コンピューティングデバイスのソフトウェア構成要素から汚染されたメモリアドレスの初期リストを受信し得る。ブロック504において、メモリ監視モジュールは、受信されたリストに含まれるメモリアドレスを「敏感な」(または「汚染された」)アドレスとしてマークし得る。ブロック506において、メモリ監視モジュールは、敏感なアドレスから情報を読み取る読取り動作を特定するために、コンピューティングデバイス内のメモリを監視し得る。ブロック508において、メモリ監視モジュールは、オフセット(O)および/または監視ウィンドウ(M)における動作を特定するために、引き続きメモリを監視し得る。ブロック510において、メモリ監視モジュールは、特定された動作およびそれらに関連するメモリアドレスを動作リストに追加し得る。ブロック512において、メモリ監視モジュールは、動作リストをソフトウェア構成要素に送り得る。ブロック514において、メモリ監視モジュールは、ソフトウェア構成要素から汚染リストを受信し、受信されたリストに含まれるメモリアドレスをブロック504における敏感な/汚染されたものとしてマークし得る。
【００９７】
図6は、ソース構成要素とシンク構成要素との間で情報漏れが発生した(または発生する可能性がある)かどうかを迅速におよび効率的に決定するために、コンピューティングデバイスにおいてデータフローを追跡する態様方法600を示す。ブロック602において、コンピューティングデバイスのプロセッサまたは処理コアは、敏感なソース構成要素に関連付けられた第1のメモリアドレスを特定し得る。ブロック604において、プロセッサは、シンク構成要素に関連付けられた第2のメモリアドレスを特定し得る。決定ブロック606において、プロセッサは、特定された第1のアドレスが第2のメモリアドレスと同じ(または同等である、など)かどうかを決定し得る。特定された第1のアドレスが第2のメモリアドレスと同じではないと決定したこと(すなわち、決定ブロック606=「No」)に応答して、プロセッサは、ブロック602において、その通常の挙動分析動作を継続するおよび/または追加のソース構成要素を特定することができる。
【００９８】
特定された第1のアドレスが第2のメモリアドレスと同じであると決定したこと(すなわち、決定ブロック606=「Yes」)に応答して、プロセッサは、情報漏れがある(または情報漏れが発生する可能性が高い)と決定し、ブロック608において、情報漏れに対応するための様々な動作を実行し得る。たとえば、ブロック608において、プロセッサは、ソース構成要素またはシンク構成要素に関連付けられたソフトウェアアプリケーションプログラムを隔離し、挙動観測器モジュール214によって監視される要因/特徴/挙動の数を増やし、挙動分析器モジュール216により大きいまたはよりロバストな分類器モデルを使用させることなどができる。
【００９９】
様々な態様(たとえば、図1〜図6を参照しながら上記で説明した態様)は、様々なモバイルコンピューティングデバイス上で実装される場合があり、その一例がスマートフォンの形で図7に示されている。スマートフォン700は、内部メモリ702と、ディスプレイ703と、スピーカーとに結合されたプロセッサ701を含み得る。一態様では、上記で説明した態様方法動作のうちの1つまたは複数の動作を実行する、プロセッサ701を構成するためのプロセッサ実行可能命令は、メモリ702に記憶され得る。加えて、スマートフォン700は、ワイヤレスデータリンクおよび/またはプロセッサ701に結合されたセルラー電話トランシーバ705に接続され得る、電磁放射を送信および受信するためのアンテナ704を含み得る。スマートフォン700は通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ706、708も含む。
【０１００】
典型的なスマートフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、受信された音のデータパケットを復号して、音を生成するためにスピーカーに供給されるアナログ信号を生成する、音符号化/復号(コーデック)回路712を含む。また、プロセッサ701、ワイヤレストランシーバ705およびコーデック回路712のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。
【０１０１】
プロセッサ701は、以下で説明する様々な態様の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成される場合がある、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータまたは1つもしくは複数の多重プロセッサチップであってもよい。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするなどして、複数のプロセッサ701が設けられてもよい。通常、ソフトウェアアプリケーションは、アクセスされ、プロセッサ701にロードされる前に、内部メモリ702に記憶され得る。プロセッサ701は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【０１０２】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java（登録商標）、JavaScript（登録商標）、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれる場合がある。コンピュータ可読記憶媒体上に記憶されるプログラムコードまたはプログラムは、本明細書では、そのフォーマットがプロセッサによって理解可能である機械語コード(オブジェクトコードなど)を指すために使用される。
【０１０３】
多くのモバイルコンピューティングデバイスのオペレーティングシステムカーネルは、(非特権コードが動作する場合)ユーザ空間内に編成され、(特権コードが動作する場合)カーネル空間内に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)許諾される必要がある一方で、ユーザ空間において動作するコードがGPL許諾されなくてもよい、Android(登録商標)および他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実装され得ることを理解されたい。
【０１０４】
「システムオンチップ」(SOC)という用語は、本出願では、単一の基板上に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すために使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路を含み得る。単一のSOCはまた、任意の数の汎用および/または専用プロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)を含み得る。SOCはまた、統合されたリソースおよびプロセッサを制御するための、ならびに周辺デバイスを制御するためのソフトウェアを含み得る。
【０１０５】
「マルチコアプロセッサ」という用語は、本出願では、プログラム命令を読み取り、実行するように構成された2つ以上の独立した処理コア(たとえば、CPUコア)を含む単一の集積回路(IC)チップまたはチップパッケージを指すために使用される。SOCは、複数のマルチコアプロセッサを含むことができ、SOCにおける各プロセッサは、コアと呼ばれ得る。「マルチプロセッサ」という用語は、本出願では、プログラム命令を読み取り、実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すために使用される。
【０１０６】
本出願で使用する「構成要素」、「モジュール」などの用語は、限定はしないが、特定の動作または機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、1つの構成要素は、1つのプロセッサもしくはコア上に局在する場合があり、および/または2つ以上のプロセッサもしくはコアの間で分散される場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造を記憶した様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読取り/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信することができる。
【０１０７】
上記の方法の説明およびプロセスフロー図は、単に例示的な例として提供されたものであり、様々な態様のステップが提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【０１０８】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せにおいて実装され得る。ハードウェアとソフトウェアのこの互換性を明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【０１０９】
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの組合せを用いて実装または実行され得る。汎用プロセッサはマルチプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成としても実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
【０１１０】
1つまたは複数の例示的な態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用される場合があり、コンピュータによってアクセスされる場合がある任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体および非一時的プロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在し得る。
【０１１１】
開示した態様の上述の説明は、いかなる当業者も本発明を作成または使用することができるように提供される。これらの態様に対する様々な修正は当業者に容易に明らかになり、本明細書で定義する一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【０１１２】
100  システムオンチップ(SOC)、SOC
103  デジタル信号プロセッサ(DSP)、DSP
104  モデムプロセッサ
106  グラフィックスプロセッサ
108  アプリケーションプロセッサ
110  コプロセッサ
112  アナログ回路およびカスタム回路、カスタム回路、リソースおよびカスタム回路
114  システム構成要素およびリソース、リソース/システム構成要素
116  システムメモリ、メモリ、メモリ要素、オンチップメモリ
118  メモリ監視モジュール
120  クロック
122  電圧調節器
124  相互接続/バスモジュール
200  コンピューティングシステム
202  オペレーティングシステムフレームワークモジュール
204  汚染管理モジュール
206  挙動ベースのセキュリティモジュール
208  データ-アドレス変換モジュール
210  汚染プロパゲータモジュール
212  汚染されたアドレスモジュール
214  挙動観測器モジュール
216  挙動分析器モジュール
218  アクチュエータモジュール
222  汚染された/敏感なメモリアドレスのリスト
302  読取り動作
304  書込み動作
306  書込み動作
400  態様方法
500  態様方法
600  態様方法
700  スマートフォン
701  プロセッサ
702  内部メモリ、メモリ
703  ディスプレイ
704  アンテナ
705  セルラー電話トランシーバ、ワイヤレストランシーバ
706  ロッカースイッチ
708  ロッカースイッチ
712  音符号化/復号(コーデック)回路、コーデック回路
【図１】
2018507472.tif 000003
【図２】
2018507472.tif 000004
【図３】
2018507472.tif 000005
【図４】
2018507472.tif 000006
【図５】
2018507472.tif 000007
【図６】
2018507472.tif 000008
【図７】
2018507472.tif 000009
【手続補正書】
【提出日】平成29年7月31日(2017.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいてデータフローを追跡する方法であって、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)を決定するステップと、
前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)を決定するステップと、
前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)を決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む方法。
【請求項２】
前記第1の動作の数、前記第2の動作の数および前記第3の動作の数を特定するためにヒューリスティックを使用するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、
前記第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む、請求項6に記載の方法。
【請求項８】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含む、請求項7に記載の方法。
【請求項９】
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションと前記第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含む、請求項7に記載の方法。
【請求項１０】
コンピューティングデバイスのプロセッサに、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)を決定するステップと、
前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)を決定するステップと、
前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)を決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1の動作の数、前記第2の動作の数および前記第3の動作の数を特定するためにヒューリスティックを使用するステップをさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取るソフトウェアアプリケーションを特定するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記コンピューティングデバイスにおいて収集された挙動情報を分類器モデル内のブーストされた決定株に適用するステップと
をさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む動作を実行させるように構成される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行させるように構成される、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第2のソフトウェアアプリケーションを特定するステップと、
前記第2のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと
をさらに含む動作を実行させるように構成される、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われたAPI呼の組合せに基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの挙動が非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行させるように構成される、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションの集合的挙動を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記プロセッサに、前記第1のソフトウェアアプリケーションおよび前記第2のソフトウェアアプリケーションによって行われた前記API呼の組合せに基づいて前記挙動ベクトル情報構造を生成するステップが、前記第1のソフトウェアアプリケーションと前記第2のソフトウェアアプリケーションとの間の関係を特徴づける情報構造を生成するステップを含むような動作を実行させるように構成される、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
コンピューティングデバイスであって、
動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを備え、前記動作が、
汚染されたメモリアドレスから情報を読み取る読取り動作を特定するためにメモリを監視するステップと、
前記特定された読取り動作の後に実行された第1の動作の数を特定するオフセット値(O)を決定するステップと、
前記第1の動作の数の後に実行された第2の動作の数を特定する監視ウィンドウ値(M)を決定するステップと、
前記第1の動作の数の後に実行された第3の動作の数を特定する上限境界値(N)を決定するステップと、
M個の動作が実行されること、および
汚染されていないアドレスへのN個の書込み動作が特定されること
のうちの1つが行われるまで、動作を監視するステップと、
特定された書込み動作に関連付けられたメモリアドレスを汚染されたものとしてマークするステップと、
N番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスと、M番目の動作の後に実行された書込み動作に関連付けられたメモリアドレスとを汚染されていないものとしてマークするステップと
を含む、コンピューティングデバイス。
【請求項２０】
前記プロセッサが、
前記汚染されたメモリアドレスのうちの1つから情報を読み取る第1のソフトウェアアプリケーションを特定するステップと、
前記第1のソフトウェアアプリケーションによって行われたアプリケーションプログラミングインターフェース呼を監視するステップと、
前記監視されたAPI呼に基づいて挙動ベクトル情報構造を生成するステップと、
挙動ベースの分析結果を生成するために、前記挙動ベクトル情報構造を分類器モデルに適用するステップと、
前記第1のソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記挙動ベースの分析結果を使用するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成される、請求項19に記載のコンピューティングデバイス。
【国際調査報告】
2018507472.tif 000010
2018507472.tif 000011
2018507472.tif 000012