(57)【要約】実行可能コード変更の防止が、既存のメモリが支援するコードページを割り当て、変更する動作を、非常に特権的なＯＳ（オペレーティングシステム）関数にすることによって、提供される。また、読み込まれたコードの完全性も、オプションとして、ＯＳカーネル内で読み込み時点に検査される。システムにおける特権検査が、実行可能ページが割り当てられた、または変更された際に呼び出される。この特権は、オペレーティングシステムカーネル、およびオペレーティングシステムにおける極めて信頼されるＩＤだけに割り当てられる。【選択図】図６
2009528632.tif 000002
【特許請求の範囲】
【請求項１】
実行可能コード（３０５）をメモリ（２３２）に読み込む関数（５０５）を、コンピュータのＯＳ（オペレーティングシステム）（２５８）の特権（３１０）リングに限定するステップを含む実行可能コード（３０５）変更の防止のための方法。
【請求項２】
前記実行可能コードのページレベル保護を実施するステップをさらに含む請求項１に記載の方法。
【請求項３】
前記実行可能コードの実行可能ページが割り当てられる際に、または前記実行可能ページの属性が変更される際に特権検査を呼び出すステップをさらに含む請求項２に記載の方法。
【請求項４】
前記特権検査は、前記実行可能ページの前記割り当て、または前記実行可能ページの前記属性の変更を許す前に、前記ＯＳの前記特権リングだけに割り当てられた特権が存在するかどうかを判定する請求項３に記載の方法。
【請求項５】
前記実行可能コードが読み込まれた後、前記実行可能コードの完全性を検査するステップをさらに含む請求項４に記載の方法。
【請求項６】
前記ページレベル保護は、ハードウェアベースの実施、および実行可能ページの追跡を使用して実行される請求項５に記載の方法。
【請求項７】
請求項１に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項８】
請求項２に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項９】
請求項３に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項１０】
請求項４に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項１１】
請求項５に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項１２】
請求項６に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【請求項１３】
実行可能コード（３０５）をメモリ（２３２）に読み込む関数（５０５）を、コンピュータのＯＳ（オペレーティングシステム）（２５８）の特権（３１０）リングに限定するための手段を含む実行可能コード（３０５）変更の防止のためのシステム。
【請求項１４】
前記実行可能コードのページレベル保護を実施するための手段をさらに含む請求項１３に記載のシステム。
【請求項１５】
前記実行可能コードの実行可能ページが割り当てられる際に、または前記実行可能ページの属性が変更される際に特権検査を呼び出すための手段をさらに含む請求項１４に記載のシステム。
【請求項１６】
前記特権検査を呼び出すための前記手段は、前記実行可能ページの前記割り当て、または前記実行可能ページの前記属性の変更を許す前に、前記ＯＳの前記特権リングだけに割り当てられた特権が存在するかどうかを判定する請求項１５に記載のシステム。
【請求項１７】
前記実行可能コードが読み込まれた後、前記実行可能コードの完全性を検査するための手段をさらに含む請求項１６に記載のシステム。
【請求項１８】
ページレベル保護を実施するための前記手段は、ハードウェアベースの実施、および実行可能ページの追跡のための手段を含む請求項１７に記載のシステム。
【請求項１９】
データ（２５５）ページをメモリ（２３２）に読み込む関数（５０５）を、コンピュータのＯＳ（オペレーティングシステム）（２５８）の特権（３１０）リングに限定するステップを含むデータ（２５５）ページの変更の防止のための方法。
【請求項２０】
請求項１９に記載のステップを実行するための命令を有するコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
今日、悪意のあるソフトウェアコード（すなわち、マルウェア）が、ＣＰＵプロセッサを支配して、次に、悪意のあるＣＰＵ命令（コード）を実行することによってコンピューティングシステムに損害を生じさせる。マルウェアに対処する今日のアプローチは、完全には効果的ではない。ウイルスに対処する１つの一般的なアプローチは、シグネチャベースのウイルス検出ツールを使用することである。残念ながら、このアプローチは、同一の攻撃の次の変種を検出しない。これらのウイルスは、急速に広がるため、ウイルス検出に対する事後対応のアプローチは、多くのタイプのウイルスを阻止することに効果的ではない。このため、新たな、より侵害的なコードが、より広まるにつれ、悪意のあるコードの実行の防止がますます重要になっている。
【０００２】
また、現在のオペレーティングシステムは、特権のないユーザコードに、実行可能ページを割り当てること、および変更することの自由な支配を許す。このため、攻撃者が、既存のプログラムに侵入することができる場合（例えば、バッファオーバフローまたは他のプログラミングエラッタを通じて）、その攻撃者は、メモリの中で侵入されたプログラムを変更する、または新たなＣＰＵ命令をディスクまたは他の媒体から実行させることが自由にできる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このため、必要とされるのは、従来技術の欠点に対処するプロセスおよびシステムである。
【課題を解決するための手段】
【０００４】
この概要では、詳細な説明において後段でさらに説明される選定された概念を簡略化された形態で概説する。この概要は、主張される主題の重要な特徴、または不可欠な特徴を特定することは意図しておらず、また、特許請求の範囲の技術的範囲を確定する際の助けとして使用されることも意図していない。
【０００５】
当技術分野の以上に特定された欠点を考慮して、実行可能コード変更の防止、および許可のないコード読み込みの防止が提供される。いくつかの実施形態に関して、実行可能コード変更の防止のための方法は、実行可能コードをメモリに読み込む関数を、コンピュータのＯＳ（オペレーティングシステム）の特権リングに限定することを含む。また、この方法は、実行可能コードのページレベル保護を実施することをさらに含むことが可能である。また、実行可能コードの実行可能ページが割り当てられる際に、または実行可能ページの属性が変更される際に、特権検査が呼び出されることも可能である。特権検査は、例えば、実行可能ページの割り当て、または実行可能ページの属性の変更を許す前に、ＯＳの特権リングだけに割り当てられた特権が存在するかどうかを判定する。以上に加えて、または以上の代替として、実行可能コードが、メモリに読み込まれる前、または読み込まれた後に、実行可能コードの完全性を検査することが、実行される。
【０００６】
代替として、実行可能コードだけでなく、データページをメモリに読み込む関数を、コンピュータのオペレーティングシステムの特権リングに限定することを含むデータページの変更の防止の方法が、使用される。
【０００７】
本発明のその他の利点および特徴が、後段で説明される。
【０００８】
実行可能コード変更の防止が、添付の図面を参照してさらに説明される。
【発明を実施するための最良の形態】
【０００９】
本発明の様々な実施形態の徹底的な理解をもたらすように、いくつかの特定の詳細が、以下の説明および図において示される。コンピューティング技術およびソフトウェア技術にしばしば関連する、いくつかのよく知られている詳細は、本発明の様々な実施形態を不必要に不明瞭にするのを回避するように、以下の開示において示していない。さらに、当業者は、後段で説明されている１つまたは複数の詳細な説明なしで本発明の他の実施形態を実施することができることが、当業者には理解されよう。最後に、様々な方法が、以下の開示におけるステップおよびシーケンスに関連して説明されるが、説明自体は、本発明の実施形態の明確な実施を与えることに向けられ、それらのステップ、およびステップのシーケンスは、本発明を実施するのに必要なものと解釈されるべきではない。
（例示的なコンピューティング環境）
図１を参照すると、示されているのは、前述したプロセスを実施することに関連して使用するのに適した例示的なコンピューティングデバイスを示すブロック図である。例えば、実行可能コード変更の防止のためのプロセスおよび方法を実行するコンピュータ実行可能命令が、図１に示されるようなコンピューティング環境に存在し、さらに／または実行されることが可能である。コンピューティングシステム環境２２０は、適切なコンピューティング環境の一例に過ぎず、本発明の用法または機能の範囲について何ら限定を示唆することは意図していない。また、コンピューティング環境２２０が、例示的な動作環境２２０に示されるコンポーネントのいずれか１つ、または組合せと関係する依存関係または要件を有すると解釈すべきでもない。例えば、コンピュータゲームコンソールが、前述したプロセスを実施することに関連して使用するために、後段で説明されるアイテムのようなアイテムを含むことも可能である。
【００１０】
本発明の態様は、他の多数の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成で機能する。本発明で使用するのに適する可能性がある、よく知られているコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
【００１１】
本発明の態様は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で実施されることが可能である。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、解釈されるコード、データ構造などが含まれる。また、本発明の態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境において実施されることも可能である。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルコンピュータストレージ媒体とリモートコンピュータストレージ媒体の両方の中に配置されることが可能である。
【００１２】
本発明の態様を実施するための例示的なシステムには、コンピュータ２４１の形態の汎用コンピューティングデバイスが含まれる。コンピュータ２４１のコンポーネントには、処理装置２５９、システムメモリ２２２、ならびにシステムメモリを含む様々なシステムコンポーネントを処理装置２５９に結合するシステムバス２２１が含まれることが可能であるが、以上には限定されない。システムバス２２１は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであってもよい。例として、限定としてではなく、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｅ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００１３】
コンピュータ２４１は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ２４１によってアクセスされることが可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体の両方を含む。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のために任意の方法または技術で実装された、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体がともに含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタルバーサタイルディスク）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望される情報を格納するのに使用することができ、コンピュータ２４１がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構で、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実体化し、あらゆる情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するように特性の１つまたは複数が設定または変更された信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、以上の媒体のいずれかの媒体の組合せも、コンピュータ可読媒体の範囲内に含められなければならない。
【００１４】
システムメモリ２２２は、ＲＯＭ（読み取り専用メモリ）２２３やＲＡＭ（ランダムアクセスメモリ）２６０などの揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。起動中などにコンピュータ２４１内部の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（基本入出力システム）２２４が、通常、ＲＯＭ２２３の中に格納される。ＲＡＭ２６０は、通常、処理装置２５９が、即時にアクセスすることができ、さらに／または現在、処理しているデータおよび／またはプログラムモジュールを含む。例として、限定としてではなく、図１は、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７、およびプログラムデータ２２８を示す。
【００１５】
また、コンピュータ２４１は、その他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図１は、リムーバブルでない不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ２３８、リムーバブルな不揮発性の磁気ディスク２５４に対して読み取りまたは書き込みを行う磁気ディスクドライブ２３９、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブルな不揮発性の光ディスク２５３に対して読み取りまたは書き込みを行う光ディスクドライブ２４０を示す。例示的な動作環境において使用されることが可能な、その他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、以上には限定されない。ハードディスクドライブ２３８は、通常、インタフェース２３４のような、リムーバブルでないメモリインタフェースを介してシステムバス２２１に接続され、磁気ディスクドライブ２３９および光ディスクドライブ２４０は、通常、インタフェース２３５のような、リムーバブルなメモリインタフェースでシステムバス２２１に接続される。
【００１６】
前述し、図１に示されるドライブ、および関連するコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージが、コンピュータ２４１に提供される。図１で、例えば、ハードディスクドライブ２３８が、オペレーティングシステム２５８、アプリケーションプログラム２５７、その他のプログラムモジュール２５６、およびプログラムデータ２５５を格納しているのが示されている。これらのコンポーネントは、オペレーティングシステム２２５、アプリケーションプログラム２２６、その他のプログラムモジュール２２７、およびプログラムデータ２２８と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム２５８、アプリケーションプログラム２５７、その他のプログラムモジュール２５６、およびプログラムデータ２５５に、ここでは、少なくとも、それらが異なるコピーであることを示すために異なる符号が与えられる。ユーザは、キーボード２５１や、マウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス２５２などの入力デバイスを介して、コマンドおよび情報をコンピュータ２４１に入力することができる。その他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。これら、およびその他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インタフェース２３６を介して処理装置２５９に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）などの他のインタフェースおよびバス構造で接続されてもよい。また、モニタ２４２、または他のタイプのディスプレイデバイスも、ビデオインタフェース２３２のようなインタフェースを介して、システムバス２２１に接続される。モニタに加え、コンピュータは、出力周辺インタフェース２３３を介して接続されることが可能な、スピーカ２４４やプリンタ２４３などの他の周辺出力デバイスも含むことが可能である。
【００１７】
コンピュータ２４１は、リモートコンピュータ２４６のような１つまたは複数のリモートコンピュータに対する論理接続を使用する、ネットワーク化された環境において動作することができる。リモートコンピュータ２４６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、通常、コンピュータ２４１に関連して前述した要素の多く、またはすべてを含むが、メモリストレージデバイス２４７だけが図１に示される。図１に示される論理接続は、ＬＡＮ（ローカルエリアネットワーク）２４５およびＷＡＮ（ワイドエリアネットワーク）２４９を含むが、その他のネットワークも含むことが可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００１８】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ２４１は、ネットワークインタフェースまたはネットワークアダプタ２７３を介してＬＡＮ２４５に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ２４１は、通常、インターネットなどのＷＡＮ２４９を介して通信を確立するためのモデム２５０、またはその他の手段を含む。内部にあることも、外部にあることも可能なモデム２５０は、ユーザ入力インタフェース２３６、またはその他の適切な機構を介してシステムバス２２１に接続されることが可能である。ネットワーク化された環境において、コンピュータ２４１に関連して示されるプログラムモジュール、またはプログラムモジュールの諸部分は、リモートメモリストレージデバイスの中に格納されることが可能である。例として、限定としてではなく、図１は、リモートアプリケーションプログラム２４８が、メモリデバイス２４７上に存在するのを示す。図示されるネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されよう。
【００１９】
本明細書で説明される様々な技術は、ハードウェアまたはソフトウェアに関連して、あるいは、適宜、ハードウェアとソフトウェアの両方に関連して実施されることが可能であることを理解されたい。このため、本発明の方法および装置、または本発明の方法および装置のいくつかの態様、もしくはいくつかの部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意のマシン可読記憶媒体などの、実体のある媒体として実現されたプログラムコード（すなわち、命令）の形態をとることが可能であり、このプログラムコードが、コンピュータなどのマシンに読み込まれ、マシンによって実行されると、そのマシンが、本発明を実施するための装置となる。プログラミング可能なコンピュータ上のプログラムコード実行の場合、コンピューティングデバイスは、一般に、プロセッサと、そのプロセッサによって読み取り可能な記憶媒体（揮発性および不揮発性のメモリおよび／または記憶要素を含む）と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含む。例えば、ＡＰＩ、再使用可能なコントロールなどの使用を介して、本発明に関連して説明されるプロセスを実施する、または利用することができる１つまたは複数のプログラムが挙げられる。そのようなプログラムは、好ましくは、高レベルの手続き言語またはオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと通信する。しかし、それらの（１つまたは複数の）プログラムは、所望される場合、アセンブリ言語または機械語で実装されることも可能である。いずれにしても、言語は、コンパイルされる言語、または解釈される言語であることが可能であり、ハードウェア実施形態と組み合わせられることが可能である。
【００２０】
例示的な実施形態は、１つまたは複数のスタンドアロン型コンピュータシステムの文脈で本発明の態様を利用することについて述べることが可能であるが、本発明は、そのように限定されず、むしろ、ネットワーク環境または分散コンピューティング環境などの、任意のコンピューティング環境に関連して実施されることが可能である。さらに、本発明の態様は、複数の処理チップもしくは処理デバイスにおいて、またはそのような処理チップもしくは処理デバイスにまたがって実施されてもよく、格納も同様に、複数のデバイスにまたがって実施されてもよい。そのようなデバイスには、パーソナルコンピュータ、ネットワークサーバ、ハンドヘルドデバイス、スーパコンピュータ、または自動車や飛行機などの他のシステムに組み込まれたコンピュータが含まれることが可能である。
【００２１】
図１で与えられる一般的なフレームワークに従って構築されることが可能である多様なコンピューティング環境に鑑みて、本明細書で提供されるシステムおよび方法は、いかなる形においても或る特定のコンピューティングアーキテクチャに限定されると解釈することはできない。そうではなく、本発明は、いずれの単一の実施形態にも限定されるべきではなく、むしろ、添付の特許請求の範囲による広がりと範囲で解釈されるべきである。
【００２２】
次に図２を参照すると、示されているのは、前述したプロセスを実行する多くのコンピュータ化されたプロセスが実施されることが可能である、例示的なネットワーク化されたコンピューティング環境である。例えば、並列コンピューティングが、実行可能コード変更の防止を使用し、さらに／または実施する図２のネットワーク上の様々なクライアントを有する、そのようなネットワーク化された環境の一部であることが可能である。ネットワークは、任意のコンピュータ、または他のクライアントもしくはサーバデバイスを、あるいは分散コンピューティング環境において接続することができることを当業者なら理解することができる。これに関して、任意の数の処理装置、メモリ装置、または記憶装置、および同時に行われる任意の数のアプリケーションおよびプロセスを有する任意のコンピュータシステムまたはコンピュータ環境が、提供されるシステムおよび方法に関連して使用されるのに適すると考えられる。
【００２３】
分散コンピューティングは、コンピューティングデバイスとシステムの間の交換によってコンピュータリソースおよびコンピュータサービスの共有をもたらす。これらのリソースおよびサービスには、情報の交換、キャッシュ格納、およびファイルに関するディスク格納が含まれる。分散コンピューティングは、ネットワーク接続を利用して、クライアントが、集合的な能力を活用して、企業全体を利することを可能にする。これに関して、様々なデバイスが、本明細書で説明されるプロセスが関与することが可能なアプリケーション、オブジェクト、またはリソースを有する可能性がある。
【００２４】
図２は、例示的なネットワーク化されたコンピューティング環境または分散コンピューティング環境の概略図を与える。この環境は、コンピューティングデバイス２７１、２７２、２７６、および２７７、ならびにオブジェクト２７３、２７４、および２７５、ならびにデータベース２７８を含む。これらのエンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８のそれぞれは、プログラム、メソッド、データストア、プログラマブルロジックなどを含む、または利用することが可能である。エンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、ＰＤＡ，オーディオ／ビデオデバイス、ＭＰ３プレーヤ、パーソナルコンピュータなどの同一のデバイス、または異なるデバイスの複数の部分にわたることが可能である。各エンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、通信ネットワーク２７０を介して別のエンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８と通信することができる。これに関して、任意のエンティティが、データベース２７８または他の記憶要素の保持および更新を担うことが可能である。
【００２５】
このネットワーク２７０は、それ自体、図２のシステムにサービスを提供する他のコンピューティングエンティティを含むことが可能であり、それ自体、複数の互いに接続されたネットワークを表すことが可能である。本発明の態様によれば、各エンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、ＡＰＩ、または他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを利用して、その他のエンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８の１つまたは複数のエンティティのサービスを要求することが可能なディスクリートの機能プログラムモジュールを含むことが可能である。
【００２６】
また、２７５のようなオブジェクトが、別のコンピューティングデバイス２７６上でホストされてもよいことも理解されることが可能である。このため、図示される物理的環境は、接続されたデバイスをコンピュータとして示すことが可能であるが、そのような図示は、単に例示的であり、ＰＤＡ、テレビ、ＭＰ３プレーヤなどの様々なデジタルデバイス、インタフェース、ＣＯＭオブジェクトなどのソフトウェアオブジェクトを含む物理的環境が、代替として、図示される、または説明されることも可能である。
【００２７】
分散コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成が存在する。例えば、コンピューティングシステムは、有線システムまたは無線システムによって、ローカルネットワークまたは広く分散したネットワークによって一緒に接続されることが可能である。現在、多くのネットワークが、インターネットに結合されており、これにより、広く分散したコンピューティングのためのインフラストラクチャが提供され、多くの異なるネットワークが包含される。任意のそのようなインフラストラクチャが、インターネットに結合されているか否かにかかわらず、提供されるシステムおよび方法に関連して使用されることが可能である。
【００２８】
ネットワークインフラストラクチャは、クライアント／サーバアーキテクチャ、ピアツーピアアーキテクチャ、または混成アーキテクチャなどの、多数のネットワークトポロジを可能にすることができる。「クライアント」とは、クライアントが関係していない別のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。コンピューティングにおいて、クライアントは、別のプログラムによって提供されるサービスを要求するプロセス、すなわち、大ざっぱに言って、命令セットまたはタスクセットである。クライアントプロセスは、他方のプログラム、またはサービス自体についての実用上の詳細を全く「知る」必要なしに、要求されるサービスを利用する。クライアント／サーバアーキテクチャ、特にネットワーク化されたシステムにおいて、クライアントは、通常、別のコンピュータ、例えば、サーバによって提供される共有ネットワークリソースにアクセスするコンピュータである。図２の例において、任意のエンティティ２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８が、状況に応じて、クライアント、サーバ、またはその両方と考えられることが可能である。
【００２９】
サーバは、通常、必然的にではないが、インターネットなどの、リモートネットワークまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第１のコンピュータシステムにおいて活性であることが可能であり、サーバプロセスは、第２のコンピュータシステムにおいて活性であることが可能であり、通信媒体を介して互いに通信し、このため、分散機能を提供し、複数のクライアントが、サーバの情報収集能力を利用することを可能にする。任意のソフトウェアオブジェクトが、複数のコンピューティングデバイスまたはコンピューティングオブジェクトにわたって分散されることが可能である。
【００３０】
（１つまたは複数の）クライアントと（１つまたは複数の）サーバは、（１つまたは複数の）プロトコル層によって提供される機能を利用して互いに通信する。例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル）が、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）、つまり、「Ｗｅｂ」に関連して使用される一般的なプロトコルである。通常、ＩＰ（インターネットプロトコル）アドレスなどのコンピュータネットワークアドレス、またはＵＲＬ（ユニバーサルリソースロケータ）などの他のリファレンスが、互いにサーバまたはクライアントを識別するのに使用されることが可能である。ネットワークアドレスは、ＵＲＬアドレスと呼ばれることが可能である。通信は、通信媒体を介して提供されることが可能であり、例えば、（１つまたは複数の）クライアントと（１つまたは複数の）サーバは、大容量通信のために（１つまたは複数の）ＴＣＰ／ＩＰ接続を介して互いに結合されることが可能である。
【００３１】
図２で提供される一般的なフレームワークに従って構築されることが可能である多様なコンピューティング環境、および図２のネットワーク環境のようなネットワーク環境でコンピューティングに生じる可能性があるさらなる多様化に鑑みて、本明細書で提供されるシステムおよび方法は、或る特定のコンピューティングアーキテクチャに限定されると解釈されることは全く可能でない。そうではなく、本発明は、いずれの単一の実施形態にも限定されるべきではなく、むしろ、添付の特許請求の範囲による広がりと範囲で解釈されるべきである。
（実行可能コード変更のハードウェア防止およびオペレーティングシステム防止）
次に図３を参照すると、示されているのは、特権検査を使用する実行可能コード変更の防止のプロセスを示す図である。実行可能メモリページの属性を割り当てる際、または変更する際に、呼び出し元が特権を有するかどうかを検査するサポートが、ＯＳ（オペレーティングシステム）メモリマネージャに追加される。Ｍｏｄｅｒｎ  ｘ６４  ＣＰＵおよびＡＭＤ（登録商標）ＣＰＵが、実行可能ページのハードウェアベースの実施および追跡を可能にする。例えば、Ｗｉｎｄｏｗｓ  ＸＰ（登録商標）Ｓｅｒｖｉｃｅ  Ｐａｃｋ２から始まって、Ｗｉｎｄｏｗｓ（登録商標）の３２ビットバージョンは、ＡＭＤ（登録商標）によって規定されるＮＸ（ｎｏ−ｅｘｅｃｕｔｅ  ｐａｇｅ−ｐｒｏｔｅｃｔｉｏｎ）プロセッサフィーチャ、またはＩｎｔｅｌ（登録商標）によって規定されるＥｘｅｃｕｔｅ  Ｄｉｓａｂｌｅビットフィーチャを利用する。これらのプロセッサフィーチャを使用するため、プロセッサは、ＰＡＥ（物理アドレス拡張）モードで実行されていなければならない。Ｗｉｎｄｏｗｓ  ＸＰ（登録商標）の６４ビットバージョンは、６４ビット拡張上のＮＸプロセッサフィーチャ、およびＩＰＦプロセッサ上のアクセス権ＰＴＥ（ページテーブルエントリ）のいくつかの値を使用する。
【００３２】
Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力は、３２ビットＩｎｔｅｌ（登録商標）アーキテクチャの強化である。Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力を有するＩＡ−３２プロセッサは、コードを実行するように悪意のあるソフトウェアによって使用されることから、データページを保護することができる。このプロセッサは、以下のモードのいずれかでページ保護を提供する。すなわち、
ＰＡＥ（物理アドレス拡張）が、イネーブルにされる場合、レガシー保護モード。
Ｉｎｔｅｌ（登録商標）Ｅｘｔｅｎｄｅｄ  Ｍｅｍｏｒｙ  ６４  Ｔｅｃｈｎｏｌｏｇｙ（Ｉｎｔｅｌ（登録商標）ＥＭ６４Ｔ）がイネーブルにされる場合、ＩＡ−３２ｅモード。
【００３３】
ＩＡ−３２ｅモードに入ることは、ＰＡＥをイネーブルにすることを要求することに留意されたい。Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力は、新たな命令を導入することはしないが、オペレーティングシステムが、ＰＡＥ対応の環境で動作し、メモリに関してページ粒状保護ポリシーを確立することを要求する。
【００３４】
ソフトウェアは、ＥＡＸにおいて入力値８００００００１Ｈを有するＣＰＵＩＤ命令を使用してＥｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力の存在を検出することができる。存在は、ＥＤＸにおいて戻される値によって示される。ＥＤＸのビット２０が、設定される場合、Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔは、利用可能である。ＣＰＵＩＤ拡張関数８００００００１Ｈが、Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力が利用可能であり、ＰＡＥがイネーブルにされていることを報告する場合、ソフトウェアは、ＩＡ３２＿ＥＦＥＲ  ＭＳＲ（アドレスＣ０００００８０Ｈ）においてＮＸＥビットを１に設定することにより、Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力をイネーブルにすることができる。ＩＡ３２＿ＥＦＥＲは、ＣＰＵＩＤ拡張関数８００００００１Ｈによって戻されるＥＤＸレジスタのビット２０またはビット２９が、１である場合、利用可能である。
【００３５】
物理アドレス拡張が、イネーブルにされると（ＩＡ−３２ｅモードまたはレガシー保護モードにおいて）、Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力は、ＩＡ３２＿ＥＦＥＲのビット１１を１に設定することによってイネーブルにされる。ＣＰＵＩＤ拡張関数８００００００１Ｈが、Ｅｘｅｃｕｔｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ能力が利用可能ではないことを報告した場合、ＩＡ３２＿ＥＦＥＲのビット１１が、予約されている。ＩＡ３２＿ＥＦＥＲ．ＮＸＥへの書き込みは、＃ＧＰ例外をもたらす。また、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）メモリマネージャも、割り当てられたメモリページ上のページ属性を追跡する。
【００３６】
図３を再び参照すると、実行可能メモリページが、割り当てられる、または実行可能メモリページの属性が変更される場合３０５、呼び出し元が、メモリページ割り当てまたはメモリページ属性変更を行う正しい特権を有するかどうかを判定３１５する特権検査が実行される３１０。正しい特権が存在する場合、メモリページの割り当てまたは属性変更は、ＯＳによって許される。存在しない場合、メモリページの属性の割り当てまたは変更は、ＯＳ３２５によって許されない。
【００３７】
コードが実行されるにはまず、オブジェクトコードのすべてが、実行可能コードに変換される必要がある。オブジェクトコードは、一緒にまとめられ、各ルーチンが、その他のルーチンをどのように参照することができるか、および各ルーチンが呼び出すシステム関数についての情報が、追加される。多くのソフトウェア環境において、オブジェクトコードのすべては、一緒にリンクされて、ルーチンのすべてを含み、ディスク上に格納される大きい機械語コードである、単一の「実行可能イメージ」にされる。実行時に、この１つの大きい実行可能イメージが、メインメモリに読み込まれ、次に、実行される。実行可能コード変更の防止の別の態様において、実行可能イメージを読み込むことなどの関数が、ユーザモードからカーネルモードに移される。
【００３８】
次に図４を参照すると、示されているのは、オペレーティングシステムのユーザモードフィーチャおよびカーネルモードフィーチャの例示的なアーキテクチャを示すブロック図である。例えば、カーネルモード４０５は、Ｍｉｃｒｏｓｏｆｔ  ＮＴ（登録商標）のコアが実行されるところであり、コンポーネントが、メモリ、デバイス、およびプロセスを含むコンピュータのリソースの管理を実行するハードウェアおよびサービスへの直接のアクセスを有するのは、カーネルモード４０５においてである。このため、ユーザモード４１０において実行されているプログラムが、Ｉ／Ｏ割り当てを実行する、仮想メモリの割り当てもしくは割り当て解除を行う、スレッドもしくはプロセスを開始する、またはグローバルリソースと対話することを望む場合にはいつでも、そのプログラムは、カーネルモード４０５において活きている１つまたは複数のサービス４４５を呼び出さなければならない４２０。
【００３９】
ネイティブＡＰＩ（アプリケーションプログラミングインタフェース）を直接に呼び出すＫＥＲＮＥＬ３２  ４２５関数には、ＫＥＲＮＥＬ３２  ４２５のＩ／Ｏ（例えば、ＣｒｅａｔｅＦｉｌｅ（）、ＲｅａｄＦｉｌｅ（）、ＷｒｉｔｅＦｉｌｅ（））関数、同期（例えば、ＷａｉｔＦｏｒＳｉｎｇｌｅＯｂｊｅｃｔ（）、ＳｅｔＥｖｅｎｔ（））関数、およびメモリ管理（例えば、ＶｉｒｔｕａｌＡｌｌｏｃ（）、ＶｉｒｔｕａｌＰｒｏｔｅｃｔ（））関数のすべてが含まれる。実際、ＫＥＲＮＥＬ３２  ４２５のエクスポートされるルーチンの大半は、ネイティブＡＰＩを直接に使用する。図４は、Ｗｉｎ３２呼び出し（ＣｒｅａｔｅＦｉｌｅ（））を実行するＷｉｎ３２アプリケーション４３０から、ＫＥＲＮＥＬ３２  ４２５、ＮＴＤＬＬ４３５を通って、制御が、ＮｔＣｒｅａｔｅＦｉｌｅ４４０システムサービスに移されるカーネルモード４０５に入る制御の流れを示す。
【００４０】
次に図５を参照すると、示されているのは、カーネルモード実行においてセキュリティ検査を使用する実行可能コード変更の防止のプロセスを示す図である。実行可能イメージを読み込むことなどの関数をユーザモードからカーネルモード４０５に移す際、実行可能コードイメージ５０５を読み込む関数が、呼び出された場合、カーネルモード４０５への切り替えが行われて５１０、適切なセキュリティ検査が行われることが可能であるようにされる５１５。呼び出されなかった場合、アプリケーションの実行は、ユーザモード４１０に留まる。通常のユーザモードコードは、実行可能コードページを割り当てる十分な特権を有さない。ほとんどのコードは、自己書き換え型ではなく、したがって、このことは、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ベースのシステムにわたって相当に広く実施されることが可能である。
【００４１】
次に図６を参照すると、示されているのは、図５に示される実行可能コード変更の防止のプロセスにおいて使用される例示的なセキュリティ検査を示す図である。アプリケーションが、実行可能コードイメージ５０５の読み込みをトリガした場合、ＯＳによってカーネルモード４０５への切り替えが行われ５１０、したがって、コード完全性検査、シグネチャ検査、またはその他のセキュリティポリシー検査などの適切なセキュリティ検査が、カーネル内で行われることが可能である６０５。例えば、コード完全性検査は、或るファイルに割り当てられ、後日にそのファイルを「試験」して、そのファイルに含まれるデータが、悪意のある仕方で変更されていないことを検証するのに使用される数学的値（チェックサムと呼ばれる）である暗号チェックサムであることが可能である。暗号チェックサムは、ファイルの中のデータを、チェックサムとして後で使用される、ハッシュ値と呼ばれる固定の数字ストリングに変換する一連の複雑な数学的操作（暗号アルゴリズムとして知られる）を実行することによって作成される。いずれの暗号アルゴリズムが、ハッシュ値を作成するのに使用されたかを知ることなしには、許可されていない個人が、対応するチェックサムを意図せずに変化させることなしにデータを変更することができる可能性は、極めて低い。また、暗号チェックサムは、メッセージ認証コード、完全性検査値、変更検出コード、またはメッセージ完全性コードとしても知られる。
【００４２】
シグネチャは、オブジェクトの中のデータの暗号化された数学的要約である。したがって、シグネチャは、検証中のオブジェクトの中のデータが、オブジェクトに署名が行われた際のオブジェクトの中のデータと合致した場合、合致し、有効であると考えられる。無効なシグネチャは、オブジェクトに署名が行われた際に作成された、暗号化された数学的要約と、シグネチャ検証中に行われる暗号化された数学的要約との比較に基づいて、判定される。シグネチャ検証プロセスは、この２つの要約値を比較する。これらの値が同一ではない場合、オブジェクトの内容は、オブジェクトに署名が行われて以来、変化しており、そのシグネチャは、無効であると考えられる。図６を再び参照すると、コード完全性検査またはシグネチャ検査に合格した場合６１０、モジュール読み込みが行われることが許される６１５。合格しなかった場合、モジュール読み込みが行われることは許されない６２０。また、本明細書で説明されるプロセスは、実行可能ページに固有である必要はなく、例えば、読み取り専用データページ、および読み込まれるモジュールの他の任意の態様に拡張されることも可能であることに留意することも重要である。
【００４３】
さらなるセキュリティポリシー検査の例には、モジュールのタイプ、または読み込まれるモジュールの出所を制限することがかかわることが可能である。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）Ｓｙｓｔｅｍサービスは、ネイティブフォーマットにおけるＭｉｃｒｏｓｏｆｔ実行可能コードが読み込まれることだけしか許さないように構成されることが可能である。
【００４４】
本明細書で説明される様々なシステム、方法、および技術は、ハードウェアで、またはソフトウェアで、あるいは、適宜、その両方の組合せで実施されることが可能である。このため、本発明の方法および装置、または本発明の方法および装置のいくつかの態様、もしくはいくつかの部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意のマシン可読記憶媒体などの、実体のある媒体として実現されたプログラムコード（すなわち、命令）の形態をとることが可能であり、このプログラムコードが、コンピュータなどのマシンに読み込まれ、マシンによって実行されると、そのマシンが、本発明を実施するための装置となる。プログラミング可能なコンピュータ上のプログラムコード実行の場合、コンピュータは、一般に、プロセッサと、そのプロセッサによって読み取り可能な記憶媒体（揮発性および不揮発性のメモリおよび／または記憶要素を含む）と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含む。１つまたは複数のプログラムは、好ましくは、高レベルの手続き言語またはオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと通信する。しかし、（１つまたは複数の）プログラムは、所望される場合、アセンブリ言語または機械語で実装されることも可能である。いずれにしても、言語は、コンパイルされる言語、または解釈される言語であることが可能であり、ハードウェア実施形態と組み合わせられることが可能である。
【００４５】
また、本発明の方法および装置は、電気配線またはケーブル配線を介する、光ファイバを介する、または他の任意の形態の伝送を介するなどの、何らかの伝送媒体を介して伝送されるプログラムコードの形態で実施されることも可能であり、このプログラムコードが、ＥＰＲＯＭ、ゲートアレイ、ＰＬＤ（プログラマブルロジックデバイス）、添付の図に示されるようなクライアントコンピュータ、ビデオレコーダなどのマシンによって受信されて、読み込まれ、そのようなマシンによって実行されると、そのマシンが、本発明を実施するための装置となる。汎用プロセッサ上で実施されると、このプログラムコードは、プロセッサと一緒になって、本発明の索引付け機能を実行するように動作する独特な装置をもたらす。
【００４６】
本発明は、様々な図の好ましい実施形態に関連して、説明されてきたが、本発明を逸脱することなしに、他の同様な実施形態が使用されてもよく、あるいは本発明と同一の機能を実行するために、説明される実施形態に変形または追加が行われてもよいことを理解されたい。さらに、ハンドヘルドデバイスオペレーティングシステム、および他のアプリケーション固有のハードウェア／ソフトウェアインタフェースシステムを含む様々なコンピュータプラットフォームが、特に、無線ネットワーク化されたデバイスの数が増加しつづけるなかで、本明細書において企図されることが、強調されなければならない。したがって、本発明は、いずれの単一の実施形態にも限定されるべきではなく、むしろ、添付の特許請求の範囲による広がりと範囲で解釈されるべきである。
【００４７】
最後に、本明細書で説明される、開示される実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化において使用されるように適合されることが可能であり、そのような実施形態は、本明細書で行われる開示によって明確に予期されており、このため、本発明は、本明細書で説明される特定の実施形態に限定されるべきではなく、むしろ、最も広く解釈されなければならない。
【図面の簡単な説明】
【００４８】
【図１】実行可能コード変更の防止に関連して使用するのに適した例示的なコンピューティングデバイスを示すブロック図である。
【図２】実行可能コード変更の防止を実行する多数のコンピュータ化されたプロセスが実施されることが可能である例示的なネットワーク化されたコンピューティング環境を示す図である。
【図３】特権検査を使用する実行可能コード変更の防止のプロセスを示す図である。
【図４】オペレーティングシステムのユーザモードフィーチャおよびカーネルモードフィーチャの例示的なアーキテクチャを示すブロック図である。
【図５】カーネルモード実行においてセキュリティ検査を使用する実行可能コード変更の防止のプロセスを示す図である。
【図６】図５に示される実行可能コード変更の防止のプロセスにおいて使用される例示的なセキュリティ検査を示す図である。
【図１】
2009528632.tif 000003
【図２】
2009528632.tif 000004
【図３】
2009528632.tif 000005
【図４】
2009528632.tif 000006
【図６】
2009528632.tif 000007
【国際調査報告】
2009528632.tif 000008
2009528632.tif 000009