JP6411494B2 - 仮想マシンにおけるページフォールトインジェクション - Google Patents

仮想マシンにおけるページフォールトインジェクション Download PDF

Info

Publication number
JP6411494B2
JP6411494B2 JP2016527974A JP2016527974A JP6411494B2 JP 6411494 B2 JP6411494 B2 JP 6411494B2 JP 2016527974 A JP2016527974 A JP 2016527974A JP 2016527974 A JP2016527974 A JP 2016527974A JP 6411494 B2 JP6411494 B2 JP 6411494B2
Authority
JP
Japan
Prior art keywords
page
virtualized
memory
processor
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016527974A
Other languages
English (en)
Other versions
JP2016525255A5 (ja
JP2016525255A (ja
Inventor
ルツァス,アンドレイ−ヴラド
Original Assignee
ビットディフェンダー アイピーアール マネジメント リミテッド
ビットディフェンダー アイピーアール マネジメント リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビットディフェンダー アイピーアール マネジメント リミテッド, ビットディフェンダー アイピーアール マネジメント リミテッド filed Critical ビットディフェンダー アイピーアール マネジメント リミテッド
Publication of JP2016525255A publication Critical patent/JP2016525255A/ja
Publication of JP2016525255A5 publication Critical patent/JP2016525255A5/ja
Application granted granted Critical
Publication of JP6411494B2 publication Critical patent/JP6411494B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Description

関連出願
[0001]本出願は、2013年7月17日に出願された「Page Fault Injection In Virtual Machines(仮想マシンにおけるページフォールトインジェクション)」という名称の米国仮特許出願第61/847,538号の出願日に基づく優先権を主張し、その内容全体は、引用により本明細書に組み込まれる。
[0002]本発明は、マルウェアからコンピュータシステムを保護するためのシステムおよび方法に関する。
[0003]悪意のあるソフトウェアは、マルウェアとしても知られ、世界中の多数のコンピュータシステムに影響を与える。コンピュータウイルス、ワーム、ルートキット、およびスパイウェアなど、その多くの形式でマルウェアは、数百万人のコンピュータユーザに深刻なリスクを与え、特に、データおよび機密情報の損失、個人情報の盗難、ならびに生産性の損失を受けやすくしている。
[0004]ハードウェア仮想化技術により、多くの方法で物理コンピュータシステムとしてふるまう、一般に仮想マシンとして知られるシミュレートされたコンピュータ環境の創出が可能となる。サーバ統合およびサービスとしてのインフラストラクチャ(IAAS:infrastructure-as-a-service)などの代表的な応用では、いくつかの仮想マシンが、特にハードウェアリソースを共有して、したがって投資および運用コストを減らして、同じ物理マシン上で同時に動作することができる。各仮想マシンは、その独自のオペレーティングシステムおよび/またはソフトウェアアプリケーションを、他の仮想マシンから切り離して実行することができる。マルウェアが一定して増えているために、このような環境で動作している各仮想マシンは、潜在的にマルウェア防御を必要としている。
[0005]当技術分野で一般的に使用される仮想化ソリューションは、コンピューティングハードウェアと仮想マシンのオペレーティングシステム(OS)との間で動作しているソフトウェアの層から成り、それぞれのOSよりも多くのプロセッサ特権を有し、仮想マシンモニタとしても知られるハイパーバイザを含む。アンチマルウェア動作は、ハイパーバイザの特権レベルで行われ得る。このような構成はセキュリティを高めることができるが、余分な複雑さを取り込み、かなりの計算コストを伴う可能性がある。
[0006]ハードウェア仮想化プラットフォームのための、効率的、堅牢、および拡張可能なアンチマルウェアソリューションを開発することにかなりの関心がある。
[0007]1つの態様によれば、ホストシステムが、ハイパーバイザおよびメモリ内部監視エンジンを動作させるように構成されたハードウェアプロセッサを含む。ハイパーバイザは、仮想化されたプロセッサと、仮想化されたメモリとを含んだ仮想マシンを公開する(expose)ように構成され、仮想マシンは、仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成される。メモリ内部監視エンジンは、仮想マシンの外で実行され、仮想マシンのページテーブルにより、ターゲットプロセスの仮想メモリ空間のターゲットページが、仮想化されたメモリからスワップアウトされているかどうかを判定し(determine)、それに応じて、ターゲットページが仮想化されたメモリからスワップアウトされているとき、仮想マシンにページフォールトを直接インジェクトするように構成され、ページフォールトが仮想マシンのオペレーティングシステムにターゲットページを仮想化されたメモリのページにマップさせる。
[0008]別の態様によれば、方法が、ホストシステムの少なくとも1つのハードウェアプロセッサを使用して、ハイパーバイザを実行するステップを含み、ハイパーバイザは、仮想化されたプロセッサと、仮想化されたメモリとを含んだ仮想マシンを公開するように構成され、仮想マシンは、仮想化されたプロセッサを使用して、ターゲットプロセスを実行するようにさらに構成される。方法は、少なくとも1つのハードウェアプロセッサを使用して、ターゲットプロセスの仮想メモリ空間のターゲットページが、仮想化されたメモリからスワップアウトされているかどうかを判定するステップと、それに応じて、ページが仮想化されたメモリからスワップアウトされているとき、その少なくとも1つのハードウェアプロセッサを使用して仮想マシンにページフォールトを直接インジェクトするステップとをさらに含み、ページフォールトが仮想マシンのオペレーティングシステムにターゲットページを仮想化されたメモリのページにマップさせる。
[0009]別の態様によれば、非一時的コンピュータ可読媒体が、ホストシステムの少なくとも1つのハードウェアプロセッサによって実行されるとき、ホストシステムにメモリ内部監視エンジンを形成させる命令を記憶し、ホストシステムは、仮想化されたプロセッサと仮想化されたメモリとを含んだ仮想マシンを公開するハイパーバイザを実行するようにさらに構成され、仮想マシンは、仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成される。メモリ内部監視エンジンは、仮想マシンの外で実行され、仮想マシンのページテーブルにより、ターゲットプロセスの仮想メモリ空間のターゲットページが、仮想化されたメモリからスワップアウトされているかどうかを判定し、それに応じて、ターゲットページが仮想化されたメモリからスワップアウトされているとき、仮想マシンにページフォールトを直接インジェクトするように構成され、ページフォールトが仮想マシンのオペレーティングシステムにターゲットページを仮想化されたメモリのページにマップさせる。
[0010]本発明の前述の態様および利点は、次の詳細な説明を読むと、および図面を参照すると、よりよく理解されるようになるであろう。
[0011]ホストシステムで実行されるハイパーバイザによって公開される仮想マシンの例示的なセット、および本発明のいくつかの実施形態によりマルウェアから仮想マシンのセットを保護するメモリ内部監視エンジンを示す図である。 [0012]本発明のいくつかの実施形態によりホストシステムの例示的なハードウェア構成を示す図である。 [0013]本発明のいくつかの実施形態によりゲスト仮想マシンに公開される仮想化されたハードウェアの例示的な構成を示す図である。 [0014]本発明のいくつかの実施形態により様々なプロセッサ特権レベルにおいてホストシステムで実行されるソフトウェアオブジェクトの例示的な階層を示す図である。 [0015]本発明のいくつかの実施形態により、メモリアドレスの例示的なマッピング、ならびに仮想化されたメモリへのメモリページの例示的なスワップインおよび仮想化されたメモリからのメモリページの例示的なスワップアウトを示す図である。 [0016]本発明のいくつかの実施形態によりマルウェアから仮想マシンを保護するためにメモリ内部監視エンジンによって実行される例示的な一連のステップを示す図である。 [0017]本発明のいくつかの実施形態により直接的なページフォールトインジェクションを行うためにメモリ内部監視によって行われる例示的な一連のステップを示す図である。 [0018]本発明のいくつかの実施形態により図6〜図7の方法の応用を示す例示的な一連のステップを示す図である。 [0019]本発明のいくつかの実施形態により図6〜図7の方法の別の応用を示す例示的な一連のステップを示す図である。 [0020]本発明のいくつかの実施形態により、ターゲットプロセスのデータを含んでいるメモリページの仮想アドレスのセットの例示的な決定(detemination)を示す図である。
[0021]次の説明では、構造間の列挙するすべての接続は、直接的な動作接続または中間構造を介した間接的な動作接続であり得ることは理解されよう。要素のセットは、1つまたは複数の要素を含む。要素の任意の列挙は、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。別段の要求がない限り、記載する方法のステップは、必ずしも例示する特定の順序で行われる必要はない。第2の要素から導き出される第1の要素(たとえば、データ)は、第2の要素に等しい第1の要素、ならびに第2の要素およびオプションでは他のデータを処理することによって生成される第1の要素を含む。パラメータにより判定および決定(determination and decision)を行うことは、パラメータによりおよびオプションでは他のデータにより判定および決定(determination and decision)を行うことを含む。別段の指定がない限り、ある量/データのインジケータは、その量/データ自体、またはその量/データ自体とは異なるインジケータであってもよい。別段の指定がない限り、プロセスは、アプリケーションまたはオペレーティングシステムの一部などのコンピュータプログラムのインスタンスであり、少なくとも実行スレッドおよびオペレーティングシステムによって実行スレッドに割り当てられた仮想メモリのセクションを有し、それぞれのセクションが実行可能コードを含むことを特徴とする。別段の指定がない限り、ページは、ホストシステムの物理メモリに個々にマップされる仮想メモリの最小単位を表す。別段の指示がない限り、仮想マシンにページフォールトを直接インジェクトすることは、それぞれの仮想マシン内で実行されるオペレーティングシステムまたは他のソフトウェアからの援助なしで、それぞれの仮想マシンの仮想化されたプロセッサ内にページフォールトイベントを誘導することを含む。このような直接的なインジェクションは、オペレーティングシステムまたは他のソフトウェアがインジェクトされたページフォールトに応じて、たとえばページフォールトを処理するためにアクションを起こすことを除外しない。コンピュータ可読媒体は、磁気、光、および半導体記憶媒体(たとえば、ハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに導電性ケーブルおよび光ファイバリンクなどの通信リンクを含む。いくつかの実施形態によれば、本発明は、特に、本明細書に記載する方法を行うようにプログラムされたハードウェア(たとえば、1つまたは複数のプロセッサ)、ならびに本明細書に記載する方法を行うように命令をエンコードするコンピュータ可読媒体を含んだコンピュータシステムを提供する。
[0022]次の説明は、例として、必ずしも限定としてではなく、本発明の諸実施形態を示す。
[0023]図1は、本発明のいくつかの実施形態によりマルウェア防御のためのハードウェア仮想化を使用するホストシステム10の例示的な構成を示す。ホストシステム10は、エンタープライズサーバなどの企業のコンピューティングデバイス、またはパーソナルコンピュータもしくはスマートフォンなどのエンドユーザデバイスを表すことができる。他の例示的なホストシステムには、TVおよびゲーム機などのエンターテイメントデバイス、またはメモリおよびプロセッサを有し、マルウェア防御を必要とする他のいかなるデバイスも含まれる。図1の例では、ホストシステム10は、ハイパーバイザ30によって公開されるゲスト仮想マシン32a〜bのセットを実行する。仮想マシン(VM)は、実際の物理マシン/コンピュータシステムの抽象化(abstraction)、たとえばソフトウェアエミュレーションを含み、VMは、オペレーティングシステムおよび他のアプリケーションを実行することができる。ハイパーバイザ30は、仮想プロセッサおよび仮想メモリコントローラなどの複数の仮想化されたデバイスを作成し、そのような仮想化されたデバイスを、ホストシステム10の実在の物理デバイスの代わりにソフトウェアに提示するように構成されたソフトウェアを含む。いくつかの実施形態では、ハイパーバイザ30は、ホストシステム10のハードウェアリソースの複数の仮想マシンによって多重化(共有)を可能にする。ハイパーバイザ30はさらに、各VMが独立して動作し、ホストシステム10で同時に実行される他のVMを認識しないように、そのような多重化を管理することができる。よく知られているハイパーバイザの例には、特に、VMware社が提供するVMware vSphere(商標)、およびオープンソースのXenハイパーバイザが含まれる。
[0024]各VM32a〜bは、それぞれゲストオペレーティングシステム(OS)34a〜bを実行することができる。例示的なアプリケーション42a〜dのセットは、一般的にいかなるソフトウェアアプリケーションも表し、特に、文書処理、画像処理、メディアプレーヤー、データベース、カレンダー、個人連絡先管理、ブラウザ、ゲーム、音声通信、データ通信、およびアンチマルウェアアプリケーションなどを表す。オペレーティングシステム34a〜bは、特に、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(商標)など、広く入手することができる任意のオペレーティングシステムを含むことができる。各OSは、仮想マシン内で実行されるアプリケーションと、それぞれのVMの仮想化されたハードウェアデバイスとの間のインターフェースを提供する。次の説明では、仮想マシンの仮想プロセッサで実行されるソフトウェアは、それぞれの仮想マシン内で実行されると言われる。たとえば、図1の例では、アプリケーション42a〜bは、ゲストVM32a内で実行されると言われ、アプリケーション42c〜dは、ゲストVM32b内で実行されると言われる。対照的に、ハイパーバイザ30は、ゲストVM32a〜bの外でまたは下で実行されると言われる。
[0025]いくつかの実施形態では、ハイパーバイザ30は、以下にさらに詳細に記載するように、アンチマルウェア動作を行うように構成されたメモリ内部監視エンジン40を含む。エンジン40は、ハイパーバイザ30に組み込まれてもよい、またはハイパーバイザ30とは異なり独立しているが、ハイパーバイザ30と実質的に同様のプロセッサ特権レベルで実行されるソフトウェアコンポーネントとして提供されてもよい。単一のエンジン40が、ホストシステム10で実行される複数のVMをマルウェア防御する(malware-protect)ように構成されてもよい。
[0026]図2は、ホストシステム10の例示的なハードウェア構成を示す。システム10は、プロセッサ12、メモリユニット14、入力デバイス16のセット、出力デバイス18のセット、ストレージデバイス20のセット、およびネットワークアダプタ22のセットなど、物理デバイスのセットを含み、すべてがコントローラハブ24によって接続されている。いくつかの実施形態では、プロセッサ12は、信号および/またはデータのセットを用いて計算および/または論理演算を実行するように構成された物理デバイス(たとえば、半導体基板上に形成されたマルチコアの集積回路)を含む。いくつかの実施形態では、このような論理演算は、一連のプロセッサ命令(たとえば、マシンコードまたは他のタイプのソフトウェア)の形でプロセッサ12に引き渡される。メモリユニット14は、命令を実行する過程でプロセッサ12によってアクセスされるまたは生成されるデータ/信号を記憶する揮発性コンピュータ可読媒体(たとえば、RAM)を含むことができる。
[0027]入力デバイス16は、ユーザがデータおよび/または命令をホストシステム10に導入できるようにするそれぞれのハードウェアインターフェースおよび/またはアダプタなど、特に、コンピュータキーボード、マウス、およびマイクを含むことができる。出力デバイス18は、特にモニタおよびスピーカなどのディスプレイデバイス、ならびにホストシステム10がデータをユーザに伝えられるようにする、グラフィックカードなどのハードウェアインターフェース/アダプタを含むことができる。いくつかの実施形態では、入力デバイス16および出力デバイス18は、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有することができる。ストレージデバイス20は、ソフトウェア命令および/またはデータの不揮発性の記憶、読み出し、および書き込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス20は、磁気および光ディスク、ならびにフラッシュメモリデバイス、ならびにCDおよび/またはDVDディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ22のセットは、ホストシステム10がコンピュータネットワークに、および/または他のデバイス/コンピュータシステムに接続できるようにする。コントローラハブ24は、複数のシステムバス、周辺機器バス、および/もしくはチップセットバス、ならびに/またはプロセッサ12とデバイス14、16、18、10、および22との間の通信を可能にする他のすべての回路を表す。たとえば、コントローラハブ24は、特に、メモリコントローラ、入力/出力(I/O)コントローラ、および割り込みコントローラを含むことができる。別の例では、コントローラハブ24は、プロセッサ12をメモリ14に接続するノースブリッジ、ならびに/またはプロセッサ12をデバイス16、18、20、および22に接続するサウスブリッジを含むことができる。
[0028]図1に示す構成を可能にするために、ハイパーバイザ30は、それぞれがシステム10の物理ハードウェアデバイスをエミュレートする複数の仮想化されたデバイスを作成することができる。ハイパーバイザ30は、さらに仮想化されたデバイスのセットを各VM32a〜bに割り当て、VM32a〜bがプロセッサ12および他のハードウェアデバイスを同時に使用することができるように、スケジューリング、シグナリング、および通信を制御することができる。このような動作を行うことはまた、当技術分野ではVM32a〜bを公開することとして知られている。
[0029]図3は、ハイパーバイザ30によって公開される仮想マシン32の例示的な構成を示す。VM32は、たとえば図1のVM32a〜bのいずれかを表すことができる。VM32は、仮想化されたプロセッサ112と、仮想化されたメモリユニット114と、仮想化された入力デバイス116と、仮想化された出力デバイス118と、仮想化されたストレージ120と、仮想化されたネットワークアダプタ122と、仮想化されたコントローラハブ124とを含む。仮想化されたプロセッサ112は、プロセッサ12の機能の少なくともいくつかのエミュレーションを含み、オペレーティングシステムおよび他のアプリケーションなどのソフトウェアの一部を形成するプロセッサ命令を受け取って実行するように構成される。プロセッサ112を使用して実行するソフトウェアは、仮想マシン32内で実行されるとみなされる。いくつかの実施形態では、仮想化されたメモリユニット114は、仮想化されたプロセッサ112によって使用されるデータを記憶し、検索するためのアドレス可能空間を含む。他の仮想化されたデバイス(たとえば、仮想化された入力、出力、ストレージなど)は、ホストシステム10のそれぞれの物理デバイスの機能の少なくともいくつかをエミュレートする。仮想化されたプロセッサ112は、対応する物理デバイスと対話するように、そのようなデバイスと対話するように構成される。たとえば、VM32内で実行されるソフトウェアは、(1つまたは複数の)仮想化されたネットワークアダプタ122を介してネットワークトラフィックを送るおよび/または受け取ることができる。いくつかの実施形態では、ハイパーバイザ30は、仮想化されたデバイスのサブセットのみをVM32に公開することができる(たとえば、仮想化されたプロセッサ112、仮想化されたメモリ114、ハブ124の一部のみ)。ハイパーバイザ30は、選択されたVMに、ホストシステム10のいくつかのハードウェアデバイスを排他的に使用させることもある。このような1つの例では、VM32a(図1)は、入力デバイス16および出力デバイス18を排他的に使用するが、仮想化されたネットワークアダプタがないことがある。一方、VM32bは、(1つまたは複数の)ネットワークアダプタ22を排他的に使用することがある。
[0030]図4は、本発明のいくつかの実施形態によりホストシステム10で実行されるソフトウェアオブジェクトの階層を示す。図4は、当技術分野ではレイヤまたはプロテクションリングとしても知られる、プロセッサ特権レベルの視点から表されている。いくつかの実施形態では、ハイパーバイザ30は、最大特権レベル(たとえば、仮想化を支援し、リング1またはルートモードとしても知られている、Intel(登録商標)プラットフォームのVMXroot)でプロセッサ12の制御を行い、したがってホストシステム10で実行される他のソフトウェアに仮想マシン32として公開されるハードウェア仮想化プラットフォームを作成する。図2のOS34a〜bなどのオペレーティングシステム34が、VM32の仮想環境内で実行され、OS34は、ハイパーバイザ30よりも劣るプロセッサ特権(たとえば、Intelプラットフォームのリング0、またはカーネルモード)を有する。アプリケーション42e〜fのセットが、OS34よりも劣るプロセッサ特権(たとえば、リング3、またはユーザモード)で実行される。アプリケーション42e〜fの部分が、カーネル特権レベルで実行されてもよい(たとえば、ドライバ36がアプリケーション42fによってインストールされる、例示的なドライバ36が、ソフトウェアオブジェクトのマルウェアを示す挙動を検出する、および/またはソフトウェアオブジェクト内のマルウェアを示す署名を検出するなど、アンチマルウェア動作を行う)。同様に、OS34の部分が、ユーザモード(リング3)で実行されてもよい。
[0031]いくつかの実施形態では、内部監視エンジン40が、実質的にハイパーバイザ30と同じプロセッサ特権レベルで実行され、VM32など、ホストシステム10で実行される仮想マシンの内部監視を行うように構成される。VMまたはそれぞれのVM内で実行されるソフトウェアオブジェクトの内部監視は、それぞれのソフトウェアオブジェクトの挙動を分析すること、たとえば、オブジェクトによって行われる動作のセット(たとえば、システムコールを発行すること、OSのレジストリにアクセスすること、リモート位置からファイルをダウンロードすること、ファイルにデータを書き込むことなど)を識別することを含むことができる。内部監視は、ソフトウェアオブジェクトの部分を含んでいるメモリセクションのアドレスを決定すること(determining)、それぞれのメモリセクションにアクセスすること、およびそれぞれのメモリセクション内に記憶されている内容を分析することをさらに含むことができる。内部監視の他の例は、そのようなメモリセクションのいくつかのプロセスのアクセスをインターセプトすることおよび/または制限すること、たとえば、プロセスが別のプロセスによって使用されるコードまたはデータを上書きしないようにすることを含む。いくつかの実施形態では、エンジン40によって内部監視に選択されるオブジェクトは、特に、プロセス、命令ストリーム、レジスタ、ならびにそれぞれのVMのページテーブルおよびドライバオブジェクトなどのデータ構造を含む。
[0032]VM32の内部監視を図1に示す構成で(すなわち、それぞれのVMの外から)行うために、エンジン40のいくつかの実施形態は、プロセッサ12のメモリマッピング構造および機構を使用する。仮想マシンは、一般的に、当技術分野ではゲスト物理メモリとしても知られる仮想化された物理メモリ、たとえば図3のメモリ114を用いて動作する。仮想化された物理メモリは、実際の物理メモリ14の抽象的表現を、たとえば、各ゲストVMに固有の仮想化されたアドレスの連続した空間として、上記空間の部分を物理メモリ14および/または物理ストレージデバイス20内のアドレスにマップして、含む。仮想化を支援するように構成されたシステムでは、このようなマッピングは、一般的に、プロセッサ12によって制御される専用データ構造によって実現され、第2レベルアドレス変換(SLAT:second level address translation)として知られる。よく知られているSLAT実装は、拡張ページテーブル(Intel(登録商標)プラットフォームのEPT)、および入れ子ページテーブル(AMD(登録商標)プラットフォームのNPT)を含む。このようなシステムでは、仮想化された物理メモリが、当技術分野でページとして知られている単位に分割されることが可能であり、ページは、EPTおよび/またはNPTなどの機構により物理メモリに個々にマップされた仮想化された物理メモリの最小単位を表し、すなわち、物理メモリと仮想化された物理メモリとの間のマッピングは、ページ粒度で行われる。すべてのページは、一般的に、所定のサイズ、たとえば4キロバイト、2メガバイトなどを有する。仮想化された物理メモリをページに分割することは、通常、ハイパーバイザ30によって設定される(configured)。いくつかの実施形態では、ハイパーバイザ30は、EPT/NPT、したがって物理メモリと仮想化された物理メモリとの間のマッピングもまた設定する。仮想化された物理メモリの物理メモリアドレスへの実際のマッピング(変換)は、ホストシステム10のトランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)で物理メモリアドレスを調べることを含むことができる。いくつかの実施形態では、アドレス変換は、ページウォークを行うことを含み、ページウォークは、ページテーブルおよび/またはページディレクトリのセットにおける連続したアドレスルックアップのセットを含み、それぞれのページに関連したアドレスにページのオフセットを加えるなどの計算を行う。
[0033]いくつかのハードウェア構成により、ハイパーバイザ30が、物理メモリ14の各ページ内に記憶されたデータへのアクセスを、たとえばそれぞれのページへの読み出し、書き込み、および/または実行アクセス権を設定することによって、選択的に制御することができる。このような権利は、たとえば、EPTまたはNPT内のそれぞれのページのエントリを変更することによって設定されてもよい。ハイパーバイザ30は、どのソフトウェアオブジェクトが各ページ内のアドレスに記憶されたデータにアクセスすることができるかをこのように選択することができ、たとえば読み出し、書き込み、実行など、それぞれのデータでどの動作が許可されるかを示すことができる。VM内で実行されるソフトウェアオブジェクトによる、たとえばオブジェクトがそれぞれの権利を有していないページにデータを書き込むこと、または実行できないとマーク付けされたページからコードを実行することなどの動作を行おうとする試みが、仮想マシン終了イベント(たとえば、IntelプラットフォームのVMExitイベント)をトリガすることができる。いくつかの実施形態では、仮想マシン終了イベントは、プロセッサの制御を、それぞれのソフトウェアオブジェクトを実行しているVMからハイパーバイザ30に移す。このような移動により、ハイパーバイザ30のプロセッサ特権レベルで実行されるソフトウェアが、許可されていない書き込みまたは実行の試みをインターセプトすることができる。いくつかの実施形態では、内部監視エンジン40が、アンチマルウェア動作の一部としてこのようなインターセプションを行う。
[0034]いくつかの実施形態では、OS34が、たとえば、ページテーブル機構を使用して、それぞれの仮想メモリ空間と、VM32の仮想化された物理メモリとの間のマッピング(アドレス変換)を維持することによって、図4のアプリケーション42e〜fなどのプロセスのために仮想メモリ空間を構成する。いくつかの実施形態では、プロセス仮想メモリ空間はまた、ページに分割され、このようなページは、OS34によって仮想化された物理メモリに個々にマップされた仮想メモリの最小単位を表し、すなわち、仮想メモリから仮想化された物理メモリへのマッピングは、ページ粒度で行われる。
[0035]図5は、図4に示す実施形態におけるメモリアドレスの例示的なマッピングを示す。ゲストVM32a内で実行されるアプリケーション、プロセス、またはオペレーティングシステムの一部などのソフトウェアオブジェクトが、ゲストOS34によって仮想メモリ空間214aを割り当てられる。ソフトウェアオブジェクトが、空間214aの例示的なメモリページ60aの内容にアクセスしようと試みるとき、ページ60aのアドレスが、ゲストVM32の仮想化されたプロセッサによって、ゲストOS34により構成され、制御されるページテーブルに従い、VM32の仮想化された物理メモリ空間114のページ60bのアドレスに変換される。ハイパーバイザ30は、仮想化された物理メモリ114を構成および制御し、次いで、たとえば上述のようにSLAT手段を使用して、ページ60bのアドレスを、ホストシステム10の物理メモリ14内のページ60cのアドレスにマップする。
[0036]いくつかの実施形態では、ハイパーバイザ30は、物理メモリ14の表現を含んだその独自の仮想メモリ空間214bをセットアップし、変換機構(たとえば、ページテーブル)を使用して、空間214b内のアドレスを物理メモリ14内のアドレスにマップする。図5では、このような例示的なマッピングが、ページ60cのアドレスを、ページ60hのアドレスに変換する。このようなマッピングにより、ハイパーバイザ30は、ホストシステム10で動作している様々なVM内で実行されるソフトウェアオブジェクトに属するメモリページを管理する(たとえば、読み出す、書き込む、およびアクセスを制御する)ことができる。
[0037]図5はさらに、ゲストOS34によって行われるページスワッピング動作を示す。ページスワッピングは、現代のオペレーティングシステムの共通機能であり、利用可能なメモリ資源を効率的に管理するために使用される。いくつかの実施形態では、メモリからページをスワップアウトすることは、OSがそれぞれのページの内容をメモリからストレージデバイス(たとえば、ディスク)に移動させ、それぞれのページが他のデータを記憶するために使用され得るようにすることを含む。その後、OSは、それぞれの内容をストレージからメモリに、おそらくその内容を記憶していた元のページのアドレスとは異なるアドレスに戻すことによって、そのページのスワップインを行うことができる。スワップインを完了するために、OSは、アドレスの変化を反映するように、それぞれのページのページテーブルエントリを変更することができる。図5に示す例では、ページ60cが、ストレージデバイスのページ60dにスワップアウトされる。OS34は、仮想マシン内で実行されるので、OS34は、仮想化された物理メモリ114をその物理メモリとみなし、仮想化されたストレージデバイス120をその物理ストレージとみなす。したがって、メモリからページ60cをスワップアウトすることは、事実上、ページ60cの内容を仮想化されたストレージデバイス120に移動させることを含む。デバイス120は、物理ストレージデバイス20のハイパーバイザ30によって作成された抽象化を含むことができ、したがってページ60dの内容は、実際はデバイス20上のページ60kにリダイレクトされ得る。いくつかの実施形態では、ハイパーバイザ30は、たとえば、Intel(登録商標)から提供されるVT−d技術を使用して、ゲストVM32がストレージデバイス20に直接アクセスできるようにすることができる。このような構成では、仮想化されたストレージデバイス120は、ホストシステム10の実際の物理ストレージデバイスと一致することができる。スワップインを行うために、OS34は、ページ60dの内容を、仮想化された物理メモリ114のページ60eに移動させることができる。ゲストOS34は、ページ60aからページ60eへのアドレス変換(図5の破線矢印)を示すように、ページ60aに対応するページテーブルエントリをさらに変更することができる。ページ60eは、物理メモリ14内のページ60mにマップされ得る。
[0038]図6は、本発明のいくつかの実施形態によりマルウェアから仮想マシンを保護するためにメモリ内部監視エンジン40によって行われる例示的な一連のステップを示す。このようなアンチマルウェア防御は、たとえば、それぞれのVM内で実行される選択されたプロセス(以降ターゲットプロセスとみなされる)のメモリ空間のページ(以降ターゲットページとみなされる)を識別すること、およびたとえば悪意のあるソフトウェアエンティティによる許可されていない変更からそれぞれのページの内容を保護することを含む。別の例では、内部監視エンジン40は、ターゲットページが悪意のあるコードを含んでいるかどうかを判定することができる。ターゲットプロセスは、たとえば、図4ではアプリケーション42e〜fなどのアプリケーションに、またはゲストOS34に属することがある。ターゲットプロセスがユーザレベルのプロセッサ特権(たとえば、Windows(登録商標)におけるユーザモード)で実行されるとき、ターゲットページの内容は、常にメモリにあるわけではないが、代わりにときどきOSによってメモリにスワップインおよびメモリからスワップアウトされることがある。VM32の外で実行されることによって、メモリ内部監視エンジン40は、そのようなスワップアウトされたメモリページの内容に直接アクセスできない可能性がある。
[0039]一連のステップ302〜304において、エンジン40は、現在の実行コンテキストがターゲットプロセスの実行コンテキストになるまで、すなわち、現在実行中の命令がターゲットプロセスに属するまで待つ。現在の実行コンテキストを決定することは、たとえば、それぞれのVMの仮想プロセッサのCR3レジスタの内容を読み取ることを含むことができる(x86プラットフォームのCR3レジスタは、実行中の各プロセスを一意に識別する、ページング構造のアドレスを記憶する)。実行コンテキストが、ターゲットプロセスの実行コンテキストであるとき、一連のステップ306〜308においてエンジン40は、ターゲットページの内容が現在メモリからスワップアウトされているかどうかを判定することができる。ターゲットページの内容がメモリにあるとき、ステップ316においてエンジン40は、たとえば、ターゲットページの内容を分析するおよび/または保護するために、ターゲットページを内部監視することに進むことができる。ターゲットページの内容が現在スワップアウトされているとき、ステップ310においてエンジン40は、以下にさらに詳細に説明するように、ターゲットページのスワップインを強制するために、それぞれのVMにページフォールトを直接インジェクトする。次に、一連のステップ312〜314において、エンジン40は、ターゲットページがスワップインされるまで、すなわち、それぞれのページの内容がそれぞれのVMの仮想化された物理メモリにマップされるまで待って、内部監視を行う。
[0040]ターゲットページがメモリにあるかどうかを判定する(ステップ306〜308)ために、ならびにターゲットページがスワップインされたかどうかを判定する(ステップ312〜314)ために、メモリ内部監視エンジン40は、OS34によってセットアップされたページテーブルの内容にアクセスすることができる。いくつかの実施形態では、ターゲットページのページテーブルエントリのフィールド(たとえば、専用ビット)が、それぞれのページが現在メモリに存在しているかどうかを示す。
[0041]図7は、ページフォールトを直接インジェクトし、したがってターゲットページのスワップインを強制する(図6のステップ310)ためにエンジン40によって行われる例示的な一連のステップを示す。ステップシーケンス322〜324において、エンジン40は、現在の状態または仮想プロセッサ112を評価して、ページフォールト例外がVM32に安全にインジェクトされ得るかどうかを判定する。ステップ322は、現在処理中の割り込み要求の優先度を評価することを含むことができる。Microsoft Windows(登録商標)システムでは、このような評価は、たとえば、VM32のセグメントレジスタの内容を調べることによって、現在の割り込み要求レベル(IRQL:interrupt request level)を決定することを含むことができる。このような例示的なレジスタは、IRQLを含むデータ構造へのポインタを記憶する、x86プロセッサアーキテクチャのFSレジスタおよび/またはGSレジスタを含む。例示的な実施形態では、IRQL<2のとき、ページフォールトをインジェクトすることは安全であると考えられる。待機中のより高い優先度の割り込み(たとえば、IRQL≧2)があるとき、ステップ322〜324は、高優先度の要求が満たされるのを待つ。
[0042]いくつかの実施形態では、ステップ322は、仮想プロセッサ112が現在実行されている特権レベル(リング)を決定することを含むことができる。Microsoft Windows(登録商標)を実行中のホストシステムでは、プロセッサがユーザモード(リング3)で実行されている間、IRQLはゼロであり、したがってユーザモードのページに対応するページフォールトのインジェクションは、安全であるとみなされ得る。プロセッサ112がカーネルモード(リング0)で実行されるとき、フォールトインジェクションが安全であるかどうかを推論するにはさらなる判定(further determinations)が必要とされることがある。
[0043]一連のステップ326〜328は、ターゲットページのスワップインをトリガするように構成されたページフォールト例外をVM32にインジェクトする。例示的な実施形態では、ステップ326において、エンジン40は、それぞれのVMの仮想プロセッサのCR2レジスタにターゲットページの仮想アドレスを書き込み、どの仮想ページをメモリにスワップするかをOS34に示す。次に、ステップ328において、エンジン40は、たとえばVM32の仮想マシン制御構造(VMCS)の制御ビットのセットに書き込むことによって仮想化されたプロセッサ112内で例外をトリガする。それぞれの制御ビットは、それぞれのVM内でページフォールトをトリガするように構成可能である。仮想化を支援するように構成されたIntel(登録商標)プロセッサでは、このような制御ビットは、VMCSのVMエントリイベントインジェクションフィールドの部分である。
[0044]VM制御構造は、ホストシステム10で実行されるゲストVMを記述するためにハイパーバイザ30によって維持される特別な種類のデータ構造である。VMCSのフォーマットは、実装固有および/またはプラットフォーム固有であってもよい。複数の仮想化されたプロセッサ112を含んだVMについては、ハイパーバイザ30は、各仮想プロセッサに別個のVMCSを維持することができる。いくつかの実施形態では、各VMCSは、ゲスト状態エリアと、ホスト状態エリアとを含むことができ、ゲスト状態エリアは、CPU状態および/またはそれぞれの仮想プロセッサの制御レジスタの内容などのデータを記憶し、ホスト状態エリアは、ハイパーバイザ30に対する同様のデータを記憶する。いくつかの実施形態では、プロセッサ12は、メモリ内の領域を各VMCSと関連付け、VMCS領域と名付けられる。ソフトウェアは、領域のアドレス(たとえば、VMCSポインタ)を使用して特定のVMCSを参照することができる。いかなるときでも、最大1つのVMCSがプロセッサ12にロードされ、VMが現在プロセッサの制御を行っていることを表すことができる。
[0045]図8〜図9は、Windows(登録商標)環境における本発明のいくつかの実施形態の例示的な応用を示す。図8は、ターゲットプロセスを実行可能なメインの仮想メモリアドレスを決定する(determine)ために、エンジン40によって行われる一連のステップを示す。ステップ332において、エンジン40が、ターゲットプロセスの起動を検出することができる。ステップ322は、アクティブプロセスのリストを管理するOSの機構をインターセプトすることなど、当技術分野で知られている任意の方法を使用することができる。たとえば、Windows(登録商標)では、プロセスが作成されるたびに、それぞれのプロセスのインジケータが、アクティブプロセスのリストに挿入され、それぞれのプロセスが終了すると、インジケータはリストから削除される。いくつかの実施形態では、プロセスを起動すると、OS34はまた、OS34によって使用されるデータを含んだプロセス環境ブロック(PEB)として知られているプロセス固有のデータ構造をセットアップして、それぞれのプロセスに関連したリソースを管理する。アクティブプロセスのリストにターゲットプロセスを挿入するためにOS命令をインターセプトすること(たとえば、フックを設置すること)によって、エンジン40は、それぞれのPEBのメモリアドレスなどの情報を取得することができ、エンジン40はこれをステップ334において引き出すことができる。Windowsでは、PEBの仮想アドレスは、エグゼクティブプロセスブロック(EPROCESS)として知られているOSのデータ構造で記憶される。図10は、このようなプロセス固有のデータ構造の説明図を示す。
[0046]ユーザレベルのデータ構造であるので、PEBデータを含んでいる仮想メモリページは、現在メモリにある、またはないことがある。ステップ336においてエンジン40は、それぞれの仮想メモリページがスワップアウトされているかどうかを判定し、スワップアウトされていない場合、ステップ340においてエンジン40は、たとえば、PEBデータをパースすることによって、ターゲットプロセスを実行可能なメインの仮想アドレスを決定することに進む。PEBデータが現在メモリからスワップアウトされているとき、ステップ338が、たとえば図7に関して上述した機構を使用して、PEBデータを含んでいるそれぞれのページのスワップインを強制する。
[0047]図9は、ターゲットプロセスによってロードされる実行可能モジュール(ライブラリなど)のメモリ内部監視を行うためにエンジン40によって行われる例示的な一連のステップを示す。マルウェアは多くの場合、悪意のあるコードを運ぶためのベクトルとしてDLLを使用し、したがって、そのようなライブラリの内容を分析することが、アンチマルウェア動作には重要である可能性がある。ステップ342においてPEBデータを含んだ仮想ページにアクセスした後(たとえば上記ステップ336〜338参照)、一連のステップ344〜346〜348において、エンジン40は、ターゲットプロセスによって使用される、たとえばダイナミックリンクライブラリ(DLL)などのターゲットモジュールを識別し、それぞれのモジュールがロードされたかどうかを判定する。ターゲットモジュールがロードされたとき、エンジン40は、たとえばPEBの特定のデータフィールドにより、ステップ350においてそれぞれのモジュールの仮想アドレスを決定することができる(たとえば図10参照)。ステップ352においてエンジン40は、モジュールデータを含み、ステップ350で決定されたアドレスにある仮想ページが、現在メモリからスワップアウトされているかどうかを判定し、スワップアウトされていないとき、ステップ356において、それぞれのモジュールのメモリ内部監視を行うことに進む。それぞれのモジュールの仮想ページが現在スワップアウトされているとき、ステップ354においてエンジン40は、たとえば、図7に関して上述した機構を使用して、それぞれの仮想ページのスワップインを強制する。
[0048]図10は、Windows(登録商標)環境における仮想アドレスの例示的な決定を示す。いくつかの実施形態では、OS34は、カーネル仮想メモリ空間214dを維持し、仮想アドレス60pに位置しているページが、ターゲットプロセスの実行を管理するためにOS34によって使用されるEPROCESS構造の部分を含んでいる。アドレス60pは、たとえば、ターゲットプロセスの起動をインターセプトすることによって決定され得る(たとえば図8のステップ332参照)。EPROCESSデータ構造のフィールドは、ターゲットプロセスのプロセス環境ブロック(PEB)のインジケータ(たとえばポインタ)を収容する。ポインタは、OS34によってターゲットプロセスに割り当てられたプロセス仮想メモリ214e内の仮想アドレス60qを示す。PEB構造は、ターゲットプロセスによってロードされた実行可能モジュール(たとえばライブラリ)についての情報を含んだ構造(LDRデータ)へのポインタをさらに含む。LDRデータは、空間214e内のアドレス60rに位置している。OS34によってセットアップされたプロセス管理データ構造の階層を歩くことによって、内部監視エンジン40は、内部監視のターゲットとされるオブジェクトの複数の仮想アドレスをこのように決定することができる。このようなアドレスに位置しているメモリページの内容がRAMからスワップアウトされるとき、エンジン40は、本明細書に記載する方法を使用してOS34にそれぞれのページをスワップインするよう強制することができる。
[0049]上述の例示的なシステムおよび方法により、仮想化技術を使用してマルウェアからホストシステムを保護することができる。いくつかの実施形態では、メモリ内部監視エンジンは、ホストシステムで実行される仮想マシンの下で動作する。メモリ内部監視エンジンは、それぞれの仮想マシン内で実行されるプロセスによって使用されるメモリページの内容を分析することによって仮想マシンを保護することができる。内部監視エンジンは、それぞれのVMの外から、それぞれのプロセスのコードがマルウェアを含んでいるかどうかをこのように判定することができる。
[0050]いくつかの実施形態では、内部監視エンジンは、特に、いくつかのドライバおよびページテーブルなど、いくつかの重要なオブジェクトの(たとえばマルウェアによる)許可されていない変更を防ぐこともできる。そのようなオブジェクトを保護するために、いくつかの実施形態は、それぞれのオブジェクトに割り当てられたメモリページへ書き込もうとする試みをインターセプトすることによって変化を防ぐことができる。このようなインターセプションは、ハイパーバイザのレベルから行われ得る。
[0051]従来のアンチマルウェアシステムでは、セキュリティアプリケーションが、オペレーティングシステムのまたは一般的なアプリケーションのプロセッサ特権レベルと同様のプロセッサ特権レベルで実行される。このようなシステムは、やはりオペレーティングシステムの特権レベルで動作する高度なマルウェアには脆弱である可能性がある。対照的に、本発明のいくつかの実施形態では、ハイパーバイザが最高の特権レベル(たとえば、ルートモードまたはリング1)で実行され、仮想マシンに対するオペレーティングシステムに取って代わる。メモリ内部監視エンジンは、ハイパーバイザと同じプロセッサ特権レベルで実行され得る。アンチマルウェア動作は、したがってオペレーティングシステムのプロセッサ特権レベルよりも高いプロセッサ特権レベルから行われ得る。いくつかの実施形態では、単一のメモリ内部監視エンジンが、それぞれのコンピュータシステムで同時に実行される複数の仮想マシンを保護することができる。
[0052]メモリ内部監視エンジンは、保護のターゲットとなる仮想マシンの外で実行されるが、エンジンは、保護されるVM内で実行されるソフトウェアオブジェクトによって使用される仮想アドレスを決定することができる。しかしながら、そのような仮想アドレスが、オペレーティングシステムによってメモリから現在スワップアウトされているページの内容を指し示すとき、メモリ内部監視エンジンは、それぞれの内容にアクセスすることができない。本発明のいくつかの実施形態では、ページが現在スワップアウトされているとき、メモリ内部監視エンジンは、OSにそれぞれのページをスワップインするよう強制し、それぞれのページの内容を分析および/または保護のために利用可能にすることができる。スワップインを強制するために、メモリ内部監視エンジンは、それぞれの仮想マシンの仮想化されたプロセッサ内で、ページフォールト例外などのプロセッサイベントをトリガすることができ、プロセッサイベントはオペレーティングシステムに、スワップアウトされたページをメモリに戻させるよう構成される。プロセッサイベントをトリガすることは、たとえば、それぞれの仮想マシンによって使用される仮想マシン制御構造の制御ビットのセットを書き込むことを含むことができる。メモリ内部監視エンジンは、したがってそれぞれの仮想マシン内で実行されるOSからのまたは他のソフトウェアからの援助なしに、それぞれのVMにページフォールトをインジェクトすることができる。
[0053]上記の実施形態は、本発明の範囲を逸脱することなく多くの方法で変更され得ることは、当業者には明らかであろう。したがって、本発明の範囲は、添付の特許請求の範囲およびそれらの法的同等物によって決定されるべきである。

Claims (28)

  1. ハードウェアプロセッサを含むホストシステムであって、前記ハードウェアプロセッサは、
    仮想化されたプロセッサおよび仮想化されたメモリを含み、前記仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成された仮想マシンを公開するように構成されたハイパーバイザと、
    前記仮想マシンの外で実行されるメモリ内部監視エンジンであって、
    前記仮想マシンのページテーブルにより、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定し、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているときに、前記仮想マシンにページフォールトを直接インジェクトし、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる
    ように構成されたメモリ内部監視エンジンと
    を動作させるように構成され、前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのレジスタに書き込むことを含み、前記レジスタは、前記仮想化されたプロセッサによるある仮想アドレスへのアクセスがページフォールトを発生させたときに、当該ある仮想アドレスが格納されるレジスタである、ホストシステム。
  2. ハードウェアプロセッサを含むホストシステムであって、前記ハードウェアプロセッサは、
    仮想化されたプロセッサおよび仮想化されたメモリを含み、前記仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成された仮想マシンを公開するように構成されたハイパーバイザと、
    前記仮想マシンの外で実行されるメモリ内部監視エンジンであって、
    前記仮想マシンのページテーブルにより、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定し、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているときに、前記仮想マシンにページフォールトを直接インジェクトし、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる
    ように構成されたメモリ内部監視エンジンと
    を動作させるように構成され、前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのCR2レジスタに書き込むことを含む、ホストシステム。
  3. 請求項1または2に記載のホストシステムであって、
    前記仮想マシンを公開することは、前記仮想化されたプロセッサの現在状態を記憶するデータ構造を構成することを含み、前記データ構造は、所定の値に設定されると、前記仮想化されたプロセッサにページフォールトを発生させるイベントインジェクションフィールドを含み、
    前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが前記所定の値を前記イベントインジェクションフィールドに書き込むことをさらに含む、
    ホストシステム。
  4. 請求項1から3のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、
    前記ページフォールトを直接インジェクトするのに備えて、前記仮想化されたプロセッサの現在の状態により、インジェクション条件が満たされるかどうかを判定し、
    前記インジェクション条件が満たされるときに、前記ページフォールトを直接インジェクトする
    ようにさらに構成された、ホストシステム。
  5. 請求項に記載のホストシステムであって、前記インジェクション条件が満たされるかどうかを判定することは、前記仮想化されたプロセッサの現在の割り込み要求レベル(IRQL)を決定することを含む、ホストシステム。
  6. 請求項4または5に記載のホストシステムであって、前記インジェクション条件が満たされるかどうかを判定することは、前記仮想化されたプロセッサが現在実行されている特権レベルを決定することを含む、ホストシステム。
  7. 請求項4から6のうちの何れか一項に記載のホストシステムであって、前記インジェクション条件が満たされるかどうかを判定することは、前記仮想化されたプロセッサの現在の実行コンテキストを決定することを含む、ホストシステム。
  8. 請求項4から7のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、前記インジェクション条件が満たされるかどうかの判定に応答して、前記インジェクション条件が満たされないときに、前記インジェクション条件が満たされるまで前記ページフォールトのインジェクトを遅らせるようにさらに構成された、ホストシステム。
  9. 請求項1から8のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、前記ページフォールトを直接インジェクトすることに応じて、
    前記ターゲットページのページテーブルエントリの変更を検出し、
    前記ターゲットページが前記変更により前記仮想化されたメモリの前記ページにマップされたかどうかを判定する
    ようにさらに構成された、ホストシステム。
  10. 請求項1から9のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、前記ターゲットページの内容により前記ターゲットプロセスが悪意のあるものであるかどうかを判定するようにさらに構成された、ホストシステム。
  11. 請求項1から10のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、前記ターゲットページの内容を変更しようとする試みをインターセプトするようにさらに構成された、ホストシステム。
  12. 請求項1から11のうちの何れか一項に記載のホストシステムであって、前記メモリ内部監視エンジンは、前記ターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定するのに備えて、
    前記仮想マシン内の前記ターゲットプロセスの起動を示す、前記仮想化されたプロセッサのイベントを検出し、
    前記イベントにより前記ターゲットページの仮想アドレスを決定する
    ようにさらに構成された、ホストシステム。
  13. ホストシステムの少なくとも1つのハードウェアプロセッサが、ハイパーバイザを実行するステップであって、前記ハイパーバイザは、仮想化されたプロセッサおよび仮想化されたメモリを含む仮想マシンを公開するように構成され、前記仮想マシンは前記仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成された、ステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定するステップと、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているときに、前記少なくとも1つのハードウェアプロセッサが、前記仮想マシンにページフォールトを直接インジェクトするステップであって、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる、ステップと
    を含み、前記ページフォールトを直接インジェクトするステップは、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのレジスタに書き込むステップを含み、前記レジスタは、前記仮想化されたプロセッサによるある仮想アドレスへのアクセスがページフォールトを発生させたときに、当該ある仮想アドレスが格納されるレジスタである、方法。
  14. ホストシステムの少なくとも1つのハードウェアプロセッサが、ハイパーバイザを実行するステップであって、前記ハイパーバイザは、仮想化されたプロセッサおよび仮想化されたメモリを含む仮想マシンを公開するように構成され、前記仮想マシンは前記仮想化されたプロセッサを使用してターゲットプロセスを実行するようにさらに構成された、ステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定するステップと、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているときに、前記少なくとも1つのハードウェアプロセッサが、前記仮想マシンにページフォールトを直接インジェクトするステップであって、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる、ステップと
    を含み、前記ページフォールトを直接インジェクトするステップは、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのCR2レジスタに書き込むステップを含む、方法。
  15. 請求項13または14に記載の方法であって、
    前記仮想マシンを公開することは、前記仮想化されたプロセッサの現在状態を記憶するデータ構造を構成することを含み、前記データ構造は、所定の値に設定されると、前記仮想化されたプロセッサにページフォールトを発生させるイベントインジェクションフィールドを含み、
    前記ページフォールトを直接インジェクトするステップは、前記所定の値を前記イベントインジェクションフィールドに書き込むステップをさらに含む、
    方法。
  16. 請求項13から15のうちの何れか一項に記載の方法であって、前記ページフォールトを直接インジェクトするのに備えて、
    前記少なくとも1つのハードウェアプロセッサが、前記仮想化されたプロセッサの現在の状態により、インジェクション条件が満たされるかどうかを判定するステップと、
    前記インジェクション条件が満たされるときに、前記少なくとも1つのハードウェアプロセッサ、前記ページフォールトを直接インジェクトするステップと
    をさらに含む方法。
  17. 請求項16に記載の方法であって、前記インジェクション条件が満たされるかどうかを判定するステップは、前記仮想化されたプロセッサの現在の割り込み要求レベル(IRQL)を決定するステップを含む、方法。
  18. 請求項16または17に記載の方法であって、前記インジェクション条件が満たされるかどうかを判定するステップは、前記仮想化されたプロセッサが現在実行されている特権レベルを決定するステップを含む、方法。
  19. 請求項16から18のうちの何れか一項に記載の方法であって、前記インジェクション条件が満たされるかどうかを判定するステップは、前記仮想化されたプロセッサの現在の実行コンテキストを決定するステップを含む、方法。
  20. 請求項16から19のうちの何れか一項に記載の方法であって、前記インジェクション条件が満たされるかどうかの判定に応答して、前記インジェクション条件が満たされないときに、前記インジェクション条件が満たされるまで前記ページフォールトのインジェクトを遅らせるステップをさらに含む方法。
  21. 請求項13から20のうちの何れか一項に記載の方法であって、前記ページフォールトを直接インジェクトするのに応じて、
    前記少なくとも1つのハードウェアプロセッサ、前記ターゲットページのページテーブルエントリの変更を検出するステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記ターゲットページが前記変更により前記仮想化されたメモリの前記ページにマップされたかどうかを判定するステップと
    をさらに含む方法。
  22. 請求項13から21のうちの何れか一項に記載の方法であって、前記少なくとも1つのハードウェアプロセッサが、前記ターゲットページの内容により前記ターゲットプロセスが悪意のあるものであるかどうかを判定するステップをさらに含む方法。
  23. 請求項13から22のうちの何れか一項に記載の方法であって、前記少なくとも1つのハードウェアプロセッサが、前記ターゲットページの内容を変更しようとする試みをインターセプトするステップをさらに含む方法。
  24. 請求項13から23のうちの何れか一項に記載の方法であって、前記ターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定するのに備えて、
    前記少なくとも1つのハードウェアプロセッサが、前記仮想マシン内の前記ターゲットプロセスの起動を示す、前記仮想化されたプロセッサのイベントを検出するステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記イベントにより前記ターゲットページの仮想アドレスを決定するステップと
    をさらに含む方法。
  25. ホストシステムにメモリ内部監視エンジンを形成させるプログラムであって、前記ホストシステムは、仮想化されたプロセッサおよび仮想化されたメモリを含む仮想マシンを公開するハイパーバイザを実行、前記仮想マシンは、前記仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成され、前記メモリ内部監視エンジンは、前記仮想マシンの外で実行され、前記メモリ内部監視エンジンは、
    前記仮想マシンのページテーブルにより、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定し、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているとき、前記仮想マシンにページフォールトを直接インジェクトし、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる
    ように構成され、前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのレジスタに書き込むことを含み、前記レジスタは、前記仮想化されたプロセッサによるある仮想アドレスへのアクセスがページフォールトを発生させたときに、当該ある仮想アドレスが格納されるレジスタである、プログラム。
  26. ホストシステムにメモリ内部監視エンジンを形成させるプログラムであって、前記ホストシステムは、仮想化されたプロセッサおよび仮想化されたメモリを含む仮想マシンを公開するハイパーバイザを実行、前記仮想マシンは、前記仮想化されたプロセッサを使用してターゲットプロセスを実行するように構成され、前記メモリ内部監視エンジンは、前記仮想マシンの外で実行され、前記メモリ内部監視エンジンは、
    前記仮想マシンのページテーブルにより、前記ターゲットプロセスの仮想メモリ空間のターゲットページが前記仮想化されたメモリからスワップアウトされているかどうかを判定し、
    前記ターゲットページが前記仮想化されたメモリからスワップアウトされているとき、前記仮想マシンにページフォールトを直接インジェクトし、前記ページフォールトは前記仮想マシンのオペレーティングシステムに前記ターゲットページを前記仮想化されたメモリのページにマップさせる
    ように構成され、前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが、前記ページフォールトが発生する前に、前記ターゲットページの仮想アドレスを前記仮想化されたプロセッサのCR2レジスタに書き込むことを含む、プログラム。
  27. 請求項25または26に記載のプログラムであって、
    前記仮想マシンを公開することは、前記仮想化されたプロセッサの現在状態を記憶するデータ構造を構成することを含み、前記データ構造は、所定の値に設定されると、前記仮想化されたプロセッサにページフォールトを発生させるイベントインジェクションフィールドを含み、
    前記ページフォールトを直接インジェクトすることは、前記メモリ内部監視エンジンが前記所定の値を前記イベントインジェクションフィールドに書き込むことをさらに含む、
    プログラム。
  28. 請求項25から27のうちの何れか一項に記載のプログラムを記憶したコンピュータ可読記憶媒体。
JP2016527974A 2013-07-17 2014-07-02 仮想マシンにおけるページフォールトインジェクション Active JP6411494B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361847538P 2013-07-17 2013-07-17
US61/847,538 2013-07-17
US14/289,163 2014-05-28
US14/289,163 US9507727B2 (en) 2013-07-17 2014-05-28 Page fault injection in virtual machines
PCT/RO2014/000018 WO2015152747A2 (en) 2013-07-17 2014-07-02 Page fault injection in virtual machines

Publications (3)

Publication Number Publication Date
JP2016525255A JP2016525255A (ja) 2016-08-22
JP2016525255A5 JP2016525255A5 (ja) 2017-02-23
JP6411494B2 true JP6411494B2 (ja) 2018-10-24

Family

ID=52344738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016527974A Active JP6411494B2 (ja) 2013-07-17 2014-07-02 仮想マシンにおけるページフォールトインジェクション

Country Status (13)

Country Link
US (1) US9507727B2 (ja)
EP (1) EP3022648B8 (ja)
JP (1) JP6411494B2 (ja)
KR (1) KR101955189B1 (ja)
CN (1) CN105393229B (ja)
AU (1) AU2014389571B2 (ja)
CA (1) CA2915646C (ja)
ES (1) ES2639500T3 (ja)
HK (1) HK1216679A1 (ja)
IL (1) IL243122B (ja)
RU (1) RU2659472C2 (ja)
SG (1) SG11201510735RA (ja)
WO (1) WO2015152747A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612865B2 (en) 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator
US9898322B2 (en) * 2015-10-29 2018-02-20 International Business Machines Corporation Steganographic message passing between a virtual machine and a hypervisor
WO2017131780A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Identifying object modifications
US10116630B2 (en) * 2016-04-04 2018-10-30 Bitdefender IPR Management Ltd. Systems and methods for decrypting network traffic in a virtualized environment
US10528476B2 (en) * 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US10264002B2 (en) * 2016-07-14 2019-04-16 Mitsui Bussan Secure Directions, Inc. Program, information processing device, and information processing method
US10346050B2 (en) 2016-10-26 2019-07-09 International Business Machines Corporation Virtualization of memory compute functionality
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20180267818A1 (en) * 2017-03-17 2018-09-20 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on notification data
US11150929B2 (en) 2018-05-29 2021-10-19 Red Hat, Inc. Enhanced memory management for virtual machines
CN110209354B (zh) * 2019-05-24 2022-04-19 北京百度网讯科技有限公司 用于处理数据的方法、装置、设备和介质
WO2022087481A1 (en) * 2020-10-22 2022-04-28 Vangaveti Kiran In memory decoy
US11586513B2 (en) 2020-11-17 2023-02-21 Google Llc Live migrating virtual machines to a target host upon fatal memory errors
CN112256404B (zh) * 2020-11-17 2024-04-05 杭州安恒信息技术股份有限公司 一种虚拟机自省方法、装置、设备及介质
US11550673B2 (en) * 2020-11-17 2023-01-10 Google Llc Virtual machines recoverable from uncorrectable memory errors
US11816498B2 (en) * 2021-01-21 2023-11-14 Nutanix, Inc. Early event-based notification for VM swapping
US11977431B2 (en) 2022-03-15 2024-05-07 Google Llc Memory error prevention by proactive memory poison recovery

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240702A (ja) * 1997-02-26 1998-09-11 Sony Corp 並列処理プロセッサおよびその処理方法
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US8291409B2 (en) * 2006-05-22 2012-10-16 Microsoft Corporation Updating virtual machine with patch on host that does not have network access
US7757034B1 (en) 2006-06-29 2010-07-13 Parallels Software International, Inc. Expansion of virtualized physical memory of virtual machine
US7757035B2 (en) * 2007-06-26 2010-07-13 Intel Corporation Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping
US20090113111A1 (en) 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US8244954B2 (en) 2008-10-10 2012-08-14 International Business Machines Corporation On-demand paging-in of pages with read-only file system
US8117373B2 (en) 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
CN102460400B (zh) 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US8271450B2 (en) 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
CN102129531B (zh) * 2011-03-22 2013-07-24 北京工业大学 一种基于Xen的主动防御方法
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
CN102736969B (zh) * 2012-05-22 2014-12-17 中国科学院计算技术研究所 一种针对硬件虚拟化的内存监控方法和系统
US8914458B2 (en) 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations

Also Published As

Publication number Publication date
WO2015152747A2 (en) 2015-10-08
AU2014389571B2 (en) 2019-05-09
EP3022648B1 (en) 2017-06-14
EP3022648A2 (en) 2016-05-25
KR20160033689A (ko) 2016-03-28
CN105393229A (zh) 2016-03-09
WO2015152747A3 (en) 2015-12-03
CN105393229B (zh) 2019-01-18
US20150026807A1 (en) 2015-01-22
EP3022648B8 (en) 2017-08-02
SG11201510735RA (en) 2016-02-26
AU2014389571A1 (en) 2016-01-21
RU2016104469A (ru) 2017-08-22
US9507727B2 (en) 2016-11-29
CA2915646A1 (en) 2015-10-08
CA2915646C (en) 2020-08-25
ES2639500T3 (es) 2017-10-26
RU2659472C2 (ru) 2018-07-02
HK1216679A1 (zh) 2016-11-25
JP2016525255A (ja) 2016-08-22
KR101955189B1 (ko) 2019-03-08
IL243122B (en) 2019-11-28

Similar Documents

Publication Publication Date Title
JP6411494B2 (ja) 仮想マシンにおけるページフォールトインジェクション
JP6378758B2 (ja) 仮想マシンにおけるマルウェア検出のためのプロセス評価
JP6218859B2 (ja) 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
US10489185B2 (en) Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20180267818A1 (en) Hypervisor-assisted approach for locating operating system data structures based on notification data
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
Li et al. Iso-UniK: lightweight multi-process unikernel through memory protection keys

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180828

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180926

R150 Certificate of patent or registration of utility model

Ref document number: 6411494

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250