(57)【要約】ホットパッチ機構に関連付けられたコンポーネントローダに、実行されるとユーザーモードプロセス、スレッドまたは保持リファレンスを生成するユーザーモードコンポーネントを、実行させる技術が開示される。コンポーネントは、コンポーネントローダにホットパッチデータが無いことを表示し、コンポーネントローダにコンポーネントをアンロードさせる。ある実装では、カーネルモードモジュールは、ホットパッチ機構に対するコンポーネントに、ゼロにセットされたコンポーネントセットのエントリーポイントおよびコンポーネントローダのためのホットパッチデータを提供する。パッチ機構は、ホットパッチデータを適用してコンポーネントローダを変更することで、コンポーネントローダがコンポーネントのセクションオブジェクトの実行権を要求するようにできる。次いで、カーネルモードモジュールは、エントリーポイントを設定することで、コンポーネントが実行可能になり、セクションオブジェクトおよびコンポーネントをホットパッチ機構に提供し、コンポーネントローダにコンポーネントを実行させる。
2016519373.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
カーネルモードモジュールと、
を備えたシステムであって、
前記カーネルモードモジュールは、前記プロセッサによって実行されると、
セクションオブジェクトを作成するステップと、
前記セクションオブジェクトをダイナミックリンクライブラリと関連付けるステップと、
ホットパッチ機構へ前記ダイナミックリンクライブラリと関連付けられた前記セクションオブジェクトを提供する第１の提供するステップであり、前記ダイナミックリンクライブラリは、前記ホットパッチ機構に関連付けられたコンポーネントローダのためのホットパッチデータを含み、前記ホットパッチデータは、適用されると、前記コンポーネントローダを修正して、前記コンポーネントローダに、前記セクションオブジェクトの実行の権利を要求させる、第１の提供するステップと、
前記ダイナミックリンクライブラリが実行可能となるよう、前記ダイナミックリンクライブラリのエントリポイントを設定するステップと、
前記ホットパッチ機構へ前記セクションオブジェクトを提供し、前記コンポーネントローダに前記ダイナミックリンクライブラリを実行させる、第２の提供するステップと、
を実行し、
前記ダイナミックリンクライブラリは、実行されると、
ユーザモードのプロセス、スレッド、または保持リファレンスを作成するステップと、
前記作成するステップの後に、前記ダイナミックリンクライブラリがホットパッチデータを含んでいないことを前記コンポーネントローダに表示し、前記コンポーネントローダに前記ダイナミックリンクライブラリをアンロードさせるステップと
を実行する、ことを特徴とするシステム。
【請求項２】
前記設定するステップの前に、前記ダイナミックリンクライブラリの前記エントリポイントはゼロに設定されている、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記エントリポイントを設定するステップは、
前記ダイナミックリンクライブラリのプログラム実行ヘッダの前記エントリポイントを、前記コンポーネントローダによって遭遇されると、前記コンポーネントローダに前記ダイナミックリンクライブラリを実行させるルーチンに設定するステップを含む、ことを特徴とする請求項１に記載のシステム。
【請求項４】
プロセッサと、
前記プロセッサにより実行されると、ホットパッチ機構に実行可能ユーザモードコンポーネントを提供するカーネルモードモジュールと、
を備えたシステムであって、
前記実行可能ユーザモードコンポーネントは、前記ホットパッチ機構に関連付けられたコンポーネントローダにより前記実行可能ユーザモードコンポーネントがロードされ、前記実行可能ユーザモードコンポーネントが実行されることになる、エントリポイントを含み、前記実行可能ユーザモードコンポーネントの実行は、
前記カーネルモードに関連付けられたユーザモードのプロセス、スレッド、または保持リファレンスを作成するステップと、
前記作成するステップの後に、前記実行可能ユーザモードコンポーネントがホットパッチデータを含んでいないことを前記コンポーネントローダに表示し、前記コンポーネントローダに前記実行可能ユーザモードコンポーネントをアンロードさせるステップと、
を含む、ことを特徴とするシステム。
【請求項５】
前記実行可能ユーザモードコンポーネントはダイナミックリンクライブラリである、ことを特徴とする請求項４に記載のシステム。
【請求項６】
前記実行可能ユーザモードコンポーネントは、標的のプロセスのシステムモジュールの実行中のインスタンスのためのパッチとして、前記ホットパッチ機構へ提供される、ことを特徴とする請求項４に記載のシステム。
【請求項７】
前記エントリポイントが前記実行可能ユーザモードコンポーネントのプログラム実行ヘッダに含まれ、前記コンポーネントローダによって遭遇されると、前記コンポーネントローダに前記実行可能ユーザモードコンポーネントを実行させるルーチンに設定されるステップを含む、ことを特徴とする請求項４に記載のシステム。
【請求項８】
前記カーネルモードモジュールは、前記実行可能ユーザモードコンポーネントのためのイメージファイルバックドセクションオブジェクトを作成し、前記イメージファイルバックドセクションオブジェクトを前記ホットパッチ機構へ提供し、前記イメージファイルバックドセクションオブジェクトは実行の権利と関連付けされている、ことを特徴とする請求項４に記載のシステム。
【請求項９】
前記カーネルモードモジュールおよび実行可能ユーザモードコンポーネントは、セキュリティエージェントと関連付けられており、前記ユーザモードのプロセス、スレッド、または保持リファレンスは、前記セキュリティエージェントに対して、ユーザモードの能力を提供する、ことを特徴とする請求項４に記載のシステム。
【請求項１０】
コンピュータで実行される方法であって、
ホットパッチ機構へユーザモードコンポーネントと関連付けられたセクションオブジェクトを提供する第１の提供するステップであり、前記ユーザモードコンポーネントは、前記ホットパッチ機構と関連付けられたコンポーネントローダのためのホットパッチデータを含み、前記ホットパッチデータは、適用されると、前記コンポーネントローダを修正して、前記コンポーネントローダに、前記セクションオブジェクトの実行の権利を要求させる、第１の提供するステップと、
前記ユーザモードコンポーネントが実行可能ユーザモードコンポーネントとなるよう、前記ユーザモードコンポーネントのエントリポイントを設定するステップと、
前記ホットパッチ機構へ前記セクションオブジェクトを提供し、前記コンポーネントローダに前記ユーザモードコンポーネントを実行させる、第２の提供するステップと、
を含み、
前記ユーザモードコンポーネントを実行することは、
前記ユーザモードコンポーネントにより、ユーザモードのプロセス、スレッド、または保持リファレンスを作成するステップと、
前記作成するステップの後に、前記ユーザモードコンポーネントにより、前記ユーザモードコンポーネントがホットパッチデータを含んでいないことを前記コンポーネントローダに表示し、前記コンポーネントローダに前記ユーザモードコンポーネントをアンロードさせるステップと
を
、を特徴とする方法。
【請求項１１】
前記ユーザモードコンポーネントはダイナミックリンクライブラリである、ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記セクションオブジェクトを作成するステップおよび前記セクションオブジェクトを前記コンポーネントと関連付けるステップとをさらに備える、ことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記セクションオブジェクトはページファイルバックドセクションオブジェクトである、ことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記コンポーネントローダは、前記第２の提供することに応答して、前記セクションオブジェクトのための実行の権利を要求する
、ことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記設定するステップの前に、前記コンポーネントの前記エントリポイントはゼロに設定されている、ことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記エントリポイントを設定するステップは、前記ユーザモードコンポーネントのプログラム実行ヘッダ中の前記エントリポイントを、前記コンポーネントローダによって遭遇されると、前記コンポーネントローダに前記ユーザモードコンポーネントを実行させるルーチンに設定するステップを含む、ことを特徴とする請求項１０に記載の方法。
【請求項１７】
前記ホットパッチ機構は、前記ホットパッチデータを用いて前記コンポーネントローダのバイナリの少なくとも一部に微少な修正を行う、ことを特徴とする請求項１０に記載の方法。
【請求項１８】
ユーザモードコンポーネントがホットパッチデータを含んでいないことの前記表示は、ユーザモードコンポーネントがホットパッチデータを含んでいるかどうかに拠らない、ことを特徴とする請求項１０に記載の方法。
【請求項１９】
前記ユーザモードコンポーネント、および前記ユーザモードのプロセス、スレッド、または保持リファレンスは、セキュリティエクスプロイトと関連付けられている、ことを特徴とする請求項１０に記載の方法。
【請求項２０】
前記セキュリティエクスプロイトのカーネルモードモジュールが、前記第１の提供するステップ、前記設定するステップ、および前記第２の提供するステップを行う、ことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ホットパッチ機構を利用した実行可能コンポーネント投入に関する。
【背景技術】
【０００２】
本願は、２０１３年４月１９日に提出された「ホットパッチ機構を利用した実行可能コンポーネント投入（Ｅｘｅｃｕｔａｂｌｅ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｊｅｃｔｉｏｎ  Ｕｔｉｌｉｚｉｎｇ  Ｈｏｔｐａｔｃｈ  Ｍｅｃｈａｎｉｓｍｓ）」と題する、米国特許出願第１３／８６６，９６８号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【０００３】
日常生活の多くの部分をインターネットの使用が占めるようになるに連れて、システムリソース、データ、および個人情報を盗むまたは壊すセキュリティエクスプロイト（exploite）が、ますます問題となっている。政府および企業が、これらのセキュリティエクスプロイトに関係する侵入や窃盗を防ぐことに、かなりの資源を注ぎ込む。セキュリティエクスプロイトは、コンピュータウィルス、ワーム、トロイの木馬、スパイウェア、キーストロークロガー、アドウェア、およびルートキット、などの多くの形式で入り込む。これらのエクスプロイトは、スピアフィッシング電子メール、クリッカブルリンク、文書、実行可能ファイル、またはアーカイブ、などの多数の機構で、またはこれらを介して配信される。セキュリティエクスプロイトが引き起こす脅威には、サイバーテロまたは産業スパイと表現される深刻なものがある。
【０００４】
多くのセキュリティエクスプロイトが、オペレーティングシステムカーネルの脆弱性を攻撃する。それらのエクスプロイトが、カーネル内にエクスプロイト自体を一旦確立してしまうと、エクスプロイトは、多数の機構のいずれかを使用して、ユーザモードのプロセスまたはスレッドを作成する。ユーザモードのプロセスまたはスレッドは、エクスプロイトがユーザモードで動作することを許可してしまい、これにより、エクスプロイトに対して大幅な動作の自由を与えてしまう。しかし、これらの機構には困難がある。例えば、エクスプロイトは、ダイナミックリンクライブラリ（ＤＬＬ）を含み、ユーザモードのプロセスに強制し、またはだまして、このＤＬＬをロードさせようとすることができる。これには、相当なプログラミングの努力が必要とされるが、エクスプロイトが、オペレーティングシステムのローダに頼ることができないためである。別の例では、エクスプロイトは、ＤＬＬをディスクに書き込み、ユーザモードのプロセスに、ＤＬＬをロードさせることができるが、そのようなディスクへの書き込みは、セキュリティソフトウェアによって検出され得る。
【発明の概要】
【０００５】
詳細な説明が、添付の図面を参照して記載される。図面では、参照番号の最左の数字が、その参照番号が最初に現れる図面を特定する。同じ参照番号を異なる図面で使用することで、同様または同一の項目または特徴を示す。
【図面の簡単な説明】
【０００６】
【図１】ネットワークを介して、敵対システムおよびセキュリティサービスに接続される、一例のコンピューティングデバイスを示す図である。コンピューティングデバイスは、コンポーネントローダをホットパッチして、コンポーネントローダに、ユーザモードコンポーネント用のセクションオブジェクトに関する実行の権利を要求させ、そして、コンポーネントローダに、そのユーザモードコンポーネントを実行させ、ユーザモードコンポーネントが、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ための機能を有して構成される。
【図２】一例の処理を示す図である。この処理は、コンピューティングデバイスが、コンポーネントローダをホットパッチして、コンポーネントローダに、ユーザモードコンポーネント用のセクションオブジェクトに関する実行の権利を要求させ、そして、コンポーネントローダに、そのユーザモードコンポーネントを実行させ、ユーザモードコンポーネントが、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ためのものである。
【図３】一例の処理を示す図である。この処理は、ホットパッチ機構と関連付けされたコンポーネントローダに、ユーザモードコンポーネントを実行させ、ユーザモードコンポーネントが、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ためのものである。
【発明を実施するための形態】
【０００７】
本開示では、ホットパッチ機構と関連付けされたコンポーネントローダにユーザモードコンポーネントを実行させ、ユーザモードコンポーネントは、実行されると、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ための技術について、部分的に、説明する。ユーザモードコンポーネントはさらに、コンポーネントローダに対して、ユーザモードコンポーネントにはホットパッチデータが無いことを表示（indicate）し、コンポーネントローダに、ユーザモードコンポーネントをアンロードさせることができる。
【０００８】
いくつかの実装において、コンピューティングデバイスは、コンピューティングデバイスのオペレーティングシステムカーネルの脆弱性を標的にする、セキュリティエクスプロイトに影響を受けることがある。カーネルモードで起動すると、セキュリティエクスプロイトのモジュールは、多数の動作を行い、ユーザモードで、セキュリティエクスプロイト用のプロセス、スレッド、または保持リファレンスを作成することができる。いかなるコンポーネントも、ディスクに書き込まれることを回避するために、セキュリティエクスプロイトのカーネルモードモジュールが、ユーザモードモジュール用のＤＬＬなどの、カーネルモードモジュールのユーザモードコンポーネント向けのページファイルバックド（ｐａｇｅｆｉｌｅ−ｂａｃｋｅｄ）セクションオブジェクトを、最初に作成することができるセクションオブジェクトは、読み込み／書き込みの権利および実行の権利と関連付けされてもよいが、必ずしもデフォルトで実行の権利を受け取らなくてもよく、何故なら、コンポーネントが、ディスクに格納されておらず、従って、イメージファイルバックド（image file-backed）セクションオブジェクトとしてロードされないからである。システムコンポーネントローダが、実行の権利を要求しないため、実行の権利与えられない。実行の権利を提供するセクションオブジェクトについてマッピングを取得するために、カーネルモードモジュールは、ユーザモードコンポーネント用のセクションオブジェクトを、コンピューティングデバイスのホットパッチ機構に提供し、また、セクションオブジェクトによって表されるユーザモードコンポーネントが、ホットパッチ機構と関連付けされたＤＬＬローダなどの、コンポーネントローダ用のホットパッチデータを含むこと表示。そして、ホットパッチ機構が、コンポーネントローダ実行中のバイナリを、ホットパッチデータを用いて修正する。ホットパッチデータは、コンポーネントローダを修正して、コンポーネントローダが、セクションオブジェクトに関する実行の権利を、オペレーティングシステムカーネルに要求することができるようにする。
【０００９】
ホットパッチ機構を呼び出した後、カーネルモードモジュールは、ユーザモードコンポーネントのエントリポイントを設定して、ユーザモードコンポーネントが、実行可能ユーザモードコンポーネントとなるようにすることができる．前もって、エントリポイントをゼロに設定して、ホットパッチ機構が、ユーザモードコンポーネントを実行可能ファイルとして扱うのではなく、ホットパッチとして使用するように、してもよい。例えば、カーネルモードモジュールは、エントリポイントを、コンポーネントローダと遭遇すると、コンポーネントローダにユーザモードコンポーネントを実行させるＤＬＬＭａｉｎなどの、ルーチンに設定することができる。エントリポイントは、ユーザモードコンポーネントのプログラム実行ヘッダに、配置してもよい。
【００１０】
そして、カーネルモードモジュールは、ホットパッチ機構の２回目の呼び出しをし、セクションオブジェクトおよびユーザモードコンポーネントを、ホットパッチとして用意してもよい。ユーザモードコンポーネントは、モジュールが、対象のプロセスによって既にロードされていれば、任意のモジュール用のホットパッチとして提供されてよい。次に、コンポーネントローダは、セクションオブジェクトに関する実行の権利を、カーネルに要求し、ユーザモードコンポーネントをロードする。ユーザモードコンポーネントをロードすると、コンポーネントローダは、エントリポイントに遭遇し、ユーザモードコンポーネントを実行する。ユーザモードコンポーネントは、実行されると、セキュリティエクスプロイト用の、ユーザモードのプロセス、スレッド、または保持リファレンスを作成し、次に、コンポーネントローダに対して、ユーザモードコンポーネントがホットパッチデータを持っていないことを表示する。ユーザモードコンポーネントにはホットパッチデータが無いという表示（indication）を受け取ると、コンポーネントローダは、ユーザモードコンポーネントをアンロードする。しかし、これらの操作の結果、セキュリティエクスプロイトが、ここで、ユーザモードのプロセス、スレッド、または保持リファレンスを持つことになる。
【００１１】
種々の実施形態において、セキュリティサービスが、セキュリティエージェントをコンピューティングデバイスに提供することができ、セキュリティエージェントは、カーネルモードで起動することができる。ユーザインターフェースおよび検出能などの多くの理由から、セキュリティサービスは、ユーザからの支援が無い状態で、かつ、検出されること無く、プロセス、スレッド、または保持リファレンスをユーザモードで起動しようと模索する。この目的を達成するために、セキュリティエージェントのカーネルモードモジュールは、その関連付けされたコンピューティングデバイスのホットパッチ機構を呼び出すことができ、イメージファイルバックドセクションオブジェクトを実行の権利と共に、ホットパッチ機構に提供することができる。セクションオブジェクトは、カーネルモードモジュールの実行可能ユーザモードコンポーネントと関連付けされてもよく、該コンポーネントはそのモジュールと共に、コンピューティングデバイスのディスクに格納される。実行可能ユーザモードコンポーネントのプログラム実行ヘッダには、ＤＬＬＭａｉｎなどのルーチンに設定されたエントリポイントを含まれてもよい。ホットパッチ機構と関連付けされたコンポーネントローダは、次に、実行可能ユーザモードコンポーネントをロードし、エントリポイントに遭遇し、実行可能ユーザモードコンポーネントを実行することになる。実行可能ユーザモードコンポーネントは、実行されると、セキュリティサービス用の、ユーザモードのプロセス、スレッド、または保持リファレンスを作成し、次に、コンポーネントローダに対して、実行可能ユーザモードコンポーネントがホットパッチデータを持っていないことを表示する。実行可能ユーザモードコンポーネントにはホットパッチデータが無いという表示を受け取ると、コンポーネントローダは、実行可能ユーザモードコンポーネントをアンロードする。
【００１２】
図１は、ネットワーク１０８を介して敵対システム１０４およびセキュリティサービス１０６に接続される、一例のコンピューティングデバイス１０２を示す。コンピューティングデバイス１０２、敵対システム１０４、およびセキュリティサービス１０６は、それぞれ、ＰＣ、ラップトップコンピュータ、サーバ、サーバファーム、メインフレーム、タブレットコンピュータ、ワークステーション、電気通信デバイス、ＰＤＡ、メディアプレーヤ、メディアセンターデバイス、ＰＶＲ、テレビ、電子書籍リーダー、セットトップボックス、カメラ、ビデオゲーム機、キオスク、ゲームデバイス、プロセッサ、コンピューティングデバイスに含まれる内蔵コンポーネント、家電製品、車載用電子デバイス、ゲームデバイス、またな任意の他の種類のデバイス、などのコンピューティングデバイスであってもよく、またはこれらを含んでもよい。
【００１３】
種々の実施形態において、敵対システム１０４は、コンピューティングデバイス１０２の脆弱性を対象とする任意のセキュリティエクスプロイトに関連するものであってよい。敵対システム１０４は、セキュリティエクスプロイトを、コンピューティングデバイス１０２に、何らかの様式で与えることができる。例えば、敵対システム１０４は、セキュリティエクスプロイトを、データパケットを介して通信することができ、コンピューティングデバイス１０２のオペレーティングシステムのカーネルの脆弱性を攻撃することができる。本明細書において説明するように、セキュリティエクスプロイトは、ユーザモードのプロセス、スレッド、または保持リファレンスを、コンピューティングデバイス１０２で作成することができる。ユーザモードのプロセス、スレッド、または保持リファレンスを作成すると、セキュリティエクスプロイトは、敵対システム１０４に、ユーザモードのプロセス、スレッド、または保持リファレンスを通知することができ、敵対システム１０４は、ユーザモードのプロセス、スレッド、または保持リファレンスと通信することができる。そして、いくつかのインスタンスにおいて、敵対システム１０４は、ユーザモードのプロセス、スレッド、または保持リファレンスをリモートで制御することができる。
【００１４】
さらなる実施形態において、セキュリティサービス１０６が、任意の種類のセキュリティサービスであってもよい。セキュリティサービス１０６は、セキュリティエージェントをコンピューティングデバイス１０２にインストールすることができ、セキュリティエージェントは、セキュリティサービスと通信して、脅威検出、システム監視、および脅威改善サービスを提供することができる。セキュリティエージェントのモジュールが、カーネルモードで作動することができる一方、セキュリティエージェントもまた、ユーザモードのプロセス、スレッド、または保持リファレンスを作成して、ユーザモードのプロセスを監視することができる。一例のセキュリティエージェントおよびセキュリティサービス１０６は、２０１２年６月８日に提出された「カーネルレベルのセキュリティエージェント（Ｋｅｒｎｅｌ−Ｌｅｖｅｌ  Ｓｅｃｕｒｉｔｙ  Ａｇｅｎｔ）」と題する米国特許出願第１３／４９２，６７２号に記載される。
【００１５】
いくつかの実施形態において、ネットワーク１０８は、コンピューティングデバイス１０２、敵対システム１０４、およびセキュリティサービス１０６を接続する任意の種類のネットワークとすることができる。また、ネットワーク１０８は、コンピューティングデバイス１０２、敵対システム１０４、およびセキュリティサービス１０６のいずれかを、他のデバイスに接続させることができる。ネットワーク１０８は、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、またはインターネット、などの任意のタイプのネットワークであってもよい。また、ネットワーク１０８は、公衆ネットワークでも、私的ネットワークでもあってよく、公衆ネットワークと私的ネットワークの両方を含んでもよい。さらに、ネットワーク１０８は、有線ネットワークでも、無線ネットワークでもあってよく、有線ネットワークと無線ネットワークの両方を含んでもよい。ネットワーク１０８は、インターネットプロトコル（ＩＰ）、他のパケットベースのプロトコル、または他のプロトコル、などの任意の１つまたは複数の通信用プロトコルを利用することができる。加えて、ネットワーク１０８は、ルータ、基地局、アクセスポイント、ファイアウォール、またはゲートウェイデバイス、などの任意の数の媒介デバイスを備えることができる。
【００１６】
コンピューティングデバイス１０２は、セキュリティエクスプロイトによって標的にされ、セキュリティサービスによって監視され、または，両者によって標的にされ監視されることもある、デバイスであり得る。図１は、コンピューティングデバイス１０２のいくつかのコンポーネントの例を示すが、コンピューティングデバイス１０２には、オペレーティングシステム、システムバス、入力／出力コンポーネント、などの他の従来のコンポーネントが含まれてもよいことは、理解されたい。また、コンピューティングデバイス１０２は、敵対システム１０４のセキュリティエクスプロイトに関連するモジュールおよび他のコンポーネント、ならびに、セキュリティサービス１０６に関連するモジュールおよび他のコンポーネント、を含むものとして示されるが、コンピューティングデバイス１０２が、一方または他方のモジュールおよびコンポーネントを含むだけでもよいことは理解されたい。
【００１７】
コンピューティングデバイス１０２には、プロセッサ１１０、ネットワークインターフェース１１２、メモリ１１４、および、永続記憶装置１１６、が含まれる。プロセッサ１１０には、任意の１つまたは複数の中央処理装置またはグラフィック処理ユニットが含まれてもよい。ネットワークインターフェース１１２は、セルラーネットワークラジオ無線、ＷｉＦｉネットワーク、短距離ネットワーク（例えば、ブルートゥース、ＩＲ等）などのネットワークへの、有線接続および無線接続の両方をサポートすることができる。
【００１８】
メモリ１１４は、非一時的コンピュータ可読記憶媒体の一例であり、ＲＡＭ（ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）などの揮発性メモリを含むことができる。永続記憶装置１１６（本明細書においては、コンピューティングデバイス１０２のディスクとも称される）は、非一時的コンピュータ可読記憶媒体の別の例であり、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、フラッシュメモリもしくは他のメモリ技術、または、コンテンツ、すなわち、コンピューティングデバイス１０２によるアクセスのためのアプリケーション、を記憶するために使用可能な任意の他の媒体、が含まれてよいが、これに限定されない。
【００１９】
図示するように、メモリ１１４は、カーネルモードで作動するエクスプロイトモジュール１１８を格納する。エクスプロイトモジュール１１８は、敵対システム１０４からの受け取るセキュリティエクスプロイトのモジュールであり得る。上記で触れたように、エクスプロイトモジュール１１８は、データパケットまたは任意の他の種類の機構を介して、配信されることもある。セキュリティエクスプロイトを配信するための機構は、多様であり、追加の脆弱性が発見されるのに応じて、進化を続ける。エクスプロイトモジュール１１８はまた、セキュリティエクスプロイトのユーザモードモジュール用のＤＬＬなどの、ユーザモードエクスプロイトコンポーネント１２０と関連付けされてもよい。エクスプロイトモジュール１１８が、一旦コンピューティングデバイス１０２上で作動して、そのメモリ１０８に格納されると、エクスプロイトモジュール１１８は、ユーザモードエクスプロイトコンポーネント１２０向けのページファイルバックドセクションオブジェクト１２２を作成する。エクスプロイトモジュール１１８は、ページファイルバックドセクションオブジェクト１２２を作成して、ユーザモードエクスプロイトコンポーネント１２０が、コンピューティングデバイス１０２の永続記憶装置に書き込まれることを回避する。ページファイルバックドセクションオブジェクト１２２は、読み込み／書き込みの権利と関連付けされ得るが、実行の権利とは関連付けされない。これは、コンピューティングデバイス１０２によって提供される保護の形態であってよく、永続記憶装置１０８に格納されていないコンポーネントの実行を防ぐことができる。ユーザモードエクスプロイトコンポーネント１２０（ＤＬＬまたは他の種類のエクスプロイトコンポーネントのいずれかが含まれてよい）は、エントリポイントが無いようにすることや、そのエントリポイントがゼロに設定されるようにすることができ、ユーザモードエクスプロイトコンポーネント１２０の実行を防ぐことができる。そのようなエントリポイントは、ユーザモードエクスプロイトコンポーネント１２０のプログラム実行ヘッダに配置されてもよい。ユーザモードエクスプロイトコンポーネント１２０には、ホットパッチデータが含まれてもよい。
【００２０】
エクスプロイトモジュール１１８が、一旦セクションオブジェクト１２２を作成してしまうと、エクスプロイトモジュール１１８は、コンピューティングデバイス１０２のホットパッチ機構１２４を起動して、コンポーネントローダ１２６の実行中のインスタンスをパッチすることができる。ホットパッチ機構１２４を起動する際、エクスプロイトモジュール１１８は、ユーザモードエクスプロイトコンポーネント１２０をラップした状態のセクションオブジェクト１２２を、ホットパッチ機構１２４に与えることができる。一例のホットパッチ機構は、「実行中のコンピュータシステム上における、使用中機能のパッチ（Ｐａｔｃｈｉｎｇ  ｏｆ  Ｉｎ−Ｕｓｅ  Ｆｕｎｃｔｉｏｎｓ  ｏｎ  ａ  Ｒｕｎｎｉｎｇ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ）」と題する２０１０年８月２４日に発行された、米国特許第７，７８４，０４４号に、さらに詳細に説明される。コンポーネントローダ１２６は、ＤＬＬローダホットパッチ機構１２４と関連付けされてもよい。ホットパッチ機構１２４は、コンポーネントローダ１２６を、アセンブリコードレベルで修正することができ、ホットパッチデータに含まれる命令を用いて、コンポーネントローダ１２６の命令のアトミックな変更を行う。修正の結果、コンポーネントローダ１２６は、セクションオブジェクト１２２などの、ユーザモードコンポーネント（例えば、ＤＬＬ）と関連付けされたセクションオブジェクト、に関する実行の権利を要求することが可能になる。
【００２１】
いくつかの実施形態において、ホットパッチ機構１２４を起動後、エクスプロイトモジュール１１８は、ユーザモードエクスプロイトコンポーネント１２０を修正して、ユーザモードエクスプロイトコンポーネント１２０のエントリポイントを、ＤＬＬＭａｉｎなどのルーチンに設定する。一実施形態において、エクスプロイトモジュール１１８はまた、ユーザモードエクスプロイトコンポーネント１２０から、ホットパッチデータを削除、または他の方法で覆い隠すことができる。
【００２２】
ユーザモードエクスプロイトコンポーネント１２０のエントリポイントを設定すると、エクスプロイトモジュール１１８は、ホットパッチ機構１２４を再度起動することができ、ユーザモードエクスプロイトコンポーネント１２０をラップした状態のセクションオブジェクト１２２を提供する。エクスプロイトモジュール１１８は、コンポーネントローダ１２６の実行中のインスタンスの更新として、または、標的のプロセス内のいずれかのシステムモジュールの実行中のインスタンスの更新として、セクションオブジェクト１２２およびユーザモードエクスプロイトコンポーネント１２０を提供することができる。そして、コンポーネントローダ１２６は、エクスプロイトＤＬＬ１２０をロードし、セクションオブジェクトに関する実行の権利１２２を、コンピューティングデバイス１０２のオペレーティングシステムカーネルに要求する。実行の権利があると、ユーザモードエクスプロイトコンポーネント１２０は、コンピューティングデバイス１０２をクラッシュすることなく、実行されることになる。ユーザモードエクスプロイトコンポーネント１２０をロードすると、コンポーネントローダ１２６は、ユーザモードエクスプロイトコンポーネント１２０を処理し、エントリポイントに遭遇する。エントリポイントに遭遇したことに応じて、コンポーネントローダ１２６は、ユーザモードエクスプロイトコンポーネント１２０を実行する。
【００２３】
種々の実施形態において、ユーザモードエクスプロイトコンポーネント１２０は、実行されると、最初に、コンピューティングデバイス１０２のユーザモードで作動する、プロセス、スレッド、または保持リファレンス１２８を作成する。そして、プロセス、スレッド、または保持リファレンス１２８が、エクスプロイトモジュール１１８または敵対システム１０４のいずれかまたは両方と通信して、セキュリティエクスプロイトが求めるユーザモードアクセスを提供することができる。プロセス、スレッド、または保持リファレンス１２８を作成した後、ユーザモードエクスプロイトコンポーネント１２０は、ユーザモードエクスプロイトコンポーネント１２０にはホットパッチデータが無いことを、コンポーネントローダ１２６に表示する。ユーザモードエクスプロイトコンポーネント１２０は、そのような表示を、ユーザモードエクスプロイトコンポーネント１２０にホットパッチデータが、実際に無いが、無いかどうか係らず、コンポーネントローダ１２６に提供することができる。表示を受け取ると、コンポーネントローダ１２６は、ユーザモードエクスプロイトコンポーネント１２０をアンロードする。
【００２４】
図１にさらに示すように、メモリ１１４は、セキュリティエージェントモジュール１３０ａを格納し、永続記憶装置１１６が、セキュリティエージェントモジュールのコピー１３０ｂを格納することができる同様に、メモリ１１４は、セキュリティエージェントモジュール１３０ａのユーザモードエージェントコンポーネント１３２を格納し、永続記憶装置１１６は、ユーザモードエージェントコンポーネントのコピー１３２ｂを格納する。セキュリティエージェントモジュール１３０ａは、セキュリティサービス１０６のエージェントであってよく、コンピューティングデバイス１０２上の操作を監視、検出すおよび改善を行うことができる。セキュリティエージェントモジュール１３０ａは、コンピューティングデバイス上にインストールされてもよく、そのコピー１３０ｂは、永続記憶装置１１６に格納されてもよく、コンピューティングデバイス１０２が稼働中に、起動されてメモリ１１４に格納されてもよい。
【００２５】
いくつかの実施形態において、セキュリティエージェントモジュール１３０ａは、ユーザモードエージェントコンポーネント１３２ａ向けのイメージファイルバックドセクションオブジェクト１３４を作成することができ、また、ユーザーユーザモードエージェントコンポーネントのコピー１３２ｂが、永続記憶装置に格納され、イメージファイルバックドセクションオブジェクト１３４としてロードされるため、セクションオブジェクト１３４は、実行の権利と関連付けされ得る。ユーザモードエージェントコンポーネント１３２ａ（ＤＬＬまたは他の種類のセキュリティエージェントコンポーネントのいずれかが含まれてよい）には、ＤＬＬＭａｉｎなどのルーチンに設定されたエントリポイントが含まれる。そのようなエントリポイントは、ユーザモードエージェントコンポーネント１３２ａのプログラム実行ヘッダに配置されてもよい。
【００２６】
セキュリティエージェントモジュール１３０ａは、ホットパッチ機構を起動することができ、標的のプロセスの１つまたは複数の他のモジュール１３６などの、システムモジュールの実行中のインスタンスの更新として、ユーザモードエージェントコンポーネント１３２をラップした状態のセクションオブジェクト１３４を提供する。次に、コンポーネントローダ１２６が、ユーザモードエージェントコンポーネント１３２ａをロードし、ユーザモードエージェントコンポーネント１３２ａを処理することができ、エントリポイントに遭遇する。エントリポイントに遭遇したことに応じて、コンポーネントローダ１２６は、ユーザモードエージェントコンポーネント１３２ａを実行する。
【００２７】
種々の実施形態において、ユーザモードエージェントコンポーネント１３２ａは、実行されると、最初に、コンピューティングデバイス１０２のユーザモードで作動する、プロセス、スレッド、または保持リファレンス１３８を作成する。そして、プロセス、スレッド、または保持リファレンス１３８が、セキュリティエージェントモジュール１３０ａまたはセキュリティサービス１０６のいずれかまたは両方と通信して、セキュリティエージェント／サービスが求めるユーザモードアクセスを提供することができる。プロセス、スレッド、または保持リファレンス１３８を作成した後、ユーザモードエージェントコンポーネント１３２ａは、ユーザモードエージェントコンポーネント１３２ａにはホットパッチデータが無いことを、コンポーネントローダ１２６に表示する。ユーザモードエージェントコンポーネント１３２ａは、そのような表示を、ユーザモードエージェントコンポーネント１３２ａにホットパッチデータが、実際に無いが、無いかどうか係らず、コンポーネントローダ１２６に提供することができる。表示を受け取ると、コンポーネントローダ１２６は、ユーザモードエージェントコンポーネント１３２ａをアンロードする。
【００２８】
図２および３は、例示の処理２００および３００を示す。これらの処理（および本明細書に記載される各処理）は、論理フロー図として示され、各操作が、ハードウェア、ソフトウェア、またはその組み合わせにおいて実装可能な、一連の操作を表す。ソフトウェアの文脈で、操作は、１つまたは複数プロセッサによって実行されると、列挙された操作を実行する、１つまたは複数コンピュータ−可読記憶媒体に格納されるコンピュータ−実行可能命令を表す。概して、コンピュータ−実行可能命令には、特定の機能を実行する、または、特定の中朝データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれる。操作が記載される順番は、制限するものとして解釈されることは意図されておらず、任意の数の記載される操作が、任意の順番で、および／または、並行して、組み合わせられて処理を実行することができる。
【００２９】
図２は、一例の処理を示す図であり、この処理は、コンピューティングデバイスが、コンポーネントローダをホットパッチして、コンポーネントローダに、ユーザモードコンポーネント用のセクションオブジェクトに関する実行の権利を要求させ、そして、コンポーネントローダに、そのユーザモードコンポーネントを実行させ、ユーザモードコンポーネントが、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ためのものである。処理２００には、２０２にて、カーネルモードモジュールによって、セクションオブジェクトを作成し、セクションオブジェクトを、カーネルモードモジュールのユーザモードコンポーネントと関連付けする工程が、含まれる。ユーザモードコンポーネントは、カーネルモードモジュールのダイナミックリンクライブラリ部とすることができる。セクションオブジェクトは、ページファイルバックドセクションオブジェクトとすることができ、実行の権利と関連付けされなくてもよい。カーネルモードモジュールおよびユーザモードコンポーネントは、セキュリティエクスプロイトと関連付けされてよい。
【００３０】
２０４にて、カーネルモードモジュールが、ユーザモードコンポーネントと関連付けされたセクションオブジェクトを、ホットパッチ機構に提供する。ユーザモードコンポーネントには、ホットパッチ機構と関連付けされたコンポーネントローダ用のホットパッチデータが含まれてもよい。
【００３１】
２０６にて、ホットパッチ機構が、ホットパッチデータをコンポーネントローダに適用し、コンポーネントローダを修正して、コンポーネントローダが、セクションオブジェクトに関する実行の権利を要求することができるようにする。ホットパッチ機構は、ホットパッチデータを用いて、コンポーネントローダのバイナリの少なくとも一部に、微少な修正を行うことにより、ホットパッチデータを適用することができる。
【００３２】
２０８にて、カーネルモードモジュールが、ユーザモードコンポーネントのエントリポイントを設定して、コンポーネントが、実行可能ユーザモードコンポーネントとなるようにする。設定の前に、エントリポイントがゼロに設定されていてもよい。設定には、ユーザモードコンポーネントのプログラム実行ヘッダにおけるエントリポイントを、コンポーネントローダによって遭遇されると、コンポーネントローダにユーザモードコンポーネントを実行させるルーチンに設定する、ことが含まれてもよい。
【００３３】
２１０にて、カーネルモードモジュールが、セクションオブジェクトをホットパッチ機構に再度提供して、コンポーネントローダに、ユーザモードコンポーネントを実行させる。
【００３４】
２１２にて、セクションオブジェクトの２回目の提供時に、コンポーネントローダが、セクションオブジェクトに関する実行の権利を要求する。
【００３５】
２１４にて、ルーチンに設定されたエントリポイントに遭遇したことに応じて、コンポーネントローダがユーザモードコンポーネントを実行する。
【００３６】
２１６にて、ユーザモードコンポーネントは、実行されると、カーネルモードモジュールと関連付けされた、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する。
【００３７】
２１８にて、作成後、ユーザモードコンポーネントは、コンポーネントローダに対して、ユーザモードコンポーネントにはホットパッチデータが含まれないことを表示する。ユーザモードコンポーネントにはホットパッチデータが含まれないという表示は、ユーザモードコンポーネントにホットパッチデータが含まれるかどうかにかかわらず、提供されてもよい。
【００３８】
２２０にて、表示を受け取ったことに応じて、コンポーネントローダがユーザモードコンポーネントをアンロードする。
【００３９】
図３は、一例の処理を示す図であり、この処理は、ホットパッチ機構と関連付けされたコンポーネントローダに、ユーザモードコンポーネントを実行させ、ユーザモードコンポーネントが、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する、ためのものである。処理３００には、３０２にて、カーネルモードモジュールが、カーネルモードモジュールの実行可能ユーザモードコンポーネント向けのイメージファイルバックドセクションオブジェクトを作成する工程が含まれ、イメージファイルバックドセクションオブジェクトは実行の権利と関連付けされたものである。カーネルモードモジュールおよび実行可能ユーザモードコンポーネントは、セキュリティエージェントと関連付けされてよい。実行可能ユーザモードコンポーネントは、カーネルモードモジュールのダイナミックリンクライブラリ部とすることができる。
【００４０】
３０４にて、カーネルモードモジュールが、実行可能ユーザモードコンポーネントを、ホットパッチ機構に提供する。３０６にて、実行可能ユーザモードコンポーネントを提供する工程には、イメージファイルバックドセクションオブジェクトをホットパッチ機構に提供する工程が含まれる。３０８にて、該提供の工程には、実行可能ユーザモードコンポーネントを、標的のプロセス内のシステムモジュールの実行中のインスタンス用のホットパッチとして、提供する工程が含まれる。
【００４１】
３１０にて、ホットパッチ機構と関連付けされたコンポーネントローダが、実行可能ユーザモードコンポーネントをロードして実行する。３１２にて、コンポーネントローダが、コンポーネントローダによって遭遇されると、コンポーネントローダに実行可能ユーザモードコンポーネントを実行させるルーチンに設定された、実行可能ユーザモードコンポーネントのプログラム実行ヘッダ内のエントリポイント、に遭遇したことに応じて、実行可能ユーザモードコンポーネントを実行する。
【００４２】
３１４にて、実行可能ユーザモードコンポーネントは、実行されると、カーネルモードモジュールと関連付けされた、ユーザモードのプロセス、スレッド、または保持リファレンスを作成する。３１６にて、作成後、実行可能ユーザモードコンポーネントは、コンポーネントローダに対して、実行可能ユーザモードコンポーネントにはホットパッチデータが含まれないことを表示する。３１８にて、表示を受け取ったことに応じて、コンポーネントローダが実行可能ユーザモードコンポーネントをアンロードする。
【００４３】
主題について、構造的特講および／または方法論的動作に特有の言語で記載されたが、添付の請求項によって定義される主題が、必ずしも、記載された特有の特徴又は動作に限定されないことは理解されたい。むしろ、特有の特徴および動作は、請求項を実装する例示の形態として開示される。
【図１】
2016519373.tif 000003
【図２】
2016519373.tif 000004
【図３】
2016519373.tif 000005
【国際調査報告】
2016519373.tif 000006
2016519373.tif 000007