JP2017526071A - 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法 - Google Patents

仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法 Download PDF

Info

Publication number
JP2017526071A
JP2017526071A JP2017509643A JP2017509643A JP2017526071A JP 2017526071 A JP2017526071 A JP 2017526071A JP 2017509643 A JP2017509643 A JP 2017509643A JP 2017509643 A JP2017509643 A JP 2017509643A JP 2017526071 A JP2017526071 A JP 2017526071A
Authority
JP
Japan
Prior art keywords
guest instruction
guest
host system
execution
instruction
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.)
Granted
Application number
JP2017509643A
Other languages
English (en)
Other versions
JP6496401B2 (ja
JP2017526071A5 (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 JP2017526071A publication Critical patent/JP2017526071A/ja
Publication of JP2017526071A5 publication Critical patent/JP2017526071A5/ja
Application granted granted Critical
Publication of JP6496401B2 publication Critical patent/JP6496401B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

記載されるシステムおよび方法は、ハードウェア仮想化構成での動作中に、ホストシステムによるコンピュータセキュリティアクティビティの有効な実施を可能にする。プロセッサは、ゲストVM内で実行しているゲスト命令がメモリアクセス違反を起こすと、VM中断イベント(例えばVM終了または仮想化例外)を生成するように構成される。いくつかの実施形態では、プロセッサは、VM中断イベントの生成を、ゲスト命令のためのパイプラインの実行ステージの完了まで遅らせ、実行ステージの結果を特定の場所(例えば、セキュリティソフトウェアにより読み出し可能な特定のプロセッサレジスタ)に、上記イベントの生成前に保存するようにさらに構成される。

Description

関連出願
[0001]本出願は、2014年8月18日に出願された、「Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine(仮想マシンを終了する際に現在のプロセッサ命令を公開するためのシステムおよび方法)」という名称の米国仮特許出願第62/038,476号の出願日の利益を主張するものであり、そのすべての内容は、参照により本明細書に組み込まれている。
[0002]本発明はコンピュータセキュリティに関し、詳細にはハードウェア仮想化構成でのコンピュータセキュリティ動作の実施に関する。
[0003]マルウェアとしても知られている悪意のあるソフトウェアは、世界中で非常に多くのコンピュータシステムに影響を及ぼしている。マルウェアは、コンピュータウイルス、ワーム、ルートキットおよびスパイウェアなどの多くの形態で何百万ものコンピュータユーザを重大な危険にさらし、したがってコンピュータユーザは、とりわけ、データおよび機密情報の損失、個人情報の盗難、および生産性の損失の攻撃にさらされている。
[0004]現代の計算アプリケーションは、しばしばハードウェア仮想化技術を使用して、仮想マシン(VM)として知られている、物理コンピュータシステムと同じように様々な方式で振る舞う模擬的なコンピュータ環境を生成している。サーバ統合およびサービスとしてのインフラストラクチャ(Infrastructure−as−a−service)などの用途では、いくつかの仮想マシンが同じコンピュータシステム上で同時に走り、それらの間でハードウェア資源を共有することができ、したがって投下資本および運転コストを低減することができる。個々の仮想マシンは、その独自のオペレーティングシステムおよび/またはソフトウェアを他の仮想マシンとは別に走らせることができる。マルウェアおよびスパイウェアなどのコンピュータセキュリティの脅威の止まることのない拡散のため、個々のこのような仮想マシンは保護を必要とする可能性がある。
[0005]いくつかのセキュリティ解決法は、保護されたVM内で実行されているゲストプロセスがメモリにアクセスする方式を監視して、潜在的な悪意のあるアクティビティを識別することによって仮想マシンを保護している。一例では、コンピュータセキュリティプログラムは、メモリの特定の領域、例えばゲストプロセスによって使用されるメモリの領域への書込みが試行され、またはその領域からのコードの実行が試行される際に、内部イベント(例えば例外イベントまたはVM終了イベント)を生成するためのプロセッサを構成することができる。このようなプロセッサイベントは、典型的には、現在のスレッドの実行を中断し、また、プロセッサを、コンピュータセキュリティプログラムの一部を形成することができるイベントハンドラルーチンの実行に切り換える。コンピュータセキュリティプログラムは、そのようにして、マルウェアであることが疑われる方式によるメモリアクセスの試行を検出することができる。イベントを分析した後、コンピュータセキュリティプログラムは、イベントが生じた時点で実行されていたプロセッサ命令をエミュレートすることができ、また、実行を元のスレッドに戻すことができる。このような方法は、当分野ではトラップアンドエミュレートとして総称的に知られている。
[0006]従来のトラップアンドエミュレート方法は、相当な計算負荷をホストコンピュータシステムに課すことがあり、潜在的にユーザ体験および生産性に影響を及ぼす可能性がある。したがって仮想化環境に適した有効なコンピュータセキュリティシステムおよび方法を開発することは大いなる関心事である。
[0007]一態様によれば、ホストシステムは、仮想マシンおよびコンピュータセキュリティプログラムを実行するように構成された少なくとも1つのハードウェアプロセッサを備える。少なくとも1つのハードウェアプロセッサは、実行のためのゲスト命令を受け取るのに応答して、ゲスト命令の仮想マシン内での実行によりメモリアクセス許可の違反が生じるかどうかを判定するようにさらに構成される。少なくとも1つのハードウェアプロセッサは、ゲスト命令の実行により違反が生じるかどうかの判定に応答して、ゲスト命令の実行により違反が生じる場合に、ゲスト命令のオペレータをゲスト命令のオペランドへの適用の結果を求め、その結果を、コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、ゲスト命令の実行を中断するようにさらに構成される。少なくとも1つのハードウェアプロセッサは、ゲスト命令の実行の中断に応答して、コンピュータセキュリティプログラムの実行に切り換えるようにさらに構成され、コンピュータセキュリティプログラムは、違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成される。
[0008]別の態様によれば、ホストシステムをコンピュータセキュリティの脅威から保護する方法であって、実行のためのゲスト命令を受け取るのに応答して、ゲスト命令を実行することによりメモリアクセス許可の違反が生じるかどうかを、ホストシステムの少なくとも1つのハードウェアプロセッサを使用して判定するステップを含み、ゲスト命令は、ホストシステムによって公開される仮想マシン内で実行される。方法は、ゲスト命令が違反を生じさせるかどうかの決定に応答して、ゲスト命令を実行することにより違反が生じる場合に、少なくとも1つのハードウェアプロセッサを使用して、ゲスト命令のオペレータのゲスト命令のオペランドへの適用の結果を求めるステップと、少なくとも1つのハードウェアプロセッサを使用して、その結果を、コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込むステップと、ゲスト命令の実行を中断するステップとをさらに含む。方法は、ゲスト命令の実行の中断に応答して、コンピュータセキュリティプログラムの実行に切り換えるステップをさらに含み、コンピュータセキュリティプログラムは、違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成される。
[0009]別の態様によれば、ホストシステムの少なくとも1つのハードウェアプロセッサは、実行のためのゲスト命令を受け取るのに応答して、ゲスト命令を実行することによりメモリアクセス許可の違反が生じるかどうかを決定するように構成することができ、ゲスト命令は、ホストシステムによって公開されるゲスト仮想マシン内で実行される。少なくとも1つのハードウェアプロセッサは、ゲスト命令が違反を生じさせるかどうかの判定に応答して、ゲスト命令を実行することにより違反が生じる場合に、ゲスト命令のオペレータのゲスト命令のオペランドへの適用の結果を求め、その結果を、コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、ゲスト命令の実行を中断するようにさらに構成することができる。少なくとも1つのハードウェアプロセッサは、ゲスト命令の実行の中断に応答して、コンピュータセキュリティプログラムの実行に切り換えるようにさらに構成することができ、コンピュータセキュリティプログラムは、違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成される。
[0010]別の態様によれば、非一時的コンピュータ可読媒体は、ホストシステムの少なくとも1つのハードウェアプロセッサによって実行されると、ホストシステムに、メモリアクセス許可の違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成されたコンピュータセキュリティプログラムを形成させる命令を記憶する。少なくとも1つのハードウェアプロセッサは、実行のためのゲスト命令を受け取るのに応答して、ゲスト命令を実行することにより違反が生じるかどうかを判定するように構成することができ、ゲスト命令は、ホストシステムによって公開される仮想マシン内で実行される。少なくとも1つのハードウェアプロセッサは、ゲスト命令が違反を生じさせるかどうかの判定に応答して、ゲスト命令を実行することにより違反が生じる場合に、ゲスト命令のオペレータのゲスト命令のオペランドへの適用の結果を求め、その結果を、コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、ゲスト命令の実行を中断するようにさらに構成することができる。少なくとも1つのハードウェアプロセッサは、ゲスト命令の実行の中断に応答して、コンピュータセキュリティプログラムの実行に切り換えるようにさらに構成することができる。
[0011]本発明の上記態様および利点は、以下の詳細な説明を読み、また、図面を参照することにより、より良好に理解されるであろう。
[0012]本発明のいくつかの実施形態によるホストコンピュータシステムの例示的ハードウェア構成を示す図である。 [0013]本発明のいくつかの実施形態による、ホストシステム上で実行するハイパーバイザによって公開される仮想マシンの例示的セット、および仮想マシンのセットを保護するコンピュータセキュリティモジュール(CSM)を示す図である。 [0014]CSMが仮想マシンの下で実行され、また、例外ハンドラが保護された仮想マシン内で実行される、本発明の代替実施形態を示す図である。 [0015]CSMおよび例外ハンドラの両方が保護された仮想マシン内で実行する、本発明のさらに別の実施形態を示す図である。 [0016]本発明のいくつかの実施形態による、ゲスト仮想マシンとして公開された仮想化ハードウェアの例示的構成を示す図である。 [0017]本発明のいくつかの実施形態による、図2−Aに示されるハードウェア仮想化構成における一組の例示的メモリアドレス変換を示す図である。 [0018]本発明のいくつかの実施形態によるプロセッサの例示的構成要素を示す図である。 [0019]本発明のいくつかの実施形態によるプロセッサの例示的中断イベントレジスタを示す図である。 [0020]x86命令セットの例示的プロセッサ命令のアセンブリ言語表現、およびその対応するマシンコード表現を示す図である。 [0021]本発明のいくつかの実施形態による、プロセッサ命令を実行するためにプロセッサによって実施されるステップの例示的シーケンスを示す図である。 [0022]本発明のいくつかの実施形態による、ゲスト仮想マシンを保護するためにコンピュータセキュリティモジュールによって実施されるステップの例示的シーケンスを示す図である。
[0023]以下の説明では、構造間の詳説されているすべての接続は、直接の動作接続であっても、あるいは中間構造を介した間接的な動作接続であってもよいことを理解されたい。一組の要素は、1つまたは複数の要素を含む。要素の詳説は、すべて、少なくとも1つの要素を意味することを理解されたい。複数の要素は、少なくとも2つの要素を含む。特に要求されない限り、説明されているすべての方法ステップは、必ずしも示されている特定の順序で実施される必要はない。第2の要素から導出される第1の要素(例えばデータ)は、第2の要素に等しい第1の要素、ならびに第2の要素を処理することによって生成される第1の要素、および任意選択で他のデータを包含する。パラメータに従って決定する(making a determine or a decision;判定する、求める)ことは、パラメータに従って、また、任意選択で他のデータに従って決定することを包含する。特に明記されていない限り、何らかの量/データのインジケータは、その量/データ自体であっても、あるいはその量/データ自体とは異なるインジケータであってもよい。コンピュータプログラムは、タスクを実行する一連のプロセッサ命令である。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、他のコンピュータプログラムの独立型ソフトウェアエンティティまたはサブエンティティ(例えばサブルーチン、ライブラリ)であってもよい。特に明記されていない限り、コンピュータセキュリティプログラムは、意図されないまたは許可されていないアクセス、修正または破壊から機器およびデータを保護するコンピュータプログラムである。特に明記されていない限り、プロセスは、アプリケーションまたはオペレーティングシステムの一部などのコンピュータプログラムのインスタンスであり、また、少なくとも実行スレッドおよび実行スレッドに割り当てられた仮想メモリ空間を有することを特徴とし、それぞれの仮想メモリ空間の内容は実行可能コードを含む。特に明記されていない限り、ページは、ホストシステムの物理メモリに個々にマッピングされ得る仮想メモリの最小単位を表している。「論理」という用語は、固定された機能または再構成可能な機能(例えばフィールドプログラマブルゲートアレイ回路)を有するハードウェア回路機構を包含するが、このような機能を汎用コンピュータ上でエミュレートするソフトウェアは包含しない。特に明記されていない限り、レジスタは、プロセッサと一体化された、すなわちプロセッサの一部を形成している記憶構成要素を表しており、また、ランダムアクセスメモリ(RAM)とは全く異なる。コンピュータ可読媒体は、磁気記憶媒体、光記憶媒体および半導体記憶媒体などの非一時的媒体(例えばハードドライブ、光ディスク、フラッシュメモリ、DRAM)、ならびに導電ケーブルなどの通信リンクおよび光ファイバリンクを包含している。いくつかの実施形態によれば、本発明は、とりわけ、本明細書において説明される方法を実施するようにプログラムされたハードウェア(例えば1つまたは複数のプロセッサ)、ならびに本明細書において説明される方法を実施するための命令をエンコードするコンピュータ可読媒体を備えるコンピュータシステムを提供する。
[0024]以下の説明は、一例として本発明の実施形態を示したものであり、必ずしも制限するためのものではない。
[0025]図1は、本発明のいくつかの実施形態によるホストシステム10の例示的ハードウェア構成を示したものである。ホストシステム10は、企業サーバなどの法人組織の計算デバイス、またはパーソナルコンピュータ、タブレットコンピュータもしくはスマートフォンなどのエンドユーザデバイスを表すことができる。他の例示的ホストシステムは、TV、ゲームコンソール、着用可能計算デバイス、またはメモリおよびプロセッサを有する任意の他の電子デバイスを含む。ホストシステム10を使用して、とりわけ、ブラウザ、文書処理アプリケーションおよび電子通信(例えば電子メール、インスタントメッセージング)アプリケーションなどの一組のソフトウェアアプリケーションが実行され得る。いくつかの実施形態では、ホストシステム10は、ハードウェアの仮想化を支援し、また、以下で示されるように一組の仮想マシンを公開するように構成される。
[0026]図1は、コンピュータシステムを示したもので、スマートフォンおよびタブレットコンピュータなどの他のホストシステムのハードウェア構成は異なる場合がある。システム10は、プロセッサ12、メモリユニット14、一組の入力デバイス16、一組の出力デバイス18、一組の記憶デバイス20、および一組のネットワークアダプタ22を含む一組の物理デバイスを備えており、すべてがコントローラハブ24によって接続されている。いくつかの実施形態では、プロセッサ12は、一組の信号および/またはデータを使用して計算および/または論理演算を実行するように構成された物理デバイス(例えば半導体基板の上に形成されたマルチコア集積回路)を備えている。いくつかの実施形態では、このような論理演算は、一連のプロセッサ命令(例えばマシンコードまたは他のタイプのソフトウェア)の形態でプロセッサ12に引き渡される。本発明のいくつかの実施形態は、従来のプロセッサの構造および機能に変更を導入し、それぞれの変更により、ハードウェア仮想化構成におけるプロセッサ12のより有効な動作が可能になる。
[0027]メモリユニット14は、命令を実行する過程でプロセッサ12によってアクセスまたは生成されるデータ/信号を記憶する揮発性コンピュータ可読媒体(例えばRAM)を備えることができる。入力デバイス16は、とりわけ、コンピュータキーボード、マウスおよびマイクロホンを含むことができ、これらは、ホストシステム10へのデータおよび/または命令のユーザによる導入を可能にするそれぞれのハードウェアインタフェースおよび/またはアダプタを含む。出力デバイス18は、とりわけ、モニタなどの表示デバイスおよびスピーカを含むことができ、また、ホストシステム10によるユーザへのデータ通信を可能にする、グラフィックカードなどのハードウェアインタフェース/アダプタを含むことができる。いくつかの実施形態では、入力デバイス16および出力デバイス18は、タッチスクリーンデバイスの場合と同様、1つの共通のハードウェアを共有することができる。記憶デバイス20は、不揮発性記憶装置によるプロセッサ命令および/またはデータの読出しおよび書込みを可能にするコンピュータ可読媒体を含む。例示的記憶デバイス20は、磁気ディスク、光ディスクおよびフラッシュメモリデバイス、ならびにCDおよび/またはDVDディスクおよびドライバなどの取外し可能媒体を含む。一組のネットワークアダプタ22は、コンピュータネットワークおよび/または他のデバイス/コンピュータシステムへのホストシステム10の接続を可能にしている。コントローラハブ24は、複数のシステム、周辺装置および/もしくはチップセットバス、ならびに/またはプロセッサ12とデバイス14、16、18、20、および22との間の通信を可能にするあらゆる他の回路機構を総称的に表している。例えばコントローラハブ24は、とりわけ、メモリ管理ユニット(MMU)、入力/出力(I/O)コントローラ、および割込みコントローラを含むことができる。別の例では、コントローラハブ24は、プロセッサ12をメモリ14に接続するノースブリッジ、ならびに/またはプロセッサ12をデバイス16、18、20、および22に接続するサウスブリッジを備えることができる。いくつかの実施形態では、コントローラハブ(MMUなどの)の部分はプロセッサ12と統合されることが可能であり、すなわち共通基板をプロセッサ12と共有することができる。
[0028]図2−Aは、本発明のいくつかの実施形態による例示的機能構成を示したもので、ホストシステム10は、ハードウェア仮想化技術を使用して、ハイパーバイザ50によって公開される一組のゲスト仮想マシン52a〜bを動作させる。このような構成は、とりわけ、クラウドコンピューティングおよびサーバ統合などの用途で一般的である。仮想マシン(VM)は、当分野では、実際の物理マシン/コンピュータシステムの抽象化、例えばソフトウェアエミュレーションとして知られており、VMは、オペレーティングシステムおよび他のソフトウェアを走らせることができる。いくつかの実施形態では、ハイパーバイザ50は、仮想プロセッサおよび仮想コントローラハブなどの複数の仮想化デバイスを生成または可能にするように構成され、また、ホストシステム10の現実の物理デバイスの代わりにこのような仮想化デバイスをソフトウェアに提供するように構成されたソフトウェアを含む。ハイパーバイザ50のこのような動作は、当分野では、仮想マシンの公開として広く知られている。いくつかの実施形態では、ハイパーバイザ50は、複数の仮想マシンによるホストシステム10のハードウェア資源の多重化(共有)を可能にする。ハイパーバイザ50は、さらに、個々のゲストVM52a〜bが独立して動作し、また、ホストシステム10上で同時に実行している他のVM実行を認識しないように、このような多重化を管理することができる。一般的なハイパーバイザの例は、とりわけ、VMware社のVMware vSphere(商標)、およびオープンソースのXenハイパーバイザを含む。
[0029]個々のVM52a〜bは、それぞれゲストオペレーティングシステム(OS)54a〜bを実行することができる。一組の例示的アプリケーション56a〜dは、とりわけ、文書処理、画像処理、メディアプレーヤ、データベース、カレンダ、個人連絡先管理、ブラウザ、ゲーミング、音声通信、データ通信、およびマルウェア防止アプリケーションなどの任意のソフトウェアアプリケーションを総称的に表している。オペレーティングシステム54a〜bは、とりわけ、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(商標)などの広く利用可能な任意のオペレーティングシステムを含むことができる。個々のOS54a〜bは、それぞれのVMおよびそれぞれのVMの仮想化ハードウェアデバイス内で実行するアプリケーション間のインタフェースを提供する。以下の説明では、仮想マシンの仮想プロセッサ上で実行するソフトウェアは、それぞれの仮想マシン内で実行する、と言われる。例えば図2−Aの例では、アプリケーション56a〜bはゲストVM52a内で実行する、と言われ、一方、アプリケーション56c〜dはゲストVM52b内で実行する、と言われる。それとは対照的に、ハイパーバイザ50はゲストVM52a〜bの外部、すなわち下で実行する、と言われる。
[0030]図3は、ハイパーバイザ50によって公開される仮想マシン52の例示的構成を示したものである。VM52は、図2−Aの任意のVM52a〜bを表すことができる。VM52は、仮想化プロセッサ112、仮想化メモリユニット114、仮想化入力デバイス116、仮想化出力デバイス118、仮想化記憶装置120、仮想化ネットワークアダプタ122、および仮想化コントローラハブ124を含む。仮想化プロセッサ112は、プロセッサ12の機能のうちの少なくともいくつかのエミュレーションを含み、また、オペレーティングシステムおよび他のアプリケーションなどのソフトウェアの一部を形成するプロセッサ命令を受け取って実行するように構成される。プロセッサ112を使用して実行するソフトウェアは、仮想マシン52内で実行すると見なされる。いくつかの実施形態では、仮想化メモリユニット114は、仮想化プロセッサ112によって使用されるデータを記憶し、かつ、取り出すためのアドレス指定可能空間を備えている。他の仮想化デバイス(例えば仮想化入力、出力、記憶装置、等々)は、ホストシステム10のそれぞれの物理デバイスの機能のうちの少なくともいくつかをエミュレートする。仮想化プロセッサ112は、あたかも対応する物理デバイスと対話するかのように、このような仮想化デバイスと対話するように構成され得る。例えばVM52内で実行するソフトウェアは、仮想化ネットワークアダプタ122を介してネットワークトラフィックを送信および/または受信することができる。いくつかの実施形態では、ハイパーバイザ50は、仮想化デバイスのサブセットのみ(例えば仮想化プロセッサ112、仮想化メモリ114、およびハブ124の部分のみ)をVM52に公開することができる。また、ハイパーバイザ50は、選択されたVMに、ホストシステム10のいくつかのハードウェアデバイスの排他的な使用を与えることも可能である。1つのそのような例では、VM52a(図2−A)は、入力デバイス16および出力デバイス18の排他的な使用を有することができるが、仮想化ネットワークアダプタは持たない。一方、VM52bは、ネットワークアダプタ22の排他的な使用を有することができる。このような構成は、例えばIntel(登録商標)のVT−d(登録商標)技術を使用して実現され得る。
[0031]現代のプロセッサは、当分野では保護リングとしても知られている、プロセッサ特権レベルの階層を実現している。個々のこのようなリングすなわちレベルは、それぞれのリング内で実行するソフトウェアがその実行を許可される一組のアクションおよび/またはプロセッサ命令を特徴とする。例示的な特権レベル/リングは、ユーザモード(リング3)およびカーネルモード(リング0)を含む。ハードウェアの仮想化を支援するように構成されるいくつかのホストシステムは、プロセッサ特権が最も高い追加リングを含むことができる(例えばリング−1、ルートモードまたはIntel(登録商標)プラットフォーム上のVMXroot)。いくつかの実施形態では、ハイパーバイザ50は、最も特権の高いレベル(リング−1)でプロセッサ12の制御を獲得し、したがってホストシステム10上で実行する他のソフトウェアに仮想マシンとして公開されるハードウェア仮想化プラットフォームを生成する。図2−AのゲストOS54aなどのオペレーティングシステムは、典型的にはプロセッサ特権がハイパーバイザ50より劣るそれぞれのVMの仮想環境内(例えばリング0すなわちカーネルモード)で実行する。56a〜bなどの共通ユーザアプリケーションは、典型的には、OS34aより劣るプロセッサ特権で(例えばリング3すなわちユーザモードで)実行する。アプリケーション56a〜bのいくつかの部分は、カーネル特権レベルで実行することができ、一方、OS34aのいくつかの部分は、ユーザモード(リング3)で実行することができる。ソフトウェアオブジェクトが、その割り当てられた保護リングによって許容される特権より高いプロセッサ特権を必要とするアクションまたは命令の実行を試行する場合、その試行は、典型的には、それぞれのアクションを実行するのに十分な特権を有するリング内で実行するエンティティ(例えばハンドラルーチン)へプロセッサ12の制御を移行する、例外または障害などのプロセッサイベントを生成する。
[0032]詳細には、ゲストVMの中から特定のアクションを実施する試行、または特定の命令を実行する試行は、本明細書において総称的にVM中断イベントと呼ばれる特定のカテゴリのプロセッサイベントをトリガすることができる。いくつかの実施形態では、VM中断イベントは、ゲストVM内の現在のスレッドの実行を中断し、かつ、プロセッサ12をハンドラルーチンの実行に切り換える。例示的VM中断イベントは、とりわけ、VM終了イベント(例えばIntel(登録商標)プラットフォーム上のVMExit)および仮想化例外(例えばIntel(登録商標)プラットフォーム上の#VE)を含む。VM終了イベントは、プロセッサ12を、典型的にはハイパーバイザ50のレベルであるそれぞれのゲストVMの外部のハンドラルーチンの実行に切り換える。仮想化例外は、それぞれのVMを終了する代わりに、プロセッサ12をそれぞれのゲストVM内のハンドラルーチンの実行に切り換えることができる。
[0033]VM中断イベントをトリガする例示的命令は、Intel(登録商標)プラットフォームのVMCALLを含む。また、VM中断イベントは、メモリアクセス違反などの他のイベントによってもトリガされ得る。1つのそのような例では、VM内で実行しているソフトウェアオブジェクトが、非書込み可能とマークされたメモリのセクションへの書込みを試行するか、または非実行可能とマークされたメモリのセクションからのコードの実行を試行すると、プロセッサ12は、VM終了イベントを生成することができる。このようなVM切換え機構は、例えばコンピュータセキュリティプログラムによる、それぞれのVMの外部からの仮想マシンの保護を可能にする。コンピュータセキュリティプログラムは、VM内で走っているソフトウェアによって実施される、セキュリティの脅威を示し得る特定のアクションに応答して、生じているVM終了イベントを傍受することができる。コンピュータセキュリティプログラムは、次に、このようなアクションを阻止し、および/または、可能性としてはVM内ソフトウェアの知識を必要とすることなく、このようなアクションをさらに分析することができる。このような構成は、コンピュータセキュリティを実質的に強化することができる。
[0034]いくつかの実施形態(例えば図2−A)では、ハイパーバイザ50は、とりわけ、このようなコンピュータセキュリティ動作を実施するように構成されたコンピュータセキュリティモジュール(CSM)60を含む。モジュール60は、ハイパーバイザ50に組み込まれ得るか(例えばライブラリとして)、またはハイパーバイザ50とは異なりハイパーバイザ50から独立しているが、ハイパーバイザ50の特権レベルで実行するコンピュータプログラムとして引き渡され得る。単一のモジュール60が、ホストシステム10上で実行する複数のゲストVMを保護するように構成され得る。モジュール60によって実行されるセキュリティ動作は、ゲストVM内で実行するプロセスによって実施されるアクション(例えばOSの特定の機能の呼出し、OSのレジストリのアクセス、遠隔の場所からのファイルのダウンロード、ファイルへのデータの書込み、等々)の検出を含むことができる。モジュール60の他のセキュリティ動作は、ゲストVM内で実行するソフトウェアオブジェクトの一部を含むメモリセクションのアドレスの決定、それぞれのメモリセクションへのアクセス、およびそれぞれのメモリセクションに記憶されている内容の分析を含むことができる。セキュリティ動作の他の例は、このようなメモリセクションへのアクセスの傍受および/または制限、例えば保護されたプロセスに属するコードまたはデータの重ね書きの防止、および特定のメモリページに記憶されているコードの実行の防止を含む。いくつかの実施形態では、CSM60は、ゲストVM52a〜b内で生じるVM終了イベントを傍受するように構成されたVM終了イベントハンドラ61を含む。代替実施形態では、ハンドラ61は、VM終了イベントを傍受し、かつ、生じた個々のVM終了の理由および/またはタイプを決定した後に、制御をCSM60に選択的に移行する、CSM60とは別のハイパーバイザ50の全く異なるモジュール(例えばライブラリ)であってもよい。
[0035]図2−Bは、コンピュータセキュリティモジュール60がそれぞれのVMの外部からゲストVM52cを保護する代替実施形態を示したものである。このような実施形態では、プロセッサ12は、メモリアクセス違反が生じると仮想化例外を生成するように構成され得る(図2−Aに関連して上で説明したVM終了イベントの代わりに)。図2−Bの例示的実施形態では、仮想化例外ハンドラ63は、VM52c内で、例えばオペレーティングシステム54cの特権レベルで実行し、また、仮想化例外を傍受し、CSM60とインタフェースするように構成される。
[0036]ハンドラ63とCSM60の間の通信は、当分野で知られている任意のプロセス間通信方法に従って進行することができる。データを保護されたVM内からハイパーバイザ50のレベルへ伝送するために、ハンドラ63のいくつかの実施形態は、専用の命令(例えばIntel(登録商標)プラットフォームのVMCALL)を使用して、プロセッサ12の制御をそれぞれのVMからハイパーバイザ50へ移行する。伝送されるデータは、例外ハンドラ63によって、CSM60と共有されるメモリの所定のセクションに置かれ得る。データをハンドラ63に伝送するために、CSM60のいくつかの実施形態は、ハンドラ63によって処理される割込みをVM52cにかけることができる。それぞれのデータは、上で説明した共有メモリセクションを介して再度伝送され得る。
[0037]図2−Cに示されているさらに別の実施形態では、CSM60およびハンドラ63の両方が、保護されたVM内で、例えばカーネルモード(リング0)で実行する。このような実施形態は、仮想化例外を使用してメモリアクセス違反を検出することも可能である。構成2−A−B−C間の決定は、性能とセキュリティの間のトレードオフを評価することを含み得る。VM終了イベントは、計算の点で比較的コストがかかり、典型的には、個々の終了および再開始サイクルでのメモリへの/メモリからの大型データ構造のロードおよび/またはアンロードが必要である。したがって2−Aなどの構成は、2−B−Cなどの構成よりも、イベントを傍受するためにより多くの計算を必要とし得る。一方、CSM60およびハンドラ61〜63などの重要なセキュリティ構成要素を保護されたVMの外部に維持することは(例2−A−Bの場合のように)、それぞれのVM内で実行するマルウェアがこのような構成要素の動作を妨害することはより困難であり得るため、セキュリティを強化し得る。
[0038]図2−A−Bに示されている構成で(すなわちそれぞれのVMの外部から)ゲストVMを保護することができるようにするために、CSM60のいくつかの実施形態は、プロセッサ12のアドレス変換データ構造および/またはアドレス変換機構を使用する。仮想マシンは、典型的には、当分野でゲスト物理メモリとして知られている仮想化物理メモリを使用して動作する(例えば図3のメモリ114を参照されたい)。仮想化物理メモリは、例えばアドレスの連続空間として実際の物理メモリ14の抽象表現を含み、これは一般にゲスト物理アドレス(GPA)と呼ばれる。個々のこのようなアドレス空間は、ゲストVMに固有に結び付けられ、前記アドレス空間の部分は、物理メモリ14および/または物理記憶デバイス20のセクションにマッピングされる。仮想化を支援するように構成されるシステムでは、このようなマッピングは、典型的には、プロセッサ12によって制御される、第2のレベルのアドレス変換(SLAT)として知られている、ハードウェアで高速化された専用データ構造および機構を使用して達成される。一般的なSLAT実施態様は、Intel(登録商標)プラットフォーム上の拡張ページテーブル(EPT)、およびAMD(登録商標)プラットフォーム上の高速仮想化指標付け(RVI)/入れ子ページテーブル(NPT)を含む。このようなシステムでは、仮想化物理メモリは、当分野でページとして知られている単位で分割されることが可能であり、ページは、EPT/NPTなどの機構を介して物理メモリに個々にマッピングされる仮想化物理メモリの最小単位を表し、すなわち物理メモリと仮想化物理メモリの間のマッピングは、ページ単位の粒度で実施される。すべてのページは、典型的には、所定のサイズ、例えば4キロバイト、2メガバイト、等々を有している。仮想化物理メモリのページへの分割は、通常、ハイパーバイザ50によって構成される。いくつかの実施形態では、ハイパーバイザ50もSLAT構造を構成し、したがって物理メモリと仮想化物理メモリの間のアドレス変換を構成する。このようなアドレス変換は、当分野ではゲスト物理−ホスト物理(GPA−to−HPA)変換として知られている。
[0039]いくつかの実施形態では、VM内で実行するオペレーティングシステムは、それぞれのVM内で実行するプロセス毎に仮想メモリ空間をセットアップし、前記仮想メモリ空間は、物理メモリの抽象化を表している。プロセス仮想メモリは、典型的には、当分野で一般にゲスト仮想アドレス(GVA)またはゲスト線形アドレス(GLA)として知られている、アドレスの連続空間を含む。いくつかの実施形態では、プロセス仮想メモリ空間も同じくページに分割され、このようなページは、OSによってそれぞれのVMの仮想化物理メモリに個々にマッピングされる仮想メモリの最小単位を表し、すなわち仮想化物理メモリへの仮想メモリのマッピングは、ページ単位の粒度で実施される。OSは、ゲスト仮想−ゲスト物理、すなわちGVA−GPAアドレス変換を実施するためにそれぞれのVMの仮想化プロセッサによって使用される、ページテーブルなどの専用データ構造を構成することができる。
[0040]図4は、図2−Aの実施形態における例示的メモリアドレス変換を示したものである。ハイパーバイザ50による公開後、ゲストVM52aは、仮想化物理メモリ空間114aをその独自の物理メモリ空間として見る。ゲストVM52a内で実行するプロセスには、ゲストOS54aによって仮想メモリ空間214aが割り当てられる。ゲスト仮想アドレス62へのメモリアクセスをプロセスが試行すると、GVA62は、ゲストVM52aの(仮想化)MMUによって仮想化物理メモリ空間114a内のゲスト物理アドレス64に変換される。GVA−GPA変換70aは、例えばゲストOS34aによって構成され、かつ、制御されるページテーブルに従って進行することができる。GPA64は、MMUによってホストシステム10の物理メモリ14内のホスト物理アドレス(HPA)66にさらにマッピングされる。GPA−HPA変換70bは、例えばハイパーバイザ50によって構成されるSLAT構造に従って進行することができる。
[0041]ゲストVM52a〜bの下で実行する個々のプロセスには、典型的には、当分野でホスト仮想アドレス(HVA)として知られるものを介してアドレス指定できる仮想メモリ空間が割り当てられる。図4の例では、ハイパーバイザ50は、コンピュータセキュリティモジュール60のための仮想メモリ空間214bをセットアップしている。すると、CSM60は、HVA68を介してHPA66を参照することができる。モジュール60が例えばライブラリとしてハイパーバイザ50内に統合される場合、メモリ空間214bは、ハイパーバイザ50の仮想メモリ空間と一致し得る。このような空間を管理するために、ハイパーバイザ50は、変換70cなどのHVA−HPA変換を実施するためにMMUによって使用される専用データ構造および機構(例えばページテーブル)を構成することができる。
[0042]いくつかの実施形態では、ハイパーバイザ50および/またはCSM60は、物理メモリページのサブセットの各々に対してアクセス許可を設定することができる。このようなメモリページは、例えば、OSおよび/またはマルウェア防止ルーチンのプロセスなど、保護されたVM内で実行する特定の重要なゲストプロセスによって使用され得る。アクセス許可は、例えばそれぞれのページがそのページから読み出され、そのページに書き込まれ得るかどうか、また、ソフトウェアがそれぞれのページからのコードの実行を許可されるかどうかを示す。アクセス許可は、例えばそれぞれのメモリページを表すSLATエントリの一部として示され得る。いくつかのホストシステムは、サブページ単位の粒度でアクセス許可の設定を許可することができる。
[0043]ハイパーバイザ50および/またはCSM60は、さらに、ゲストVM内で実行しているソフトウェアがアクセス許可を違反するようなメモリアクセス(例えば非書込み可能とマークされているメモリページへの書込み)を試行すると、VM中断イベントを生成するようにプロセッサ12を構成することができる。このような試行は、本明細書においてはメモリアクセス違反と呼ばれる。それぞれのVM中断イベントは、図2−Aなどの構成におけるVM終了イベント、および図2−B−Cなどの構成における仮想化例外であってもよい。
[0044]本発明のいくつかの実施形態は、ハードウェア仮想化構成においてプロセッサがより有効に機能することができるように、従来のハードウェアプロセッサの構造および機能に変更を導入している。図5は、本発明のいくつかの実施形態によるプロセッサ12の例示的ハードウェア構成要素を示したものである。示されている構成要素は、説明されている機能を実施する一般化デバイスを意味しており、構造的詳細は、実施態様間で大きく変更することが可能である。例えば示されている個々の構成要素は、相互接続された複数のサブシステムを備えることができ、これらは、必ずしも互いに物理的に近接している必要はない。示されている構成要素は、すべてを網羅したものではなく、プロセッサ12は、多くの他の構成要素(例えばスケジューラ、割込みコントローラ、様々なキャッシュ、等々)を含むことができ、それらは、描写を簡潔にするために図5から省略されている。
[0045]プロセッサ12は、プロセッサパイプラインの様々なステージを実行するように構成された論理/回路機構を含むことができる。例えば命令デコーダ30は命令デコード操作を実施し、この操作は、一組の基本プロセッサ動作および/またはマイクロオペレーションへの個々のプロセッサ命令の変換を含むことができる。デコーダ30に接続された一組の実行ユニット36は、パイプラインの実行ステージを実施することができる。例示的実行ユニット36は、とりわけ、演算論理ユニット(ALU)および浮動小数点ユニット(FPU)を含む。
[0046]いくつかの実施形態では、命令のためのパイプラインの実行ステージは、それぞれの命令のオペレータをそれぞれの命令のオペランドに適用した結果を決定することを含む。このような結果は、とりわけ、メモリアドレス、メモリアドレス、またはプロセッサレジスタ(例えばAXなどの汎用レジスタ、モデル特化レジスタ−MSR、EFLAGSなどの制御レジスタ、または同じく記述子キャッシュとして知られているx86セグメントレジスタの隠れた部分などの隠れレジスタ)にコミットされる値、命令ポインタ(例えばRIP)の値、およびスタックポインタ(例えばRSP)の値を含むことができる。
[0047]命令のオペランドは、命令文の中で明示的であっても、あるいは暗示的であってもよい。オペランドが暗示的である例示的x86命令は、プロセッサのEFLAGS制御レジスタのキャリーフラグを1に設定するSTC命令である。いくつかの実施形態では、レジスタEFLAGSおよび値1は、(暗示的な)オペランドとして解釈されるが、それらはSTC命令文には明示的に出現しない。
[0048]コミットユニット38は、パイプラインのコミットステージを実施することができ、すなわち実行ユニット36の出力をメモリ14に記憶することができ、および/または特定のプロセッサレジスタの内容を更新して、実行ステージによって生成される変化/結果を反映することができる。コミットユニット38は、当分野では退却ユニットとして知られている論理モジュールを備えることができる。
[0049]デコーダ30および実行ユニット36に接続されたメモリアクセスモジュール34は、例えばメモリから命令をフェッチするため、メモリからデータをロードするため、およびプロセッサ命令の実行の結果をメモリに記憶するために、メモリ14とインタフェースするように構成された論理を含む。いくつかの実施形態では、メモリアクセスモジュールは、メモリアクセスに必要な仮想−物理アドレス変換を実施するように構成されたMMUを備えている。
[0050]現代のプロセッサは、典型的には、プロセッサ命令のout−of−order実行および/または投機的実行をサポートする。このようなシステムでは、同じ実行ユニット36によって複数の命令が同時にフェッチされ、デコードされ、実行される。このような実行の結果は、次に、それぞれのコンピュータプログラムの意図されたフローを保存するために出現順に(in−order)コミットされる。このような構成は、例えばプロセッサ12の性能を改善するために分岐予測アルゴリズムと共に使用される。out−of−order実行のために構成されるいくつかの実施形態では、プロセッサ12は、デコーダ30および実行ユニット36に結合されたディスパッチャユニット32、および実行ユニット36およびコミットユニット38に結合されたレジスタファイル40をさらに備えることができる。ディスパッチャユニット36は、実行のために個々のマイクロオペレーションをスケジュールすることができ、また、実行およびコミットの順序を制御するために、そのそれぞれの命令を使用して、個々のマイクロオペレーションに関連するマッピングを維持することができる。レジスタファイル40は、例えばリオーダバッファとして編成された内部プロセッサレジスタのアレイを備えている。レジスタファイル40は、ディスパッチャユニット36による、スケジュールされた個々のマイクロオペレーションへのファイル40のレジスタの行の結合を可能にする論理をさらに備えることができ、これは当分野でレジスタリネーミングとして知られている動作である。このような構成では、レジスタの個々のこのような行は、例えばプロセッサ12の汎用レジスタおよび/または状態レジスタの値を保持することができ、前記値は、特定のプロセッサ命令の実行の中間ステージに対応する。
[0051]プロセッサ12は、仮想マシンの状態データを管理するように構成された仮想マシン制御ユニット38をさらに含むことができる。いくつかの実施形態では、仮想マシン状態オブジェクト(VMSO)は、ホストシステム10上に公開された個々の仮想化プロセッサの現在の状態を示すためにプロセッサ12によって内部で使用されるデータ構造を備えている。例示的VMSOは、Intel(登録商標)プラットフォームの仮想マシン制御構造(VMCS)、およびAMD(登録商標)プラットフォームの仮想マシン制御ブロック(VMCB)を含む。VMSOは、典型的には、ハイパーバイザ50によって、個々の仮想マシンを公開する部分としてセットアップされる。いくつかの実施形態では、プロセッサ12は、ソフトウェアがメモリアドレスまたはポインタ(例えばIntel(登録商標)プラットフォーム上のVMCSポインタ)を使用して特定のVMSOを参照することができるように、メモリ内のある領域を個々のVMSOと結合する。
[0052]個々のVMSOは、ゲスト状態領域およびホスト状態領域を備えることができ、ゲスト状態領域は、それぞれのゲストVMのCPU状態を保持し、ホスト状態領域は、ハイパーバイザ50の現在の状態を記憶する。いくつかの実施形態では、VMSOのゲスト状態領域は、とりわけ、制御レジスタ(例えばCR0、CR3、等々)、命令ポインタ(例えばRIP)、汎用レジスタ(例えばEAX、ECX、等々)、およびそれぞれのゲストVMの仮想プロセッサの状態レジスタ(例えばEFLAGS)の内容を含む。VMSOのホスト状態領域は、それぞれのゲストVMのためのGPA−HPAアドレス変換のために構成されたSLATデータ構造に対するポインタ(例えばIntel(登録商標)プラットフォーム上のEPTポインタ)を含むことができる。
[0053]いくつかの実施形態では、プロセッサ12は、VMSOの一部を専用内部レジスタ/キャッシュに記憶することができ、一方、それぞれのVMSOの他の部分は、メモリに存在させることができる。任意の所与の時に、最大でも1つのVMSO(本明細書においては現在のVMSOと呼ばれる)がプロセッサにロードされ得、プロセッサ12の制御を現在有する仮想マシンを識別する。現代のプロセッサは、通例、マルチスレッドのために構成されている。このような構成では、物理プロセッサ12は複数のコアを動作させることができ、個々のコアは複数の論理プロセッサをさらに備え、個々の論理プロセッサは、他の論理プロセッサとは独立して、かつ、他の論理プロセッサと同時に実行スレッドを処理することができる。複数の論理プロセッサは、いくつかのハードウェア資源、例えば共通MMUを共有することができる。マルチスレッド実施形態では、全く異なるVMSOが個々の全く異なる論理プロセッサ上にロードされ得る。
[0054]プロセッサ12がそれぞれのVMの実行からハイパーバイザ50の実行に切り換える場合(例えばVM終了に応じて)、プロセッサ12は、それぞれのVMの状態を現在のVMSOのゲスト状態領域に保存することができる。プロセッサ12が第1のVMの実行から第2のVMの実行に切り換えると、第1のVMに結合されたVMSOがアンロードされ、また、第2のVMに結合されたVMSOがプロセッサにロードされ、第2のVMSOが現在のVMSOになる。いくつかの実施形態では、このようなVMSOデータのプロセッサ12へのロード/プロセッサ12からのアンロードは、仮想マシン制御モジュール38によって実施される。モジュール38は、メモリ14からのVMSOデータの取り出しおよび/またはメモリ14へのVMSOデータの保存をさらに実行することができる。
[0055]いくつかの実施形態では、プロセッサ12は、実行ユニット36および/またはコミットユニット38に接続され、かつ、ゲスト命令と結合した命令特化データを記憶するように構成された中断イベントレジスタ44をさらに備えており、前記ゲスト命令を実行するとVM中断イベントが生じる(例えばVM終了または仮想化例外)。いくつかの実施形態では、中断イベントレジスタ44は公開されたレジスタであり、ホストシステム10上で実行しているソフトウェアからアクセスすることができ、すなわちレジスタ44に記憶されているデータは、セキュリティモジュール60などのソフトウェアによって読み出され得る。1つのこのような例では、中断イベントレジスタ44は、プロセッサ12のモデル特化レジスタ(MSR)を含む。いくつかの実施形態は、レジスタ44へのアクセスを、プロセッサ特権(例えばリング1またはルートモードのみ)またはオブジェクトタイプ(例えばドライバのみ)などの基準に従って選択されたソフトウェアオブジェクトのサブセットに制限することができる。いくつかの実施形態は、レジスタ44へのソフトウェアアクセスを操作のサブセットのみに制限することができる(例えば読出しのみ)。
[0056]図6は、本発明のいくつかの実施形態による中断イベントレジスタ44のフィールドの例示的セットを示したものである。レジスタ44は、逆アセンブリフィールド46aおよび実行結果フィールド46bを含むことができる。逆アセンブリフィールド46aは、それぞれのゲスト命令を逆アセンブルすることによって得られるデータを記憶することができる。
[0057]図7は、例示的なIntel(登録商標)x86プロセッサ命令のアセンブリ言語表現45を示したものである。示されている命令は、メモリの(仮想)アドレスEBX+4ECX+0x02に記憶されている内容を、レジスタAXに現在記憶されている値だけ増分するようにプロセッサに命令する。それぞれの命令は、マシンコード表現47としてメモリの中に表現されており、表現45と47の間の変換は、典型的にはコンパイラまたはアセンブラによって実施される。x86命令のマシンコード表現は、一連のエンコードフィールド49を含む一般化形態48を有しており、このようなエンコードフィールドは、とりわけ、Prefix、Opcode、およびDisplacementフィールドを含む(他のISAの命令の表現は異なりうる)。図7は、所与の例示的x86命令についての個々のエンコードフィールドの例を示したものである。いくつかのISAでは、マシンコード表現は可変長を有することができ、例えばいくつかのエンコードフィールドは、特定の命令のマシンコード表現に出現し得るが、他の命令の表現には出現し得ない。
[0058]いくつかの実施形態では、命令の逆アセンブルは、命令のマシンコード表現を構文解析して、一組の意味要素を識別および/または計算することを含む。このような意味要素は、とりわけ、命令のオペレータ(例えばMOV、ADD、等々)およびオペランド(例えばAX、[EBX+4ECX+0x02])を含むことができる。いくつかの実施形態において、命令の意味要素は、個々の命令エンコードフィールド(例えば、x86ISAの場合、Prefix、Opcode、modR/M、SIB、Displacement、およびImmediate)を含む。そのような逆アセンブリは、少なくとも部分的に、命令デコーダ30によって、および/または実行ユニット36によって実行され得る。
[0059]図7の例では、命令の逆アセンブルは、マシンコード表現47と一般化形態48との間の対応を示す矢印によって示されているように、個々のエンコードフィールドの内容を決定することを含みうる。いくつかの実施形態では、示されている命令の逆アセンブルは、ADDオペレータを識別すること、および/またはマシンコード47に従って、それぞれの命令が2つのオペランドを有し、オペランドのうちの1つがAXレジスタの内容であり、第2のオペランドがメモリの内容であると決定すること、並びに、それぞれのメモリアドレスの式(例えばEBX+4ECX+0x02)を決定することを含むことができる。いくつかの実施形態では、命令の逆アセンブルは、それぞれの命令のオペランドによって示されるメモリアドレス(例えば、図7の例における式EBX+4ECX+0x02の値)を計算することをさらに含む。逆アセンブルされる命令が相対ジャンプ命令(例えばマシンコードの中に0xEB 0x08として表現された、x86プラットフォーム上のJMP $+10)である別の例では、命令の逆アセンブルは、命令のアドレス、ゲスト命令の長さ、および/または相対ジャンプのサイズに従って、行先の絶対メモリアドレスを計算することを含むことができる。
[0060]いくつかの実施形態では、レジスタ44の逆アセンブリフィールド46a(図6)は、それぞれの命令の命令エンコードフィールドの内容を含む(図7を参照)。フィールド46aの他の例示的内容は、それぞれの命令のオペレータを示すオペレータ識別子、およびそれぞれの命令のオペランドのインジケータを含む。オペランドインジケータは、プロセッサレジスタ(例えばAX)の識別子、および例えばそれぞれのオペランドがレジスタの内容であるか、またはメモリの内容であるかどうかを示すフラグをさらに含むことができる。逆アセンブリフィールド46aは、オペランドによって示されるメモリアドレス(例えばGVA、GPAおよび/またはHPA)をさらに含むことができる。逆アセンブルフィールド46aの構造は、プラットフォーム固有でありうる。例えば、インテル(登録商標)プラットフォームでは、逆アセンブリフィールド46aは、現在のゲスト命令のprefix、opcode、modR/M、SIB、displacement、およびimmediateのエンコードフィールドの内容を含むことができる。他のプラットフォームでは、フィールド46aは、それぞれのプラットフォームの命令セットアーキテクチャ(ISA)に従う他の値を記憶することができる。
[0061]いくつかの実施形態では、中断イベントレジスタ44の実行結果フィールド46bは、それぞれのプロセッサ命令を実行した結果を示すデータを記憶することができる。このような結果は、それぞれの命令を実行することによって得られる、状態レジスタ(例えばFLAGS)の値、命令ポインタ(例えばRIP)の値、および汎用レジスタ(例えばEAX)の値を含むことができる。フィールド46bは、それぞれの命令を実行した結果としてメモリにコミットされる値、それぞれの値のサイズ(例えばバイト、語、等々)、および/またはそれぞれの値がコミットされるメモリアドレスをさらに含むことができる。
[0062]いくつかの実施形態では、実行ユニット36および/またはコミットユニット38は、ゲスト命令の実行がVMプロセッサイベント(仮想化例外のVM終了などの)を生じさせるかどうかを決定し、生じさせる場合、それぞれのイベントを生成する前に、命令逆アセンブリデータを中断イベントレジスタ44に保存するように構成され得る。プロセッサ12は、それぞれのゲスト命令の実行ステージが完了するまでプロセッサイベントの生成を遅延し、かつ、それぞれの命令を実行した結果をメモリおよび/またはプロセッサ12の汎用レジスタにコミットする代わりに、そのような結果をイベントレジスタ44に保存するようにさらに構成され得る。そのような命令の結果をコミットするのを回避するために、プロセッサ12は、それぞれの命令のためのパイプラインのコミットステージの前に、VMプロセッサイベントを生成するように構成され得る。このような機能については、以下でさらに詳細に説明される。
[0063]図8は、本発明のいくつかの実施形態による、ゲスト命令を実行するためにプロセッサ12によって実施されるステップの詳細な例示的シーケンスを示したものである。図8は、プロセッサ12がメモリアクセス違反に応答してVM終了イベントを生成するように構成される一実施形態を示している。当業者は、この説明が、VM終了イベントの代わりに他のVM中断イベント(仮想化例外など)を生成する実施形態を包含するべく容易に修正され得ることを認識するであろう。「ゲスト命令」は、本明細書においては、図2−AのVM52a〜bなどのゲストVM内で実行するコンピュータプログラムの一部を形成しているプロセッサ命令を表すために使用される用語である。
[0064]ステップ302は、ゲスト命令のフェッチを試行する。フェッチの試行に失敗すると、ステップ303は、失敗がメモリアクセス違反によるものかどうかを決定することができる(例えばゲストVMのSLAT構造内の非実行可能とマークされたメモリページにゲスト命令が存在する場合)。メモリアクセス違反によるものではない場合、ステップ306でプロセッサ12は、VM終了イベントを生成し、かつ、実行を図2−Aのハンドラ61などのイベントハンドラに移行する。ゲスト命令のフェッチの失敗がメモリアクセス違反によるものである場合、そのような失敗は、セキュリティプログラム(例えばマルウェア防止モジュール)がそれぞれのメモリページの内容を保護しようとしていることを示し得る。このようにして典型的に実行から保護された例示的メモリセクションは、ゲストプロセスの実行スタックを記憶する。スタックを非実行可能としてマークすることにより、例えばスタックの活用からゲストプロセスを保護することができる。このような状況では、いくつかの実施形態は、ゲスト命令のフェッチを再試行し、それぞれのメモリアクセス許可を無視することができる(ステップ305)。ステップ307で、フェッチされたゲスト命令に、それぞれの命令が「強制的にフェッチされた」こと、すなわちメモリアクセス許可を無効化している間にフェッチされたことを示すために専用フラグの印が付けられる。プロセッサ12は、次にステップ308へ進行することができる。
[0065]フェッチステージに続いて、ステップ308は、ゲスト命令をデコードし、ディスパッチする。ステップ310でゲスト命令が実行される。ゲスト命令の実行がメモリアクセスには無関係のVM終了基準を満たすと、プロセッサ12は、以下で詳細に説明されるステップ322に進行する。このようなVM終了は、様々な状況でトリガされ得る。例えばゲスト命令は、ゲストVM内から呼び出されると、VM終了イベントを自動的にトリガするVMCALLなどの専用命令であってもよい。メモリアクセスには無関係である、VM終了の別の例示的理由は、ゲスト命令を実行している間のハードウェアイベント(例えば割込み)の発生である。
[0066]ゲスト命令の実行がメモリアクセス違反を生じさせる場合(例えばゲスト命令が非書込み可能とマークされたメモリページに結果を書き込むようにプロセッサに命令する場合)、従来のプロセッサは、典型的にはゲスト命令の実行を中断し、プロセッサパイプラインをフラッシュして、VM中断イベント(例えばVMExit)を生成する。一方、本発明のいくつかの実施形態では、ゲスト命令の実行は中断されない。その代わりにステップ318で、ゲスト命令のためのパイプラインの実行ステージが終了するまでVM終了イベントが遅延される。しかしながら、いくつかの実施形態では、従来のシステムで発生した場合と同様、完了した実行ステージの結果はコミットされない。その代わりにステップ320で、プロセッサ12が、ゲスト命令の完了した実行ステージの結果を中断イベントレジスタ44に記憶するようにコミットユニット38に命令することができる。このような機能は、例えば、メモリアクセス違反が生じると、結果をメモリおよび/またはプロセッサ12の汎用レジスタにコミットすることから、結果をレジスタ44に記憶することへコミットユニット38を切り換えるための起動信号を使用して達成され得る。制御信号は、ゲスト命令の実行がメモリアクセス違反を生じさせたかどうかを示すことができる。コミットユニット38は、例えばMMUからメモリアクセスモジュール34を介してこのような信号を受け取ることができる。いくつかの実施形態では、ステップ320は、コミットユニット38が、ゲスト命令を実行した結果をレジスタファイル40から取り出すことを含む。
[0067]一代替実施形態では、ゲスト命令の実行結果をレジスタ44に保存する代わりに、ステップ320は、それぞれのゲストVMのVMSOのゲスト状態領域などの専用メモリ領域にこのような結果を保存することができる。さらに別の実施形態では、プロセッサ12は、VM終了を実行すると(ステップ306)、このような結果をVM終了ハンドラ61に伝送することができる。
[0068]ステップ322で、プロセッサ12は、ゲスト命令の逆アセンブルの結果を中断イベントレジスタ44に(および/または上で説明したようにメモリに)記憶することができる。あるいは、命令逆アセンブリデータは、現在実行しているゲストVMのVMSOの専用エリアに記憶することができる。命令逆アセンブリデータは、ゲスト命令をデコードおよび/または実行するプロセスにおいて、命令デコーダ30および/または実行ユニット36によって生成されることが可能であり、ステップ322は、このようなデータをそれぞれのプロセッサモジュールから取り出すことを含むことができる。ゲスト命令に対する実行結果および/または逆アセンブリデータを記憶すると、プロセッサ12は、VM終了イベントを生成することができる(ステップ306)。
[0069]メモリアクセス違反を生じさせることなく(ステップ314)、また、VM終了に対する非メモリ関連の理由なく(ステップ312)、現在のゲスト命令の実行が進行すると、ステップ315は、現在のゲスト命令が強制的にフェッチされたものであるかどうかを決定することができる(上記ステップ305〜307を参照されたい)。強制的にフェッチされたものではない場合、ステップ316は、実行の結果をメモリおよび/または汎用プロセッサレジスタにコミットする。現在のゲスト命令が強制的にフェッチされたものである場合、いくつかの実施形態は、それぞれの命令を、メモリアクセス違反を生じさせる命令として処理することができ、すなわちそれぞれの命令がパイプラインの実行ステージを完了するのを待機することにより、VM終了イベントを生成する前に結果および/または命令逆アセンブリデータをレジスタ44に記憶することができる(上記ステップ318〜320〜322〜306を参照されたい)。
[0070]図9は、コンピュータセキュリティに関連する本発明のいくつかの実施形態による、ゲストVMおよび/またはコンピュータセキュリティモジュール60(図2−A−B)によって実施されるステップの例示的シーケンスを示したものである。アプリケーション(例えば図2−Aの56a)などのゲストプロセス、またはオペレーティングシステム(例えば図2−AのゲストOS54a)のプロセスは、ゲストVM内で実行し、一連のゲスト命令を介してステップ方式で進行することができる(ステップ332)。ゲストプロセスの実行は、例えば図8に関連して上で説明したシナリオに従ってVM終了が生成されるまで継続する。当業者は、この説明が、プロセッサ12がVM終了イベントの代わりに仮想化例外を生成し、また、ゲストVM内で実行する例外ハンドラ(例えば図2−Bのハンドラ63)が、それぞれの例外を傍受するように構成されるシステムに如何に適合され得るかを認識することができる。
[0071]ステップ336で、ハンドラ61がVM終了イベントを傍受し、このVM終了イベントがセキュリティの脅威の証拠であることが分析される。イベントがセキュリティの脅威(例えば悪意のある意図で実行された操作)を示す場合、ステップ340でCSM60は、ゲストプロセスに対する保護アクション、および/またはゲストVMに対する保護アクションを取ることができる。このようなアクションは、とりわけ、ゲストプロセスの実行を阻止すること、エラーメッセージまたは一組の疑似結果をゲストプロセスに返すこと、およびホストシステムの管理者に警告することを含むことができる。
[0072]VM終了イベントがセキュリティの脅威を示さない場合、ステップ342は、ゲスト命令を実行した結果が利用可能である(プロセッサ12のイベントレジスタ44またはメモリのいずれかにある)かどうかを決定する。利用可能でない場合、CSM60は、以下で詳細に説明されるステップ348に進行する。利用可能である場合、ステップ344は、それぞれの結果をレジスタ44および/またはメモリ(例えばそれぞれのゲストVMのVMSOのゲスト状態領域)から取り出す。ステップ346でCSM60は、現在のゲスト命令を実行した結果を適用することができる。いくつかの実施形態では、ステップ346は、コミットステージにおいて従来のシステムの中で実行される一組の操作を含む。例えばステップ346は、それぞれのゲストVMの仮想化プロセッサの汎用、制御、および状態プロセッサレジスタの値を更新することを含むことができる。いくつかの実施形態では、このようなレジスタは、それぞれのゲストVMのVMSOのゲスト状態領域内でアクセスすることができる。ステップ346は、現在のゲスト命令のオペランドによって示されるメモリアドレスにいくつかの結果を保存することをさらに含むことができる。ステップ346は、現在のゲスト命令の実行が完了したことを示すために、命令ポインタ(例えばx86プラットフォーム内のRIP)を増分することをさらに含むことができる。
[0073]本発明のいくつかの実施形態は、プロセッサ12の現在の命令セットアーキテクチャ(ISA)に専用命令を追加し、この新しい命令は、ゲスト命令を実行した結果を、それぞれのゲスト命令を実行しているゲストVMの下から直接適用するようにプロセッサ12に命令する。この新しい命令(例示的ニーモニックはVMAPPLYである)は、ステップ346(図9)の操作を実行することができ、例えば内容を中断イベントレジスタ44からそれぞれのゲストVMの仮想化プロセッサの仮想レジスタおよび/またはメモリにコピーすることができる。
[0074]いくつかの実施形態では、ステップ346は、さらに、現在のゲスト命令がアトミック命令(例えばLOCKプレフィックスで示される)であるかどうかを検証することができる。アトミック命令である場合、結果をゲストのレジスタおよび/またはメモリに直接適用する代わりに、ステップ346は、ゲストVMへ戻すと、現在のゲスト命令の再実行を強制することができる(以下のステップ356を参照されたい)。
[0075]現在のゲスト命令の実行結果を利用することができない場合(例えば現在のVM終了がVMCALLなどの特権命令によって生じたものである場合)、ステップ348でコンピュータセキュリティモジュール60は、逆アセンブリデータが現在のゲスト命令のために利用可能であるかどうかを決定する。利用可能である場合、ステップ350でCSM60は、そのデータを例えばレジスタ44の逆アセンブリフィールド46a(例えば図6を参照されたい)から取り出すことができる。CSM60は、次に、取り出された逆アセンブリデータに応じた現在のゲスト命令のエミュレートへ進行することができる(ステップ354)。
[0076]逆アセンブリデータを利用することができない場合、ステップ352は、エミュレーションを進める前に、現在のゲスト命令を逆アセンブルすることができる。ステップ356でCSM60は、それぞれのゲストVMを再起動することができる(例えばIntel(登録商標)プラットフォームのVMRESUME命令を発行することによって)。ステップ346が命令ポインタの修正を含むいくつかの実施形態では、ゲストプロセスの実行は、現在のゲスト命令の直後のプロセッサ命令で開始するか、または現在のゲスト命令によって示されるプロセッサ命令で開始することができる(例えばJMP、CALL、等々などの制御フロー変更命令の場合)。
[0077]上で説明した例示的システムおよび方法は、コンピュータまたはスマートフォンなどのホストシステムによる、ハードウェア仮想化構成で動作している場合のコンピュータセキュリティタスクの有効な実行を可能にする。セキュリティタスクは、とりわけ、コンピュータウイルスおよびスパイウェアなどのマルウェアに対するホストシステムの保護を含むことができる。いくつかの実施形態では、ホストシステムは、オペレーティングシステムおよび一組のソフトウェアアプリケーションを仮想マシン内で実行するように構成される。セキュリティモジュールは、それぞれの仮想マシンの外部で、例えばハイパーバイザのレベルで実行することができ、また、それぞれの仮想マシンをマルウェアから保護することができる。
[0078]いくつかの実施形態では、セキュリティモジュールは、保護されたVMのセキュリティには極めて重要なコードおよび/またはデータを含むメモリのセクション(例えば一組のメモリページ)を識別し、かつ、メモリのそれぞれのセクションに対するアクセス許可を構成する。このようなアクセス許可は、例えばメモリのそれぞれのセクションが非書込み可能および/または非実行可能であることを示すことができる。セキュリティモジュールは、さらに、例えば保護されたVM内で実行しているソフトウェアが、非書込み可能とマークされたメモリのセクションへの書込みを試行し、または非実行可能とマークされたメモリのセクションからのコードの実行を試行すると、メモリアクセス違反に応答してVM中断イベント(VM終了または仮想化例外など)を生成するようにホストシステムのプロセッサを構成することができる。セキュリティモジュールは、次に、イベントハンドラを介してこのようなプロセッサイベントを傍受することができ、また、このようなイベントがコンピュータセキュリティの脅威を示すかどうかを決定することができる。セキュリティモジュールが保護されたVMの外部で実行する構成では、セキュリティモジュールのアクティビティは、マルウェアを含む、保護されたVM内で実行するソフトウェアには見ることができない可能性がある。
[0079]従来のシステムでは、VM中断イベントの傍受は、当分野で総称的に「トラップアンドエミュレート」として知られる方法に従って進行する。従来の技法の一例では、それぞれのイベント(例えばVM終了)を生じさせた命令を決定した後、実行を保護されたVMに戻す前に、また、それぞれの命令が既に実行されていることを示すために命令ポインタを修正する前に、マルウェア防止プログラムがそれぞれの命令をエミュレートする。エミュレーションステップがない場合、実行を保護されたVMに戻すと、典型的にはVM終了を再トリガすることになり、したがって無限ループを生成することになる。
[0080]したがって、従来のトラップアンドエミュレートシステムおよび方法には、場合によっては、命令逆アセンブラおよび/または命令エミュレータを含むためのマルウェア防止プログラムが必要である。このような構成要素は、場合によっては開発および維持が複雑であり、また、例えば1つのプロセッサから別のプロセッサに移植できないことがある。さらに、従来のシステムでは、逆アセンブリおよび/またはエミュレーションステップは、典型的にはすべてのVM中断イベントに対して実行され、相当な計算負荷をホストシステムに課す。一方、本発明のいくつかの実施形態は、逆アセンブラおよび/またはエミュレータの必要性をなくし、コンピュータセキュリティ動作を実質的に加速する。
[0081]本発明のいくつかの実施形態は、従来のプロセッサの構成および動作に変更を導入し、ハードウェア仮想化構成におけるこのようなプロセッサのより有効な動作を可能にする。いくつかの実施形態において、プロセッサは、VM中断イベントの生成を、現在の命令のためのパイプラインの実行フェーズが完了するまで、少なくともある状況(例えば、VM中断イベントがメモリアクセス違反によりトリガされるとき)では遅らせるように構成される。プロセッサは、現在の命令の実行ステージの結果を、特別なプロセッサレジスタ(プロセッサの汎用レジスタ若しくは制御レジスタとは異なる)または特別なメモリ領域(例えば、それぞれのゲストVMのゲスト状態領域)に保存するようにさらに構成することができる。
[0082]このような改善は、コンピュータセキュリティアプリケーションにはとりわけ有利であり、外部、例えばそれぞれのVMを公開するハイパーバイザのレベルからの仮想マシンの有効な保護を可能にすることができる。従来のコンピュータセキュリティ解決法と比較すると、本発明のいくつかの実施形態は、VM中断イベントを傍受し、かつ、分析するように構成されるセキュリティソフトウェアの操作から逆アセンブリおよびエミュレーションのステージを除去することにより、計算の実質的な低減を可能にする。それぞれのイベントを生成した命令のエミュレートに代えて、いくつかの実施形態は、セキュリティソフトウェアが、それぞれの結果をプロセッサレジスタまたはメモリの場所から読み出し、そのような結果を直接適用することを可能にする。
[0083]従来のシステムとは対照的に、本発明のいくつかの実施形態は、VM中断イベントを、現在のゲスト命令がパイプラインの実行ステージを完了した後にのみ生成する。ハードウェアコンポーネントの機能に対するそのような変更は、それぞれの命令の実行ステージを実行するのに必要な余分なクロックチックによる遅延を導入することがある。しかしながら、そのような性能のペナルティは、従来のコンピュータセキュリティソフトウェアには必要な(潜在的には、各VM中断イベントに対して数百の追加命令に達する)命令エミュレーションおよび/または逆アセンブリの操作を除去することによって実質的に相殺される。
[0084]上記実施形態は、本発明の範囲を逸脱することなく、多くの方法で変更され得ることは当業者には明らかであろう。したがって本発明の範囲は、以下の特許請求の範囲およびそれらの合法等価物によって決定されるものとする。

Claims (21)

  1. 仮想マシンとコンピュータセキュリティプログラムとを実行するように構成された少なくとも1つのハードウェアプロセッサを備えたホストシステムであって、前記少なくとも1つのプロセッサは、
    実行のためのゲスト命令を受け取るのに応答して、前記ゲスト命令の前記仮想マシン内での実行によりメモリアクセス許可の違反が生じるかどうかを判定し、
    前記ゲスト命令の実行により前記違反が生じるかどうかの判定に応答して、前記ゲスト命令の実行により前記違反が生じる場合に、
    前記ゲスト命令のオペレータの前記ゲスト命令のオペランドへの適用の結果を求め、
    前記結果を前記コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、
    前記ゲスト命令の実行を中断し、
    前記ゲスト命令の実行の中断に応答して、前記違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成された前記コンピュータセキュリティプログラム委の実行に切り換える
    ようにさらに構成された、ホストシステム。
  2. 請求項1に記載のホストシステムであって、前記ゲスト命令は、前記少なくとも1つのハードウェアプロセッサに、値を、前記少なくとも1つのハードウェアプロセッサのレジスタに書き込むように命令し、前記結果は前記値を含む、ホストシステム。
  3. 請求項2に記載のホストシステムであって、前記レジスタは前記少なくとも1つのハードウェアプロセッサの汎用レジスタである、ホストシステム。
  4. 請求項2に記載のホストシステムであって、前記レジスタは前記少なくとも1つのハードウェアプロセッサの制御レジスタである、ホストシステム。
  5. 請求項1に記載のホストシステムであって、前記ゲスト命令は、前記少なくとも1つのハードウェアプロセッサに、値を前記ホストシステムのメモリに書き込むように命令し、前記結果は前記値を含む、ホストシステム。
  6. 請求項1に記載のホストシステムであって、前記結果はメモリアドレスを含む、ホストシステム。
  7. 請求項1に記載のホストシステムであって、前記結果は前記ゲスト命令の前記オペランドを含む、ホストシステム。
  8. 請求項1に記載のホストシステムであって、前記コンピュータセキュリティプログラムは前記バーチャルマシン内で実行される、ホストシステム。
  9. 請求項1に記載のホストシステムであって、前記コンピュータセキュリティプログラムは前記バーチャルマシン外で実行される、ホストシステム。
  10. 請求項1に記載のホストシステムであって、前記所定の場所は、前記少なくとも1つのハードウェアプロセッサの所定のレジスタを含む、ホストシステム。
  11. 請求項1に記載のホストシステムであって、前記所定の場所は、前記ホストシステムのメモリの所定のセクションを含む、ホストシステム。
  12. 請求項1に記載のホストシステムであって、前記所定の場所は、前記仮想マシンの現在状態を示すデータ構造を含む、ホストシステム。
  13. 請求項1に記載のホストシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記コンピュータセキュリティプログラムの実行に切り換えるのに応答して、前記結果を前記所定の場所から読み出すようにさらに構成された、ホストシステム。
  14. 請求項13に記載のホストシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記結果を読み出すのに応答して、前記結果を、前記ゲスト命令に従って定まる宛先に書き込むようにさらに構成された、ホストシステム。
  15. 請求項1に記載のホストシステムであって、前記コンピュータセキュリティプログラムは、前記少なくとも1つのハードウェアプロセッサにより実行されると、前記少なくとも1つのハードウェアプロセッサに、前記結果を前記所定の場所から読み出し、前記結果を、前記ゲスト命令に従って定まる宛先に書き込むことをさせる命令を含む、ホストシステム。
  16. 請求項1に記載のホストシステムであって、前記少なくとも1つのハードウェアプロセッサは、前記コンピュータセキュリティプログラムの実行に切り換えるのに応答して、
    前記ゲスト命令がアトミック命令であるかどうかを判定し、
    それに応答して、前記ゲスト命令がアトミック命令である場合に、前記ゲスト命令を前記仮想マシン内で実行する
    ようにさらに構成された、ホストシステム。
  17. ホストシステムをコンピュータセキュリティの脅威から保護する方法であって、
    実行のためのゲスト命令を受け取るのに応答して、前記ゲスト命令を実行することによりメモリアクセス許可の違反が生じるかどうかを、前記ホストシステムの少なくとも1つのハードウェアプロセッサを使用して判定するステップであって、前記ゲスト命令は、前記ホストシステムによって公開されるゲスト仮想マシン内で実行される、ステップと、
    前記ゲスト命令が前記違反を生じさせるかどうかの判定に応答して、前記ゲスト命令を実行することにより前記違反が生じる場合に、
    前記少なくとも1つのハードウェアプロセッサを使用して、前記ゲスト命令のオペレータの前記ゲスト命令のオペランドへの適用の結果を求めるステップと、
    前記少なくとも1つのハードウェアプロセッサを使用して、前記結果を、前記コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込むステップと、
    前記ゲスト命令の実行を中断するステップと、
    前記ゲスト命令の実行の中断に応答して、前記違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成された前記コンピュータセキュリティプログラムの実行に切り換えるステップと
    を含む方法。
  18. 請求項16に記載の方法であって、前記コンピュータセキュリティプログラムの実行に切り換えるのに応答して、前記少なくとも1つのハードウェアプロセッサを使用して、前記結果を前記所定の場所から読み出すステップをさらに含む方法。
  19. 請求項17に記載の方法であって、前記結果を読み出すのに応答して、前記少なくとも1つのプロセッサを使用して、前記結果を、前記ゲスト命令に従い定まる宛先に書き込むステップをさらに含む方法。
  20. ホストシステムの少なくとも1つのハードウェアプロセッサであって、
    実行のためのゲスト命令を受け取るのに応答して、前記ゲスト命令の実行によりメモリアクセス許可の違反が生じるかどうかを判定し、前記ゲスト命令は、前記ホストシステムによって公開されるゲスト仮想マシン内で実行され、
    前記ゲスト命令が前記違反を生じさせるかどうかの判定に応答して、前記ゲスト命令を実行することにより前記違反が生じる場合に、
    前記ゲスト命令のオペレータの前記ゲスト命令のオペランドへの適用の結果を求め、
    前記結果を、前記コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、
    前記ゲスト命令の実行を中断し、
    前記ゲスト命令の実行の中断に応答して、前記違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成されたコンピュータセキュリティプログラムの実行に切り換える
    ように構成することができる少なくとも1つのハードウェアプロセッサ。
  21. ホストシステムの少なくとも1つのハードウェアプロセッサによって実行されると、前記ホストシステムに、メモリアクセス許可の違反がコンピュータセキュリティの脅威を示すかどうかを判定するように構成されたコンピュータセキュリティプログラムを形成させる命令を記憶した非一時的コンピュータ可読媒体であって、前記少なくとも1つのハードウェアプロセッサは、
    実行のためのゲスト命令を受け取るのに応答して、前記ゲスト命令の実行により前記違反が生じるかどうかを判定し、前記ゲスト命令は、前記ホストシステムによって公開されるゲスト仮想マシン内で実行され、
    前記ゲスト命令が前記違反を生じさせるかどうかの判定に応答して、前記ゲスト命令を実行することにより前記違反が生じる場合に、
    前記ゲスト命令のオペレータの前記ゲスト命令のオペランドへの適用の結果を求め、
    前記結果を、前記コンピュータセキュリティプログラムからアクセス可能な所定の場所に書き込み、
    前記ゲスト命令の実行を中断し、
    前記ゲスト命令の実行の中断に応答して、前記コンピュータセキュリティプログラムの実行に切り換える
    ように構成することができる、非一時的コンピュータ可読媒体。
JP2017509643A 2014-08-18 2015-08-11 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法 Active JP6496401B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462038476P 2014-08-18 2014-08-18
US62/038,476 2014-08-18
US14/489,820 2014-09-18
US14/489,820 US9672354B2 (en) 2014-08-18 2014-09-18 Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
PCT/RO2015/050009 WO2016118033A2 (en) 2014-08-18 2015-08-11 Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine

Publications (3)

Publication Number Publication Date
JP2017526071A true JP2017526071A (ja) 2017-09-07
JP2017526071A5 JP2017526071A5 (ja) 2018-04-05
JP6496401B2 JP6496401B2 (ja) 2019-04-03

Family

ID=55302381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017509643A Active JP6496401B2 (ja) 2014-08-18 2015-08-11 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法

Country Status (12)

Country Link
US (2) US9672354B2 (ja)
EP (2) EP3183660A2 (ja)
JP (1) JP6496401B2 (ja)
KR (2) KR20170042602A (ja)
CN (2) CN106575236A (ja)
AU (2) AU2015378728A1 (ja)
CA (2) CA2954604C (ja)
ES (1) ES2732876T3 (ja)
IL (2) IL249848A0 (ja)
RU (2) RU2017104753A (ja)
SG (2) SG11201700795VA (ja)
WO (2) WO2016118032A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019200450A (ja) * 2018-05-14 2019-11-21 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9756074B2 (en) * 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US20150205962A1 (en) * 2014-01-23 2015-07-23 Cylent Systems, Inc. Behavioral analytics driven host-based malicious behavior and data exfiltration disruption
GB2532415A (en) * 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US9940455B2 (en) 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US10121004B2 (en) * 2015-10-07 2018-11-06 Electronics And Telecommunications Research Institute Apparatus and method for monitoring virtual machine based on hypervisor
US10135701B2 (en) * 2016-02-19 2018-11-20 At&T Intellectual Property I, L.P. Context-aware virtualized control decision support system for providing quality of experience assurance for internet protocol streaming video services
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US20210049292A1 (en) * 2016-03-07 2021-02-18 Crowdstrike, Inc. Hypervisor-Based Interception of Memory and Register Accesses
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US10613897B1 (en) * 2016-12-21 2020-04-07 Ca, Inc. Systems and methods for creating program-specific execution environments
US10243746B2 (en) 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
US9935818B1 (en) 2017-05-02 2018-04-03 At&T Intellectual Property I, L.P. Diagnostic traffic generation for automatic testing and troubleshooting
US10936353B2 (en) * 2017-05-16 2021-03-02 Dell Products L.P. Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US10546120B2 (en) * 2017-09-25 2020-01-28 AO Kaspersky Lab System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
US10698783B2 (en) * 2018-01-09 2020-06-30 Vmware, Inc. Virtualization detection in a computing system
US10810304B2 (en) * 2018-04-16 2020-10-20 International Business Machines Corporation Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
KR102067735B1 (ko) * 2018-06-20 2020-01-17 연세대학교 산학협력단 가상화 시스템의 메모리 관리 장치 및 그 방법
US11385918B2 (en) * 2019-01-23 2022-07-12 Vmware, Inc. Dynamic discovery of internal kernel functions and global data
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11886351B2 (en) 2020-03-25 2024-01-30 Red Hat, Inc. Memory efficient virtual address management for system calls
US11221869B2 (en) 2020-03-25 2022-01-11 Red Hat, Inc. Memory efficient host virtual address management for hypercalls
CN112596921A (zh) * 2020-12-17 2021-04-02 海光信息技术股份有限公司 系统调用处理方法及处理装置
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005528690A (ja) * 2002-05-31 2005-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド セキュア実行モード例外
JP2007528084A (ja) * 2004-03-31 2007-10-04 インテル・コーポレーション 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置
JP2009009232A (ja) * 2007-06-26 2009-01-15 Hitachi Ltd コンピュータとカーネル保護方法並びにコンピュータソフトウエア
JP2011227939A (ja) * 2002-06-07 2011-11-10 Intel Corp システム管理割り込みを再命令し、仮想マシンコンテナを生成することによる、信頼性のないシステム管理コードに対する保護方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5926646A (en) 1997-09-11 1999-07-20 Advanced Micro Devices, Inc. Context-dependent memory-mapped registers for transparent expansion of a register file
US5870575A (en) * 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US6625725B1 (en) 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US6922760B2 (en) * 2002-12-05 2005-07-26 Lsi Logic Corporation Distributed result system for high-performance wide-issue superscalar processor
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US8127098B1 (en) 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US7370181B2 (en) 2004-06-22 2008-05-06 Intel Corporation Single stepping a virtual machine guest using a reorder buffer
US7581085B1 (en) 2005-09-08 2009-08-25 Parallels Software International, Inc. Fast stub and frame technology for virtual machine optimization
US20070106986A1 (en) 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor
US20070136724A1 (en) 2005-12-12 2007-06-14 Arun Sharma Transferring registers in transitions between computer environments
US20070245117A1 (en) * 2006-04-12 2007-10-18 Hob Gmbh & Co. Kg Processor comprising an instruction set and registers for simplified opcode access
US7634642B2 (en) 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8595487B2 (en) 2006-11-01 2013-11-26 Vmware, Inc. Virtualization hardware for device driver isolation
US7996836B1 (en) 2006-12-29 2011-08-09 Symantec Corporation Using a hypervisor to provide computer security
US8561060B2 (en) 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8261028B2 (en) 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US20090187726A1 (en) 2008-01-22 2009-07-23 Serebrin Benjamin C Alternate Address Space to Permit Virtual Machine Monitor Access to Guest Virtual Address Space
US8443363B1 (en) * 2008-05-30 2013-05-14 Symantec Corporation Coordinated virtualization activities
US8201169B2 (en) * 2009-06-15 2012-06-12 Vmware, Inc. Virtual machine fault tolerance
US8612975B2 (en) 2009-07-07 2013-12-17 Advanced Micro Devices, Inc. World switch between virtual machines with selective storage of state information
WO2011142996A2 (en) * 2010-05-09 2011-11-17 Madhav Chinta Methods and systems for forcing an application to store data in a secure storage location
US9165136B1 (en) 2010-10-27 2015-10-20 Amazon Technologies, Inc. Supervising execution of untrusted code
US8578080B2 (en) 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
WO2013089695A1 (en) * 2011-12-14 2013-06-20 Intel Corporation Method and system for monitoring calls to an application program interface (api) function
US20130174144A1 (en) 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
US8719546B2 (en) * 2012-01-04 2014-05-06 Intel Corporation Substitute virtualized-memory page tables
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
AU2013297064B2 (en) 2012-08-03 2016-06-16 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
RU2522019C1 (ru) * 2012-12-25 2014-07-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обнаружения угроз в коде, исполняемом виртуальной машиной
US9058415B1 (en) * 2013-03-15 2015-06-16 Google Inc. Counting events using hardware performance counters and annotated instructions
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005528690A (ja) * 2002-05-31 2005-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド セキュア実行モード例外
JP2011227939A (ja) * 2002-06-07 2011-11-10 Intel Corp システム管理割り込みを再命令し、仮想マシンコンテナを生成することによる、信頼性のないシステム管理コードに対する保護方法
JP2007528084A (ja) * 2004-03-31 2007-10-04 インテル・コーポレーション 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置
JP2009009232A (ja) * 2007-06-26 2009-01-15 Hitachi Ltd コンピュータとカーネル保護方法並びにコンピュータソフトウエア

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019200450A (ja) * 2018-05-14 2019-11-21 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP7035787B2 (ja) 2018-05-14 2022-03-15 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
WO2016118033A3 (en) 2016-10-27
JP6496401B2 (ja) 2019-04-03
US9672354B2 (en) 2017-06-06
RU2686552C2 (ru) 2019-04-29
AU2015378728A1 (en) 2017-01-19
CN106575236A (zh) 2017-04-19
AU2015378729B2 (en) 2020-07-09
RU2017104752A3 (ja) 2019-02-01
CN106575237A (zh) 2017-04-19
WO2016118032A3 (en) 2016-10-13
CA2954604A1 (en) 2016-07-28
RU2017104753A (ru) 2018-09-20
US20160048679A1 (en) 2016-02-18
KR20170042602A (ko) 2017-04-19
WO2016118033A2 (en) 2016-07-28
KR20170042603A (ko) 2017-04-19
RU2017104752A (ru) 2018-09-20
EP3183660A2 (en) 2017-06-28
SG11201700795VA (en) 2017-03-30
IL249848A0 (en) 2017-03-30
CA2954510A1 (en) 2016-07-28
KR102116571B1 (ko) 2020-06-01
EP3183682A2 (en) 2017-06-28
AU2015378729A1 (en) 2017-01-19
US20160048680A1 (en) 2016-02-18
IL249849A0 (en) 2017-03-30
ES2732876T3 (es) 2019-11-26
SG11201700794SA (en) 2017-03-30
WO2016118032A8 (en) 2017-01-05
CA2954604C (en) 2020-09-29
EP3183682B1 (en) 2019-04-03
WO2016118032A2 (en) 2016-07-28

Similar Documents

Publication Publication Date Title
JP6496401B2 (ja) 仮想マシンを終了する際に現在のプロセッサ命令の結果を公開するためのシステムおよび方法
US9400885B2 (en) Computer security systems and methods using virtualization exceptions
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
Shi et al. Handling anti-virtual machine techniques in malicious software
US9536084B1 (en) Systems and methods for delivering event-filtered introspection notifications
US9596261B1 (en) Systems and methods for delivering context-specific introspection notifications
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
NL2030804B1 (en) Flexible return and event delivery
Kuznetsov et al. Privbox: Faster system calls through sandboxed privileged execution
US9531735B1 (en) Systems and methods for delivering introspection notifications from a virtual machine

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180226

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190130

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: 20190208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190308

R150 Certificate of patent or registration of utility model

Ref document number: 6496401

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