(57)【要約】  本明細書において、コンピューティング装置をリブートすること無く、コンピューティング装置のカーネルモードコンポーネントの少なくとも１つのコンポーネントをアンロードし、カーネルモードコンポーネントのコンポーネントの更新バージョンをロードするための技術について記載する。技術は、カーネルモードコンポーネントに関連付けられたインテグリティマネージャにより実行されてもよい。インテグリティマネージャはまた、カーネルモードコンポーネントに、既知のリアクションに関連付けられたアクションを実行させ、既知のリアクションが発生したかどうかを判定し、それに応答して、修復アクションを実行するか、またはリモートセキュリティサービスに通知する、ことによりカーネルモードコンポーネントのインテグリティを判定することができる。さらに、インテグリティマネージャは、いずれかのコンピューティング装置リストに、カーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現が含まれるかどうかを、判定することができる。そして、インテグリティマネージャは、リストから表現を除去すること、または、コンピューティング装置リストの内容を求める要求に対する応答から表現を除去することができる。
2017508220.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置のカーネルモードコンポーネントに対する更新に関連付けられた要求を受け取るステップと、
前記コンピューティング装置をリブートすること無く、
前記カーネルモードコンポーネントの少なくとも１つのコンポーネントをアンロードするステップと、
前記アンロードするステップの後に、前記カーネルモードコンポーネントの少なくとも１つのコンポーネントの更新バージョンをロードするステップと、
を備えることを特徴とするコンピュータによって実施される方法。
【請求項２】
前記受け取るステップと、前記アンロードするステップと、前記ロードするステップとが、前記カーネルモードコンポーネントに関連付けられたインテグリティマネージャにより実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記インテグリティマネージャにより、前記インテグリティマネージャは更新されるべきであると判定するステップと、
前記インテグリティマネージャにより、前記コンピューティング装置をリブートするステップと、
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記カーネルモードコンポーネントに代わって、前記インテグリティマネージャにより、オペレーティングシステムフックを登録するステップと、
前記インテグリティマネージャにより、前記オペレーティングシステムフックに関連付けられたイベントを、前記カーネルモードコンポーネントに中継するステップと、
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項５】
前記オペレーティングシステムフックを登録するステップ、または、オペレーティングシステム提供の拒否機構の使用により、前記インテグリティマネージャが、レジストリの読み込みを発生させること、または、ネットワークパケットを送ることを、別のコンポーネントが前記レジストリの読み込み、またはネットワークパケットをブロックしようとするかどうかにかかわらず、強制的に行うことが可能になることを特徴とする請求項４に記載の方法。
【請求項６】
前記アンロードするステップの後かつ前記ロードするステップの前に、前記インテグリティマネージャにより、前記イベントのログをとるステップと、
前記ロードするステップの後に、前記インテグリティマネージャにより、前記ログをとったイベントを前記更新されたカーネルモードコンポーネントに配信するステップと、
をさらに備えることを特徴とする請求項４に記載の方法。
【請求項７】
前記カーネルモードコンポーネントに代わって、前記インテグリティマネージャにより、スレッドを生成する要求を受け取るステップと、
前記インテグリティマネージャにより、前記スレッドの結果を前記カーネルモードコンポーネントに提供するステップと、
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項８】
前記インテグリティマネージャが、オペレーティングシステム提供の拒否機構を利用して、１つまたは複数のアクションを強制的に行うことができることを特徴とする請求項１に記載の方法。
【請求項９】
前記カーネルモードコンポーネントの状態マネージャの状態を保持するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記状態マネージャが、ハンドルと、レジストリキーと、前記カーネルモードコンポーネントのメモリ割り当てと、前記カーネルモードコンポーネントに関連付けられた他の揮発性データと、を保持することを特徴とする請求項１に記載の方法。
【請求項１１】
前記ロードするステップの後に、前記状態マネージャの状態を用いて、前記更新されたカーネルモードコンポーネントを初期化するステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記カーネルモードコンポーネントが、前記更新を受け取った後に前記要求を送信することを特徴とする請求項１に記載の方法。
【請求項１３】
前記アンロードするステップが、前記コンピューティング装置のオペレーティングシステムに、前記カーネルモードコンポーネントの少なくとも１つのコンポーネントをアンロードすることを要求するステップを備え、前記ロードするステップが、前記カーネルモードコンポーネントの少なくとも１つのコンポーネントの前記更新バージョンをロードする、オペレーティングシステムロード機能を起動するステップを備えることを特徴とする請求項１に記載の方法。
【請求項１４】
前記ロードするステップが失敗したと判定し、それに応答して、前記カーネルモードコンポーネントの少なくとも１つのコンポーネントの前記アンロードしたバージョンをリロードするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１５】
プロセッサと、
前記プロセッサにより操作されて、監視、分析、報告、または修復のうちの少なくとも１つを実行するように構成されるカーネルモードコンポーネントと、
前記プロセッサにより操作されて、前記カーネルモードコンポーネントのインテグリティを判定するように構成されるインテグリティマネージャであって、前記判定は、既知のリアクションが、前記カーネルモードコンポーネントまたはシステムのアクションに応答して発生したかどうかを判定し、前記既知のリアクションが発生しなかったという判定に応答して、修復アクション、またはリモートセキュリティサービスに通知すること、のうちの少なくとも１つを実行することを含む、インテグリティマネージャと、
を備えることを特徴とするコンピューティング装置。
【請求項１６】
前記インテグリティマネージャが、前記カーネルモードコンポーネントが非アクティブであるかどうかを判定し、前記カーネルモードコンポーネントが非アクティブであるという判定に応答して、前記カーネルモードコンポーネントのインテグリティの前記判定を行うようにさらに構成されることを特徴とする請求項１５に記載のコンピューティング装置。
【請求項１７】
前記アクションは、イベントを生成することを含み、前記既知のリアクションは、前記イベントの生成と、前記イベントの処理とを含むことを特徴とする請求項１５に記載のコンピューティング装置。
【請求項１８】
前記インテグリティマネージャは、前記イベントが生成されたが処理されなかったという判定に応答して、第１の修復アクションを実行するか、または第１の通知を前記リモートセキュリティサービスに送り、前記イベントが生成されなかったという判定に応答して、第２の修復アクションを実行するか、または第２の通知を前記リモートセキュリティサービスに送ることを特徴とする請求項１７に記載のコンピューティング装置。
【請求項１９】
前記インテグリティマネージャは、前記イベントが生成されたが処理されなかったと判定し、それに応答して、前記修復アクションを実行し、前記修復アクションは、新しいワーカスレッドを生成すること、イベントキューをフラッシュすること、または、前記カーネルモードコンポーネントのリセットを行うことを含むことを特徴とする請求項１７に記載のコンピューティング装置。
【請求項２０】
前記インテグリティマネージャは、前記カーネルモードコンポーネントに関連付けられたデータストアのインテグリティを判定し、前記データストアの前記インテグリティが不正アクセスされたという判定に応答して、前記データストアからデータを削除するか、または、前記データストアの状態を保存して、新しいデータストアを作成し、前記新しいデータストアを前記保存した状態に初期化するようにさらに構成されることを特徴とする請求項１５に記載のコンピューティング装置。
【請求項２１】
コンピューティング装置リストが、コンピューティング装置のカーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現を含むかどうかを判定することと、
前記判定に応答して、
前記コンポーネントまたは前記接続の表現を、前記コンピューティング装置リストから除去すること、または
前記コンポーネントまたは前記接続の表現を、前記コンピューティング装置リストの内容を求める要求に対する応答から除去すること
のうちの１つの実行することと、
を備える動作を行うように前記コンピューティング装置をプログラムするように構成される複数の実行可能命令を記憶した、１つまたは複数のコンピュータ記憶媒体。
【請求項２２】
前記コンピューティング装置リストが、ドライバのリスト、ネットワーク接続のリスト、オペレーティングシステムフックのリスト、ディレクトリのリスト、またはレジストリキーのリストであることを特徴とする請求項２１に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項２３】
前記コンポーネントが、ドライバ、オペレーティングシステムフック、ディレクトリ、またはレジストリキーであることを特徴とする請求項２１に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項２４】
前記動作が、前記コンピューティング装置リストの内容を求める要求に対する前記応答を傍受することをさらに備えることを特徴とする請求項２１に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項２５】
前記動作が、前記カーネルモードコンポーネントに関連付けられたディレクトリを開く要求を傍受することと、前記ディレクトリが存在しないか、または利用可能でないことを応答することと、をさらに備えることを特徴とする請求項２１に記載の１つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ランタイム中のインテグリティの保証およびリブートレスな更新に関する。
【０００２】
関連出願の相互参照
本願は、２０１４年３月２０日出願の米国実用特許出願第１４／２２０，３６２号に対する優先権を主張する。米国出願第１４／２２０，３６２号は、全体が参照により本明細書に組み込まれる。
【背景技術】
【０００３】
日常生活の多くの部分をインターネットの使用が占めるようになるにつれて、システムリソース、データ、および個人情報を盗むかまたは壊すセキュリティエクスプロイトが、ますます問題となっている。政府および企業が、これらのセキュリティエクスプロイトに関係する侵入や窃盗を防ぐことにかなりの資源を費やす。セキュリティエクスプロイトは、コンピュータウィルス、ワーム、トロイの木馬、スパイウェア、キーストロークロガー、アドウェア、およびルートキット、などの多くの形式で入り込む。これらのエクスプロイトは、スピアフィッシング電子メール、クリッカブルリンク、文書、実行ファイル、またはアーカイブ、などのいくつかのメカニズムで、またはこれらを介してもたらされる。セキュリティエクスプロイトが引き起こす脅威のいくつかは、サイバーテロリズムまたは産業スパイと表現されるほど深刻である。
【０００４】
アンチウイルスソフトウェアなどの多くのセキュリティソフトウェアソリューションが、これらのセキュリティエクスプロイトに対抗するように開発されてきた。これらのセキュリティソフトウェアソリューションは、更新およびパッチなどのメンテナンスが必要であり、これらの更新およびパッチを適用するためには、セキュリティソフトウェアソリューションを実装するコンピューティング装置は、通常リブートしなければならない。リブート中、セキュリティソフトウェアソリューションはアクティブでないことがあり、コンピューティング装置の制御を得るような機会をセキュリティエクスプロイトに提供する。セキュリティソフトウェアソリューションが実行中であっても、セキュリティエクスプロイトは、セキュリティソフトウェアソリューションを停止すること(killing)または破損することなど、いくつもの方法で、セキュリティソフトウェアソリューションを破壊することができる。
【図面の簡単な説明】
【０００５】
詳細な説明は、添付の図面を参照して、説明される。図面では、参照番号の最左の数字が、その参照番号が最初に現れる図面を特定する。同じ参照番号を異なる図面で使用することで、同様または同一の項目または特徴を示す。
【図１】コンピューティング装置のカーネルモードコンポーネントに関連付けられたインテグリティマネージャが、ランタイム中のカーネルモードコンポーネントのインテグリティを確保し、カーネルモードコンポーネントのリブートレスな更新を可能にする、一例の環境を例示する図である。
【図２】カーネルモードコンポーネントおよびインテグリティマネージャを用いて構成されるコンピューティング装置の、コンポーネントレベルのビューを例示する図である。
【図３】カーネルモードコンポーネントの更新に関連付けられた要求をインテグリティマネージャにより受信し、および、リブートすること無く、カーネルモードコンポーネントをアンロードし、カーネルモードコンポーネントの更新バージョンをロードする、一例のプロセスを例示する図である。
【図４】発生したカーネルモードコンポーネントまたはシステムのアクションに対する既知のリアクションを判定すること、および、発生しなかった場合には、修復アクションを実行すること、または、リモートセキュリティサービスに通知することにより、カーネルモードコンポーネントのインテグリティを判定する一例のプロセスを例示する図である。
【図５】コンピューティング装置リストが、カーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現を含むと判定し、リストから表現を除去するか、または、リストの内容を求める要求への応答から表現を除去する、一例のプロセスを例示する図である。
【発明を実施するための形態】
【０００６】
本開示では、一部には、セキュリティエージェントなどの、コンピューティング装置のカーネルモードコンポーネントのリブートレスな更新のための技術について記載する。カーネルモードコンポーネントに関連付けられたインテグリティマネージャは、カーネルモードコンポーネントに対する更新に関連付けられた要求を受け取る。それに応答して、コンピューティング装置をリブートすること無く、インテグリティマネージャが、少なくとも、カーネルモードコンポーネント実行ファイルなどのカーネルモードコンポーネントのうちのコンポーネントをアンロードし、カーネルモードコンポーネントのコンポーネントの更新バージョンをロードする。インテグリティマネージャは、更新中に、カーネルモードコンポーネントの状態マネージャの状態を記憶することができ、更新されたカーネルモードコンポーネントを、状態マネージャの状態を用いて初期化することができる。また、インテグリティマネージャは、カーネルモードコンポーネントに代わってオペレーティングシステムにフックを登録し、フックに関連付けられたイベントを受け取り、更新中にイベントのログをとり、ログをとったイベントを更新されたカーネルモードコンポーネントに配信することができる。いくつかの実施形態において、インテグリティマネージャは、ログをとったイベントを配信するのではなく、インテグリティマネージャが、修正アクションをどのように実行するのかについて十分な知識を有するときに、イベントに対して勝手に作用するようにしてもよい。また、インテグリティマネージャは、システム上の可能な限り低い場所にフックを登録すること、または、オペレーティングシステム提供の拒否機構を使用することで、セキュリティソフトウェアまたはマルウェアなどの、システム上の他のコンポーネントが、操作をブロックしようとするかどうかにかかわらず、そのようなレジストリの読み込みを発生させること、または、ネットワークパケットを送ることを、強制的に行うことができる。加えて、インテグリティマネージャは、オペレーティングシステム提供の拒否機構を利用して、１つまたは複数のアクションを強制的に行うことができる。さらに、インテグリティマネージャは、カーネルモードコンポーネントに代わってスレッドを生成し、スレッドの結果をカーネルモードコンポーネントに提供する、スレッドマネージャを含んでもよい。インテグリティマネージャにスレッドを生成させることにより、カーネルモードコンポーネントは、更新による進行の前に、スレッドが返されるのを待つ必要が無い。
【０００７】
種々の実施形態において、インテグリティマネージャは、カーネルモードコンポーネントのインテグリティを判定することもできる。そのような判定には、既知のリアクションが、カーネルモードコンポーネントまたはシステムによるアクションに応答して発生しなかったことを判定すること、および、修復アクションまたはリモートセキュリティサービスへの通知、のどちらかまたは両方を実行すること、を含んでもよい。インテグリティマネージャは、カーネルモードコンポーネントのデータストアのインテグリティをさらに判定することができる。データストアが不正アクセスされたという判定に応答して、インテグリティマネージャは、データストアからデータを削除するか、新しいデータストアを作成することができる。
【０００８】
加えて、インテグリティマネージャは、カーネルモードコンポーネントの存在および動作を、コンピューティング装置の他のアプリケーションおよびプロセスから、隠すことができる。カーネルモードコンポーネントの存在および動作を隠すために、インテグリティマネージャは、いずれかのコンピューティング装置リストに、カーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現が含まれるかどうかを、判定することができる。インテグリティマネージャは、次いで、リストから表現を除去すること、または、コンピューティング装置リストの内容を求める要求に対する応答から表現を除去することができる。
【０００９】
環境の例
図１は、コンピューティング装置のカーネルモードコンポーネントに関連付けられたインテグリティマネージャが、ランタイム中のカーネルモードコンポーネントのインテグリティを確保し、カーネルモードコンポーネントのリブートレスな更新を可能にする、一例の環境を示す。例示のように、コンピューティング装置１０２は、ネットワーク１０６を介してリモートセキュリティサービス１０４と接続されてもよい。コンピューティング装置は、オペレーティングシステム１０８、アプリケーションおよびプロセス１１０、カーネルモードコンポーネント１１４に関連付けられたインテグリティマネージャ１１２、およびカーネルモードコンポーネント１１４を含んでもよい。インテグリティマネージャ１１２は、通信チャネル１１６により、カーネルモードコンポーネント１１４に接続される。オペレーティングシステム１０８は、インテグリティマネージャ１１２により監視および修正され得るコンピューティング装置リスト１１８、インテグリティマネージャ１１２がオペレーティングシステム１０８に登録することができるフック１２０を含んでもよい。インテグリティマネージャ１１２は、フック１２０により生成されるイベントを記録するログ１２２、状態マネージャの状態１２４、およびスレッドマネージャ１２６を含んでもよい。カーネルモードコンポーネント１１４は、状態マネージャ１２８、およびデータストア１３０を含んでもよく、状態マネージャ１２８の状態は状態マネージャの状態１２４として記憶される。加えて、カーネルモードコンポーネント１１４は、カーネルモードコンポーネント１１４の旧バージョン１３２と、カーネルモードコンポーネント１１４が更新される更新バージョン１３４との両方を含んでもよい。
【００１０】
種々の実施形態において、コンピューティング装置１０２は、サーバもしくはサーバファーム、複数の分散サーバファーム、メインフレーム、ワークステーション、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、メディアセンタ、組込みシステム、または、任意の他の種類の１つまたは複数の装置であってもよい。コンピューティング装置１０２は、複数のコンピューティング装置に実装されると、複数のコンピューティング装置間で、図１に例示されたコンポーネントおよびプロセスを分散させることができる。いくつかの実装において、コンピューティング装置１０２は、１つまたは複数のコンピューティング装置に実装される１つまたは複数の仮想マシンを表す。コンピューティング装置１０２として機能することが可能な一例のコンピューティング装置は、図２に例示されており、その図面を参照して以下で説明する。
【００１１】
いくつかの実施形態において、オペレーティングシステム１０８は、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムまたはＵＮＩＸ（登録商標）オペレーティングシステムなどの、任意の種類のオペレーティングシステムであってもよい。オペレーティングシステム１０８は、コンポーネントをロードおよびアンロードするためのロード機能およびアンロード機能を有することができる。ロード機能およびアンロード機能は、例えば、インテグリティマネージャ１１２により起動され、少なくともカーネルモードコンポーネント１１４のコンポーネントをアンロードすること、および、カーネルモードコンポーネント１１４の更新バージョンをロードすることができる。オペレーティングシステム１０８には、ドライバのリスト、ネットワーク接続のリスト、オペレーティングシステムフックのリスト、ディレクトリのリスト、またはレジストリキーのリストなど、多数のコンピューティング装置リスト１１８も含む。アプリケーションおよびプロセス１１０、インテグリティマネージャ１１２、およびカーネルモードコンポーネント１１４は、これらリスト１１８の内容を要求することができる。また、オペレーティングシステム１０８は、インテグリティマネージャ１１２が、多数のフックを登録できるようにしてもよい。フックを登録することにより、インテグリティマネージャ１１２は、コンピューティング装置１０２上で発生するイベントをキャプチャできるようになってもよい。
【００１２】
さらなる実施形態において、アプリケーションおよびプロセス１１０は、良性のプログラムおよび悪意のあるプログラムの両方を含む、任意の種類のアプリケーションおよびプロセスであってもよい。例えば、アプリケーションおよびプロセス１１０には、システムリソースを意図的に独占するセキュリティエクスプロイトを含むことがあり、効果的にカーネルモードコンポーネント１１４に対するサービス妨害攻撃を引き起こす。そのようなセキュリティエクスプロイトは、さらに、あるいは代わりに、データストア１３０などのカーネルモードコンポーネント１１４のデータを破損させる、または、カーネルモードコンポーネント１１４を停止させ(kill)、もしくは誤った宛先に向けることが可能である。加えて、アプリケーションまたはプロセス１１０がセキュリティエクスプロイトではないときでも、アプリケーションまたはプロセス１１０は、なお、システムリソースの過剰利用などの非良性の影響を及ぼすかもしれない。
【００１３】
種々の実施形態において、インテグリティマネージャは、単一のコンポーネントであってもよいし、同一のタイトル／ジョブ／挙動を有するコンポーネントの組み合わせであってもよい。インテグリティマネージャ１１２は、コンピューティング装置１０２のブートフェーズおよびランタイム中に、カーネルモードコンポーネント１１４のインテグリティを確保することができる。本明細書に記載されるように、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４のインテグリティチェックを通じて、カーネルモードコンポーネント１１４の存在および動作を、他のアプリケーションおよびプロセス１１０から隠すことを通じて、および、カーネルモードコンポーネント１１４のリブートレスな更新を管理することを通じて、ランタイム中にインテグリティを確保することができる。
【００１４】
いくつかの実施形態において、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４に代わってフックを登録すること、および、それらフック１２０に関連付けられたイベントを、通信チャネル１１６を介してカーネルモードコンポーネント１１４に中継することができる。インテグリティマネージャ１１２が利用されて、カーネルモードコンポーネント１１４に代わってフック１２０が登録されるため、それらフック１２０が、カーネルモードコンポーネント１１４のリブートレスな更新中に、失われることが無い。加えて、インテグリティマネージャ１１２は、システム上の可能な限り低い場所にフックを登録すること、または、オペレーティングシステム提供の拒否機構を使用することができる。そのようにすることで、カーネルモードコンポーネント１１４によるレジストリの読み込みを発生させること、または、カーネルモードコンポーネント１１４により送信されるネットワークパケットを送ることを、それら操作をブロックしようとする、セキュリティベンダなどの他のプロセスにかかわらず、確保することができる。また、インテグリティマネージャ１１２に、フック１２０の登録を行わせることにより、インテグリティマネージャは、カーネルモードコンポーネント１１４が更新中で、イベントを受信することができない間に、例えば、ログ１２２にイベントのログをとることにより、イベントのログをとることができる。カーネルモードコンポーネント１１４が更新されるとき、インテグリティマネージャ１１２は、次いで、ログ１２２にログをとったイベントを配信してもよい。従って、カーネルモードコンポーネント１１４は、自身の代わりにインテグリティマネージャ１１２に、フックの登録とイベントの中継を処理させることにより、フック１２０に関連付けられたイベントの完全な記録を得ることができる。
【００１５】
さらなる実施形態において、インテグリティマネージャ１１２は、状態マネージャの状態１２４を保持してもよい。そのような状態１２４は、状態マネージャ１２８のルート状態であってもよい。状態マネージャ１２８は、ハンドル、レジストリキー、メモリ割り当て、または、カーネルモードコンポーネント１１４の他の非永続状態情報、を保持してもよい。状態マネージャの状態１２４は、周期的に、または、状態マネージャ１２８がブートする際に、または、リブートレスな更新の一部として、カーネルモードコンポーネント１１４のコンポーネントのアンロードの前に、通信チャネル１１６を介してインテグリティマネージャ１１２に提供されてもよい。リブートレスな更新の完了時、インテグリティマネージャ１１２は、状態マネージャの状態１２４をカーネルモードコンポーネント１１４の状態マネージャ１２８に提供して、状態マネージャ１２８を状態マネージャの状態１２４に初期化する。このように、レジストリキーおよびファイルの操作、収集したデータに対する既存の計算、およびメモリ割り当て、などの非永続状態は、リブートレスな更新中に失われることが無い。
【００１６】
いくつかの実施形態において、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４に代わってスレッドを初期化するスレッドマネージャ１２６を含んでもよい。例えば、スレッドマネージャ１２６は、ファイルの暗号学的ハッシュを計算するためのスレッドを初期化する要求を、通信チャネル１１６を介してカーネルモードコンポーネント１１４から受け取ってもよい。スレッドマネージャ１２６は、次いで、スレッドを初期化し、スレッドの完了時に、スレッドの実行の結果を、通信チャネル１１６を介してカーネルモードコンポーネント１１４に提供することができる。カーネルモードコンポーネント１１４ではなく、インテグリティマネージャ１１２に、カーネルモードコンポーネント１１４のスレッドの管理を処理させることにより、カーネルモードコンポーネント１１４は、リブートレスな更新の開始前に、スレッドが返るのを待つ必要が無い。カーネルモードコンポーネント１１４が更新される間にスレッドが返る場合、スレッドをスレッドマネージャ１２６に返し、スレッドマネージャ１２６は、更新中のスレッド実行の結果を保持することができ、また、それを更新の完了時にカーネルモードコンポーネント１１４に提供することができる。
【００１７】
インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４が初期化可能な種々の入力／出力操作に関連付けられた、または、他のシステム変更（例えば、カーネルモードコンポーネント１１４が通知を受けることを求める変更）に関連付けられた、通知コールバックおよび／または完了ルーチンを登録することにも責任を負うものとしてもよい。そのような完了ルーチンまたは通知コールバックは、オペレーティングシステム１０８によりいつでも呼び出されてもよいため、そのようなコールバックをカーネルモードコンポーネント１１４のアンロードと同期させることが可能となり得る。こうして、カーネルモードコンポーネント１１４はアンロードされていることが可能であったが、Ｉ／Ｏ完了通知が、もう古くなってしまった（アンロードされた）アドレスに、なおも配信されることが可能であるため、システムクラッシュを引き起こす。これを回避するために、インテグリティマネージャ１１２が、そのような完了ルーチンおよび通知コールバックを登録する責任を負い、オペレーティングシステム１０８が、メモリに常駐するコードを安全に配信することが可能となる。インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４が、なおもアクティブかつ安全にアクセス可能である（または、パブリッシャー／サブスクライバーモデルを介して）と判断する場合、次いで、カーネルモードコンポーネント１１４に、そのような完了の通知を通知する。カーネルモードコンポーネント１１４が存在しない場合、インテグリティマネージャ１１２は、完了の通知を単に無視してもよい。
【００１８】
種々の実施形態において、カーネルモードコンポーネント１１４のリブートレスな更新は、カーネルモードコンポーネント１１４がカーネルモードコンポーネント実行ファイルなどの、カーネルモードコンポーネント１１４のコンポーネントに対する更新を受け取ったことに応答するものであってもよい。カーネルモードコンポーネント１１４が更新を受け取ると、カーネルモードコンポーネント１１４は、通信チャネル１１６を介して、インテグリティマネージャ１１２がリブートレスな更新を管理することを要求してもよい。リブートレスな更新を管理する要求を受け取ると、インテグリティマネージャ１１２は、いくつかの実施形態において、状態マネージャ１２８から状態マネージャの状態１２４を検索してもよい。他の実施形態において、インテグリティマネージャ１１２は、状態１２４を保有していてもよい。インテグリティマネージャ１１２は、次いで、カーネルモードコンポーネント１１４のコンポーネントをアンロードしてもよく、これには、オペレーティングシステム１０８がカーネルモードコンポーネント１１４のコンポーネントをアンロードすることを要求すること、を伴ってもよい。アンロードの確認を受け取ると、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４のコンポーネントの更新バージョン１３４のロードを初期化してもよい。これには、更新バージョン１３４をロードする、オペレーティングシステム１０８のオペレーティングシステムロード機能を起動することを伴ってもよい。アンロードの後かつロードの前に、インテグリティマネージャ１１２がフック１２０に関連付けられたイベントを受け取った場合、インテグリティマネージャ１１２はログ１２２にイベントのログをとる。
【００１９】
ロードの後、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４がうまく更新されたかどうかを判定してもよい。更新が成功しなかった場合、インテグリティマネージャ１１２は、更新バージョン１３４をアンロードし、更新バージョンと置き換えられた旧バージョン１３２をリロードすることができる。
【００２０】
ロードがうまく完了すると、インテグリティマネージャ１１２は、状態マネージャの状態１２４を状態マネージャ１２８に提供して状態マネージャ１２８を初期化し、ログ１２２に記憶されたイベントを配信してもよい。
【００２１】
さらなる実施形態において、インテグリティマネージャ１１２は、インテグリティマネージャ１１２に対する更新を、リモートセキュリティサービス１０４から受け取ってもよい。そのような更新を受け取ると、インテグリティマネージャ１１２は、更新プロセスを初期化してもよく、これには、コンピューティング装置１０２のリブートを伴ってもよい。
【００２２】
種々の実施形態において、インテグリティマネージャ１１２は、多数のインテグリティチェックのいずれかを実行して、ランタイム中のカーネルモードコンポーネント１１４のインテグリティを保証することができる。これらインテグリティチェックは、カーネルモードコンポーネント１１４に、アクション（例えば、レジストリキーの書き込みなどのイベントを生成する）を実行させて、既知のリアクション（例えば、イベントが生成されて処理される）を伴うようにすること、を含んでもよい。代替として、または加えて、インテグリティチェックには、既知のリアクションに関連付けられたシステムアクションが発生したかどうかを判定することを含んでもよい。インテグリティマネージャ１１２は、次いで、既知のリアクションが発生したかどうかを判定する（例えば、イベントが生成されたかどうかを判定する、およびイベントが処理されたかどうかを判定する）。インテグリティマネージャ１１２が、既知のリアクションが発生しなかったと判定する場合、インテグリティマネージャ１１２は、修復アクションを実行してもよいし、リモートセキュリティサービス１０４に通知してもよい。いくつかの実施形態において、リモートセキュリティサービス１０４へのそのような通知は、カーネルモードコンポーネント１１４の通信モジュールが不正アクセスされるように、インテグリティマネージャ１１２の通信モジュールを介して行われてもよい。これらインテグリティチェックは、定期的に実行されてもよいし、イベントによりトリガされてもよい。例えば、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４の一部に対して何のアクティビティもないと判定することができ、それに応答して、１つまたは複数のインテグリティチェックを実行してもよい。
【００２３】
いくつかの実施形態において、所与のアクションが複数の既知のリアクションに関連付けられてもよく、異なるリアクションに応じて、異なる修復または通知がインテグリティマネージャ１１２により適用されてもよい。例えば、既知のリアクションには、イベントの生成、およびイベントの処理を含んでもよい。イベントが生成されたが処理されない場合、インテグリティマネージャ１１２は、第１の修復アクションを実行してもよいし、第１の通知を送ってもよい。例えば、イベントは、リソースの過剰利用のせいで処理されなかったかもしれない。それに応答して、インテグリティマネージャ１１２は、新しいワーカスレッドを生成し、イベントキューをフラッシュし、または、カーネルモードコンポーネント１１４をリセットしてもよい。インテグリティマネージャ１１２は、次いで、インテグリティチェックを繰り返して、イベントが今度は処理されるかどうかを判定してもよい。代替として、インテグリティマネージャ１１２は、単にカーネルモードコンポーネント１１４をリロードし、インテグリティチェックを繰り返してもよい。一方、イベントが生成されない場合、インテグリティマネージャ１１２は、第２の修復アクションを実行してもよいし、第２の通知を送ってもよい。例えば、インテグリティマネージャ１１２は、新しいオペレーティングシステムフック１２０を登録し、インテグリティチェックを繰り返して、新しいフック１２０がイベントをキャプチャするかどうかを判定することができる。
【００２４】
インテグリティチェックの別の例は、カーネルモードコンポーネント１１４の署名を検証することである。ＵＮＩＸおよびＭａｃｉｎｔｏｓｈ（または、一般的には「Ｍａｃ」）のオペレーティングシステムなどのいくつかのオペレーティングシステムには、デジタル署名検証を行わないものがあり、Ｗｉｎｄｏｗｓオペレーティングシステムのファミリなどのオペレーティングシステムには、６４ビットの改良型に対してのみデジタル署名検証を行うものがある。デジタル署名検証を行うオペレーティングシステムでさえも、正当な企業がバイナリを署名したことのみを検証し、セキュリティサービスまたは製造者が署名したことは検証しない。インテグリティマネージャ１１２は、自身が管理する（所有することも含む）コンポーネントの署名を検証し、デジタル署名に使用されるパブリックキーを、予想される製造者のパブリックキーと比較する。キーが全く存在しない場合、または、不当なキーが存在する場合、インテグリティマネージャ１１２は、適切な手段をとることができる（例えば、修復、通知など）。
【００２５】
さらなる実施形態において、インテグリティチェックは、カーネルモードコンポーネント１１４のデータストア１３０が不正アクセスされるかどうかを判定することを含んでもよい。データストア１３０（例えば、状況モデル）は、アプリケーションおよびプロセス１１０の属性、パターン、および挙動を追跡することができる。インテグリティマネージャ１１２が、データストア１３０が不正アクセスされたと判定する場合、インテグリティマネージャ１１２は、データストア１３０からデータを削除してもよいし、新しいデータストア１３０を作成して、その新しいデータストア１３０を以前のデータストア１３０に基づき初期化してもよい。これら修復アクションのうち１つを行うことにより、インテグリティマネージャ１１２は、データストア１３０がアプリケーションおよびプロセス１１０のトラック属性、パターン、および挙動の追跡を継続できるようにする。
【００２６】
種々の実施形態において、インテグリティマネージャ１１２は、カーネルモードコンポーネント１１４の存在および動作を、他のアプリケーションおよびプロセス１１０から隠すことにより、ランタイム中にカーネルモードコンポーネント１１４のインテグリティを確保することができる。インテグリティマネージャ１１２は、リスト１１８をチェックして、リストのいずれかに、カーネルモードコンポーネント１１４に関連付けられたコンポーネントまたは接続の表現を含むかどうかを判定してもよい。そのようなコンポーネントは、例えば、ドライバ、オペレーティングシステムフック、ディレクトリ、またはレジストリキーであってもよい。リスト１１８がそのような表現を含む場合、インテグリティマネージャ１１２は、表現をリスト１１８から除去するか、または、リスト１１８の内容を求める要求に対する応答を傍受して、応答から表現を除去するか、のいずれかを行ってもよい。リスト１１８からの除去がカーネルモードコンポーネント１１４の操作の妨げになるようなときには、リスト１１８からではなく応答から表現を除去することが適切であり得る。インテグリティマネージャ１１２は、リスト１１８にある表現を開くまたはアクセスする要求（例えば、ディレクトリのうち、リスト１１８にあるカーネルモードコンポーネント１１４用のディレクトリを開く要求）を傍受することもできる。インテグリティマネージャ１１２は、次いで、傍受した要求に応答し、表現（例えば、ディレクトリ）が存在しないことを提示してもよい。
【００２７】
カーネルモードコンポーネント１１４は、セキュリティエージェントであってもよく、コンピューティング装置１０２上のアクティビティを監視および記録すること、アクティビティを分析すること、および、警告およびイベントを生成して、それら警告およびイベントをリモートセキュリティサービス１０４に提供すること、ができる。カーネルモードコンポーネント１１４は、リモートセキュリティサービス１０４によりインストールされてもよく、および構成可能であってもよく、カーネルモードコンポーネント１１４の再構成を受け取り、かつ、動作(live)中に適用する。カーネルモードコンポーネント１１４は、多数のカーネルモードコンポーネントのコンポーネントの更新の動作アプリケーションを処理してもよい。カーネルモードコンポーネント実行ファイルの更新は、上述の方法で、インテグリティマネージャ１１２により行われてもよい。一例のカーネルモードコンポーネント１１４は、２０１２年６月８日出願の「Ｋｅｒｎｅｌ−Ｌｅｖｅｌ  Ｓｅｃｕｒｉｔｙ  Ａｇｅｎｔ」と題する米国特許出願第１３／４９２，６７２号、にて詳述されている。
【００２８】
状態マネージャ１２８、データストア１３０、カーネルモードコンポーネント１１４の旧バージョン１３２、および、カーネルモードコンポーネント１１４の新バージョン１３４、はより詳しく上述される。
【００２９】
種々の実施形態において、リモートセキュリティサービス１０４を実装する装置はそれぞれ、サーバもしくはサーバファーム、複数の分散サーバファーム、メインフレーム、ワークステーション、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、メディアセンタ、組込みシステム、または、任意の他の種類の１つまたは複数の装置であってもよいし、それらを含んでもよい。一実装において、リモートセキュリティサービス１０４を実装する装置は、ノードのクラウドコンピューティングネットワークなどの、通信において稼働する複数のコンピューティング装置を表す。いくつかの実装において、リモートセキュリティサービス１０４を実装する１つまたは複数の装置は、１つまたは複数のコンピューティング装置に実装される１つまたは複数の仮想マシンを表す。
【００３０】
いくつかの実施形態において、リモートセキュリティサービス１０４は、個々のユーザおよびクライアントエンティティに対する、カーネルモードコンポーネント１１４およびインテグリティマネージャ１１２のメンテナンス、更新、ならびに構成、脅威モデリング、および／または修復、などの情報セキュリティサービスのプロバイダであってもよい。リモートセキュリティサービス１０４は、警告通知およびセキュリティイベントを、カーネルモードコンポーネント１１４またはインテグリティマネージャ１１２のいずれから、その通信モジュールを介して受け取ることができる。それに応答して、リモートセキュリティサービス１０４は、カーネルモードコンポーネント１１４もしくはインテグリティマネージャ１１２のどちらかもしくは両方の構成を更新すること、カーネルモードコンポーネント１１４もしくはインテグリティマネージャ１１２に命令を提供すること、または、回復もしくは修復アクションをとること、ができる。
【００３１】
種々の実施形態において、ネットワーク１０６は、有線ネットワーク、無線ネットワーク、および、有線ネットワークおよび無線ネットワークの組み合わせ、などの任意の１つまたは複数のネットワークを含んでもよい。さらに、ネットワーク１０６は、複数の異なるタイプのパブリックまたはプライベートネットワーク（例えば、ケーブルネットワーク、インターネット、無線ネットワークなど）のいずれか１つまたは組み合わせを含んでもよい。いくつかの例において、コンピューティング装置は、セキュアプロトコル（例えば、ｈｔｔｐｓ）、および／または、任意の他のプロトコルまたはプロトコルのセット、例えばトランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、を使用して、ネットワーク１０６を介して通信する。
【００３２】
システムの例
図２は、カーネルモードコンポーネントおよびインテグリティマネージャを用いて構成されるコンピューティング装置の、コンポーネントレベルのビューを示す。例示のように、コンピューティング装置２００は、オペレーティングシステム２０４を記憶するメモリ２０２、カーネルモードコンポーネント２０６、インテグリティマネージャ２０８、および、アプリケーションおよびデータ２１０、を備える。また、コンピューティング装置２００は、プロセッサ（単数または複数）２１２、取り外し可能記憶装置２１４および取り外し不可記憶装置２１６、入力装置（単数または複数）２１８、出力装置（単数または複数）２２０、ならびに、他のコンピューティング装置２２４と通信するための通信接続２２２、を含む。
【００３３】
種々の実施形態において、メモリ２０２は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリ、など）、またはこの２つの組み合わせである。オペレーティングシステム２０４は、上記で図１について詳述されたオペレーティングシステムなどの、任意の種類のオペレーティングシステムとすることができる。カーネルモードコンポーネント２０６およびインテグリティマネージャ２０８は、上記で図１について詳述される。アプリケーションおよびデータ２１０は、上記で図１について詳述したアプリケーションおよびデータなどの、任意の種類のアプリケーションおよびデータとすることができる。
【００３４】
いくつかの実施形態において、プロセッサ（単数または複数）２１２は、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、または、ＣＰＵおよびＧＰＵの両方、または、従来技術において既知の他の処理装置もしくはコンポーネント、である。
【００３５】
コンピューティング装置２００はまた、追加的なデータ記憶装置（取り外し可能および／または取り外し不可）、例えば、磁気ディスク、光ディスク、またはテープ等、を含む。そのような追加的な記憶装置は、図２に、取り外し可能記憶装置２１４および取り外し不可記憶装置２１６によって例示される。有形のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ、などの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不可、の媒体を含んでもよい。メモリ２０２、取り外し可能記憶装置２１４、および取り外し不可記憶装置２１６は全て、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するために使用でき、かつ、コンピューティング装置２００によりアクセス可能な任意の他の媒体、を含むがこれに限定されない。いずれのそのような有形コンピュータ可読媒体も、コンピューティング装置２００の一部であってもよい。
【００３６】
コンピューティング装置２００はまた、キーボード、マウス、タッチセンサ式ディスプレイ、音声入力装置などの入力装置（単数または複数）２１８、および、ディスプレイ、スピーカ、プリンタなどの出力装置（単数または複数）２２０、を有する。これらの装置は、従来技術において周知であり、ここで詳細に検討する必要はない。
【００３７】
コンピューティング装置２００はまた、コンピューティング装置２００が、リモートセキュリティサービス１０４の装置、などの他のコンピューティング装置２２４と通信することを可能にする、通信接続２２２を含む。
【００３８】
プロセスの例
図３から５は、例示のプロセス３００、４００、および５００を例示する。これらのプロセスは、論理フロー図として例示され、その各動作は、ハードウェア、ソフトウェア、またはその組み合わせ、において実装され得る動作のシーケンスを表す。ソフトウェアの文脈において、動作は、１つまたは複数のプロセッサによって実行されると、列挙された動作を行う、１つまたは複数のコンピュータ可読記憶媒体に記憶されるコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行する、または、特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などを含む。動作が記述される順番は、制限するものとして解釈されることは意図されず、任意の数の記述される動作が、任意の順番でおよび／または並行して組み合わせられて、プロセスを実装することができる。
【００３９】
図３は、カーネルモードコンポーネントの更新に関連付けられた要求をインテグリティマネージャにより受信し、および、リブートすること無く、カーネルモードコンポーネントをアンロードし、カーネルモードコンポーネントの更新バージョンをロードする、一例のプロセスを例示する。プロセス３００は、３０２にて、カーネルモードコンポーネントに代わって、コンピューティング装置のカーネルモードコンポーネントに関連付けられたインテグリティマネージャにより、オペレーティングシステムフックを登録すること、を含む。３０４にて、インテグリティマネージャが、オペレーティングシステムフックに関連付けられたイベントを、カーネルモードコンポーネントに中継する。
【００４０】
３０２から３０４に示される動作に加えて、または代替として、インテグリティマネージャは、３０６にて、カーネルモードコンポーネントに代わってスレッドを生成する要求を受け取り、３０８にて、スレッドの結果をカーネルモードコンポーネントに提供する。
【００４１】
３０２から３０４、または３０６から３０８に示される動作の、どちらかもしくは両方に加えて、または代替として、インテグリティマネージャが、３１０にて、カーネルモードコンポーネントの状態マネージャの状態を保持する。状態マネージャは、レジストリキーおよびファイルの操作、および、カーネルモードコンポーネントのメモリ割り当て、を保持する。
【００４２】
３１２にて、カーネルモードコンポーネントが、更新されたカーネルモードコンポーネント実行ファイルなどの、カーネルモードコンポーネントの少なくとも１つのコンポーネントの更新を受け取る。カーネルモードコンポーネントは、次いで、インテグリティマネージャが、カーネルモードコンポーネントのリブートレスな更新を管理することを要求し、インテグリティマネージャが、３１４にて、要求を受け取る。３１６にて、次いで、インテグリティマネージャが、コンピューティング装置をリブートすること無く、カーネルモードコンポーネントの少なくとも１つのコンポーネントをアンロードする。３１６ａにて、アンロードは、コンピューティング装置のオペレーティングシステムが、カーネルモードコンポーネントのコンポーネント（例えば、カーネルモードコンポーネント実行ファイル）をアンロードする、ことを要求することを含む。３１８にて、カーネルモードコンポーネントのコンポーネントがアンロードされる間、インテグリティマネージャが、３０２にて登録されたオペレーティングシステムフックに関連付けられたイベントのログをとる。３２０にて、インテグリティマネージャが、カーネルモードコンポーネントのコンポーネントの更新バージョンをロードし、これは、３１２にてカーネルモードコンポーネントが受け取った更新であってもよいし、受け取った更新を含んでもよい。３２０ａにて、ロードは、カーネルモードコンポーネントの更新バージョンをロードするオペレーティングシステムロード機能を起動することを含んでもよい。３２２にて、ロードが失敗した場合、インテグリティマネージャが、カーネルモードコンポーネントのコンポーネントの、アンロードしたバージョンをリロードする。
【００４３】
次いで、３２４にて、インテグリティマネージャが、状態マネージャの状態を用いて、更新されたカーネルモードコンポーネントを初期化する。
【００４４】
３２６にて、インテグリティマネージャが、カーネルモードコンポーネントがアンロードされる間にログをとったイベントを、更新されたカーネルモードコンポーネントに配信する。
【００４５】
３２８にて、インテグリティマネージャが、インテグリティマネージャは更新されるべきであると判定し、コンピューティング装置をリブートする。
【００４６】
図４は、エージェントまたはシステムによるアクションに応答して発生した既知のリアクションを判定すること、および、発生しなかった場合には、修復アクションを実行すること、または、リモートセキュリティサービスに通知することにより、カーネルモードコンポーネントのインテグリティを判定する一例のプロセスを例示する。プロセス４００は、４０２にて、コンピューティング装置のカーネルモードコンポーネントに関連付けられたインテグリティマネージャにより、カーネルモードコンポーネントが非アクティブであるかどうかを判定することを含む。
【００４７】
４０４にて、カーネルモードコンポーネントが非アクティブであるという判定に応答して、または、いずれのそのような判定が無くても、インテグリティマネージャが、カーネルモードコンポーネントのインテグリティを判定する。この判定は、４０６にて、カーネルモードコンポーネントに、既知のリアクションに関連付けられたアクションを実行させること、または、既知のリアクションに関連付けられたシステムアクションが発生したことを検出すること、を含む。４０８にて、インテグリティマネージャは、既知のリアクションが発生したかどうかを判定する。既知のリアクションが発生しなかった場合、インテグリティマネージャは、４１０にて修復アクション、または、４１２にてリモートセキュリティサービスへの通知、のどちらかまたは両方を行う。
【００４８】
いくつかの実施形態において、アクションはイベントを生成することを含み、既知のリアクションはイベントの生成、およびイベントを処理することを含む。インテグリティマネージャは、次いで、４０８におけるイベントが生成されたが処理されなかったという判定に応答して、４１０にて第１の修復アクションを実行するか、または、４１２にて第１の通知をリモートセキュリティサービスに送る。インテグリティマネージャは、４０８におけるイベントが生成されなかったという判定に応答して、４１０にて第２の修復アクションを実行するか、または、４１２にて第２の通知をリモートセキュリティサービスに送る。さらに、あるいは代わりに、インテグリティマネージャは、４０８にて、イベントが生成されたが処理されなかったという判定をし、それに応答して、４１０にて修復アクションを実行してもよく、修復アクションは、新しいワーカスレッドを生成すること、イベントキューをフラッシュすること、またはカーネルモードコンポーネントをリセットすること、を含む。
【００４９】
４１４にて、インテグリティマネージャが、カーネルモードコンポーネントのデータストアのインテグリティを判定する。この判定では、４１６にてデータストアのインテグリティが不正アクセスされたかどうかを判定し、不正アクセスされた場合に、４１８にてデータストアからデータを削除すること、または、４２０にてデータストアの状態を保存し、新しいデータストアを作成し、および新しいデータストアを保存した状態に初期化すること、のうちのどちらかまたは両方を行う。
【００５０】
図５は、コンピューティング装置リストが、カーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現を含むと判定し、リストから表現を除去するか、または、リストの内容を求める要求への応答から表現を除去する、一例のプロセスを例示する。プロセス５００は、５０２にて、コンピューティング装置のカーネルモードコンポーネントに関連付けられたインテグリティマネージャにより、コンピューティング装置リストが、コンピューティング装置のカーネルモードコンポーネントに関連付けられたコンポーネントまたは接続の表現を含むと判定すること、を含む。コンポーネントは、ドライバ、オペレーティングシステムフック、ディレクトリ、またはレジストリキーであってもよく、コンピューティング装置リストは、ドライバのリスト、ネットワーク接続のリスト、オペレーティングシステムフックのリスト、ディレクトリのリスト、またはレジストリキーのリストであってもよい。
【００５１】
５０４にて、インテグリティマネージャが、コンポーネントまたは接続の表現を、コンピューティング装置リストから除去する。
【００５２】
５０４における除去の代替として、インテグリティマネージャは、５０６にて、コンピューティング装置リストの内容を求める要求に対する応答を傍受し、５０８にて、応答からコンポーネントまたは接続の表現を除去する。
【００５３】
５０４における除去および５０６における応答傍受の代替として、インテグリティマネージャは、５０６にて、カーネルモードコンポーネントに関連付けられたディレクトリを開く要求を傍受し、５１０にて、ディレクトリが存在しないかまたは利用可能でないことを応答する。
【００５４】
結論
発明の主題が、構造的特徴および／または方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲において定義される発明の主題が、特定の説明された特徴または行為に、必ずしも限定されないことを、理解されたい。むしろ、特定の特徴および行為は、特許請求の範囲を実装する例示の形式として開示される。
【図１】
2017508220.tif 000003
【図２】
2017508220.tif 000004
【図３】
2017508220.tif 000005
【図４】
2017508220.tif 000006
【図５】
2017508220.tif 000007
【国際調査報告】
2017508220.tif 000008
2017508220.tif 000009