CN105393229B - 虚拟机中的页面错误注入 - Google Patents
虚拟机中的页面错误注入 Download PDFInfo
- Publication number
- CN105393229B CN105393229B CN201480040376.3A CN201480040376A CN105393229B CN 105393229 B CN105393229 B CN 105393229B CN 201480040376 A CN201480040376 A CN 201480040376A CN 105393229 B CN105393229 B CN 105393229B
- Authority
- CN
- China
- Prior art keywords
- memory
- processor
- page
- virtual machine
- virtualization
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Abstract
本发明描述的系统及方法允许使用虚拟化技术保护主机系统免受恶意软件影响。在一些实施例中,存储器自省引擎在于所述主机系统上执行的虚拟机VM下方操作。所述引擎经配置以分析由在所述VM内执行的软件使用的虚拟存储器页面的内容及/或保护所述相应的内容免于(例如)由恶意软件进行未经授权的修改。当所述相应的内容被换出存储器时,所述存储器自省引擎将页面错误注入到所述相应的VM中以迫使换入所述相应的内容。
Description
相关申请案
本申请案主张2013年7月17日申请的题为“虚拟机中的页面错误注入(Page FaultInjection In Virtual Machines)”的第61/847,538号美国临时专利申请案的申请日期的权益,所述申请案的全部内容以引用方式并入本文中。
背景技术
本发明涉及用于保护计算机系统免受恶意软件影响的系统及方法。
恶意软件(也称为恶意软件(malware))影响全世界范围内的大量计算机系统。恶意软件呈其许多形式(例如计算机病毒、蠕虫病毒、藏匿技术及间谍软件)向数百万的计算机用户呈现严重风险,从而使其易遭受数据及敏感信息丢失、身份盗用及生产率的损失以及其它。
硬件虚拟化技术允许产生通常被称为虚拟机的模拟计算机环境,其以许多方式表现为物理计算机系统。在典型的应用程序(例如服务器整合及基础设施即服务(IAAS))中,若干虚拟机可在相同的物理机上同时运行,共享其间的硬件资源,从而减小投资及操作成本。每一虚拟机可与其它虚拟机分开地运行其自己的操作系统及/或软件应用程序。由于恶意软件的平稳扩散,在此类环境中操作的每一虚拟机潜在地需要恶意软件保护。
通常用于所属领域中的虚拟化解决方案包括管理程序,也被称为虚拟机监视器,其由在计算硬件与虚拟机的操作系统(OS)之间操作的软件的层组成,且具有比相应的OS多的处理器权限。可在管理程序的权限级别下进行反恶意软件操作。尽管此类配置可增加安全性,但其引入一层额外的复杂性且可带来较大的计算成本。
对针对硬件虚拟化平台开发有效、稳健且可扩展的反恶意软件解决方案存在相当大的兴趣。
发明内容
根据一个方面,一种主机系统包括:经配置以操作管理程序及存储器自省引擎的硬件处理器。所述管理程序经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所述虚拟机经配置以利用虚拟化处理器执行目标进程。所述存储器自省引擎在虚拟机外部执行且经配置以根据虚拟机的页面表确定目标进程的虚拟存储器空间的目标页面是否被换出虚拟化存储器,且作为响应,当目标页面被换出虚拟化存储器时直接将页面错误注入到虚拟机中,所述页面错误使得虚拟机的操作系统将目标页面映射到虚拟化存储器的页面。
根据另一方面,一种方法包括:利用主机系统的至少一个硬件处理器执行管理程序,所述管理程序经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所述虚拟机进一步经配置以利用所述虚拟化处理器执行目标进程。所述方法进一步包括:利用至少一个硬件处理器以确定所述目标进程的虚拟存储器空间的目标页面是否被换出虚拟化存储器,且作为响应,当所述页面被换出所述虚拟化存储器时利用所述至少一个硬件处理器直接将页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所述目标页面映射到所述虚拟化存储器的页面。
根据另一方面,一种非暂时性计算机可读媒体存储指令,所述指令在由主机系统的至少一个硬件处理器执行时使得所述主机系统形成存储器自省引擎,其中所述主机系统进一步经配置以执行暴露包括虚拟化处理器及虚拟化存储器的虚拟机的管理程序,所述虚拟机经配置以利用虚拟化处理器执行目标进程。所述存储器自省引擎在所述虚拟机外部执行且经配置以根据所述虚拟机的页面表确定所述目标进程的虚拟存储器空间的目标页面是否被换出所述虚拟存储器,且作为响应,当所述目标页面被换出所述虚拟化存储器时直接将页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所述目标页面映射到所述虚拟化存储器的页面。
附图说明
在阅读以下详细的描述之后且在参看图式之后,本发明的前述方面及优点将得到更好的理解,在图式中:
图1展示根据本发明的一些实施例的由在主机系统上执行的管理程序暴露的一组示范性虚拟机,及保护所述组虚拟机免受恶意软件影响的存储器自省引擎。
图2展示根据本发明的一些实施例的主机系统的示范性硬件配置。
图3展示根据本发明的一些实施例的被暴露到客户虚拟机的虚拟化硬件的示范性配置。
图4说明根据本发明的一些实施例的在各种处理器权限级别下在主机系统上执行的软件对象的示范性分层。
图5展示根据本发明的一些实施例的存储器地址的示范性映射及存储器页面换入及换出虚拟化存储器的示范性交换。
图6展示根据本发明的一些实施例的由存储器自省引擎执行以保护虚拟机免受恶意软件影响的步骤的示范性序列。
图7展示根据本发明的一些实施例的由存储自省执行以实施直接页面错误注入的步骤的示范性序列。
图8展示根据本发明的一些实施例的说明图6到7的方法的应用的步骤的示范性序列。
图9展示根据本发明的一些实施例的说明图6到7的方法的另一应用的步骤的示范性序列。
图10说明根据本发明的一些实施例的含有目标进程的数据的存储器页面的一组虚拟地址的示范性确定。
具体实施方式
在以下描述中,应理解,结构之间所有所列举的连接可为直接可操作的连接或通过中间结构的间接可操作的连接。一组元件包含一或多个元件。对元件的任何列举被理解为指代至少一个元件。多个元件包含至少两个元件。除非另外要求,否则任何所描述的方法步骤无需一定以特定的所说明的次序执行。来源于第二元素的第一元素(举例来说,数据)包含与第二元素相同的第一元素,也包含通过处理第二元素及任选地其它数据产生的第一元素。根据参数做出确定或决策包含根据参数及任选地根据其它数据做出确定或决策。除非另外指定,否则一些量/数据的指示符可为所述量/数据本身或不同于量/数据本身的指示符。除非另外指定,否则进程为计算机程序(例如应用程序或操作系统的一部分)的实例,且以具有至少一个执行线程及由操作系统指派到其的虚拟存储器的区段为特征,相应的区段包括可执行代码。除非另外指定,否则页面表示被个别地映射到主机系统的物理存储器的虚拟机的最小单元。除非另外指定,否则直接将页面错误注入到虚拟机中包括:在无需来自操作系统或在相应的虚拟机内执行的其它软件的协助的情况下,在相应的虚拟机的虚拟化处理器内诱发页面错误事件。此类直接注入不排除操作系统或其它软件响应于所注入的页面错误而采取动作,例如以处理页面错误。计算机可读媒体包含非暂时性媒体,例如磁存储媒体、光存储媒体及半导体存储媒体(举例来说,硬盘驱动器、光盘、闪存存储器、DRAM),也包含通信链路,例如导电电缆及光纤链路。根据一些实施例,本发明尤其提供包括经编程以执行本文中描述的方法的硬件(举例来说,一或多个处理器)的计算机系统,以及对指令编码以执行本文中描述的方法的计算机可读媒体。
以下描述作为实例但不一定作为限制说明本发明的实施例。
图1展示根据本发明的一些实施例的将硬件虚拟化用于恶意软件保护的主机系统10 的示范性配置。主机系统10可表示企业计算装置(例如企业服务器)或终端用户装置(例如个人计算机或智能手机)。其它示范性主机系统包含娱乐装置(例如TV或游戏机)或具有存储器及处理器且需要恶意软件保护的任何其它装置。在图1的实例中,主机系统10 执行由管理程序30暴露的一组客户虚拟机32a到b。虚拟机(VM)包括实际的物理机/计算机系统的抽象(举例来说,软件模拟),所述VM能够运行操作系统及其它应用程序。管理程序30包含经配置以产生多个虚拟化装置(例如虚拟处理器及虚拟存储器控制器) 且将此类虚拟化装置呈现到软件以替代主机系统10的真实的物理装置的软件。在一些实施例中,管理程序30允许由主机系统10的硬件资源的多个虚拟机进行的多路复用(共享)。管理程序30可进一步管理此类多路复用使得每一VM独立地操作且察觉不到主机系统10上同时执行的其它VM。流行的管理程序的实例包含来自Vmware公司的VMware vSphereTM及开源Xen管理程序以及其它。
每一VM 32a到b可分别执行客户操作系统(OS)34a到b。一组示范性应用程序42a到d一般表示任何软件应用程序,例如文字处理、图像处理、媒体播放器、数据库、日历、个人联系人管理、浏览器、游戏、音频通信、数据通信及反恶意软件应用程序以及其它。操作系统34a到b可包括任何广泛可用的操作系统,例如Microsoft 或AndroidTM以及其它。每一OS在虚拟机内执行的应用程序与相应的VM的虚拟化硬件装置之间提供接口。在以下描述中,在虚拟机的虚拟处理器上执行的软件被认为在相应的虚拟机内执行。例如,在图1的实例中,应用程序42a到 b被认为在客户VM 32a内执行,而应用程序42c到d被认为在客户VM 32b内执行。相比之下,管理程序30被认为在客户VM 32a到b外部或下面执行。
在一些实施例中,管理程序30包含经配置以执行如下文进一步描述的反恶意软件操作的存储器自省引擎40。引擎40可被并入到管理程序30中,或可作为与管理程序 30不同且独立于管理程序30但在与管理程序30实质上类似的处理器权限级别下执行的软件组件而被传递。单一引擎40可经配置以对在主机系统10上执行的多个VM进行恶意软件保护。
图2展示主机系统10的示范性硬件配置。系统10包括一组物理装置,包含处理器12、存储器单元14、一组输入装置16、一组输出装置18、一组存储装置20及一组网络适配器22,所有这些都由控制器集线器24连接。在一些实施例中,处理器12包括物理装置(举例来说,形成于半导体衬底上的多核集成电路),所述物理装置经配置以用一组信号及/或数据执行计算及/或逻辑操作。在一些实施例中,此类逻辑操作呈处理器指令序列(举例来说,机器代码或其它类型软件)的形式被传递到处理器12。存储器单元14 可包括存储在实施指令的进程中由处理器12存取或产生的数据/信号的易失性计算机可读媒体(举例来说,RAM)。
输入装置16可包含计算机键盘、鼠标及麦克风以及其它,包含相应的硬件接口及/或适配器,从而允许用户将数据及/或指令引入到主机系统10中。输出装置18可包含显示器装置(例如监视器及扬声器以及其它),以及硬件接口/适配器(例如图形卡),从而允许主机系统10将数据传达到用户。在一些实施例中,输入装置16及输出装置18可共享一块共同的硬件,如在触控屏装置的情况下。存储装置20包含实现软件指令及/或数据的非易失性存储、读取、及写入的计算机可读媒体。示范性存储装置20包含磁盘及光盘及闪存存储装置,以及可移动媒体,例如CD及/或DVD盘及驱动器。网络适配器 22的组使得主机系统10能够连接到计算机网络及/或连接到其它装置/计算机系统。控制器集线器24表示多个系统、外设及/或芯片组总线及/或使得处理器12与装置14、16、 18、20及22之间能够通信的所有其它电路。例如,控制器集线器24可包含存储器控制器、输入/输出(I/O)控制器及中断控制器以及其它。在另一实例中,控制器集线器24可包括将处理器12连接到存储器14的北桥及/或将处理器12连接到装置16、18、20及 22的南桥。
为了实现如图1中展示的配置,管理程序30可产生多个虚拟化装置,其各自模拟系统10的物理硬件装置。管理程序30可进一步将一组虚拟化装置指派到每一VM 32a 到b,且控制调度、信令及通信使得VM 32a到b可同时使用处理器12及其它硬件装置。执行此类操作(如暴露VM 32a到b)在所属领域中也为已知的。
图3展示如由管理程序30暴露的虚拟机32的示范性配置。VM 32可表示(例如)图 1的VM 32a到b中的任何者。VM 32包含虚拟化处理器112、虚拟化存储器单元114、虚拟化输入装置116、虚拟化输出装置118、虚拟化存储装置120、虚拟化网络适配器 122及虚拟化控制器集线器124。虚拟化处理器112包括对处理器12的至少一些功能性的模拟且经配置以接收形成软件(例如操作系统及其它应用程序)的部分的处理器指令以用于执行。将处理器112用于执行的软件被认为在虚拟机32内执行。在一些实施例中,虚拟化存储器单元114包括用于存储及检索由虚拟化处理器112使用的数据的可寻址空间。其它虚拟化装置(举例来说,虚拟化输入、输出、存储装置等等)模拟主机系统10的相应的物理装置的至少一些功能性。虚拟化处理器112可经配置以与此类装置交互,如同其与对应的物理装置交互一样。例如,在VM 32内执行的软件可经由虚拟化网络适配器122发送及/或接收网络业务。在一些实施例中,管理程序30可将仅虚拟化装置的子集暴露到VM 32(例如,仅虚拟化处理器112、虚拟化存储器114及集线器124的部分)。管理程序30还可给出主机系统10的经选择的VM专用的一些硬件装置。在一个此类实例中,VM 32a(图1)可具有专用输入装置16及输出装置18,但缺少虚拟化网络适配器。同时,VM 32b可具有专用网络适配器22。
图4说明根据本发明的一些实施例的在主机系统10上执行的软件对象的分层。图4是从处理器权限级别(在所属领域中也称为层或保护环)的角度来呈现。在一些实施例中,管理程序30在最高权限级别(举例来说,支持虚拟化的平台上的VMXroot,也称为环-1或根模式)下控制处理器12,从而产生如虚拟机32暴露到在主机系统10上执行的其它软件的硬件虚拟化平台。操作系统34(例如图2中的OS 34a到b)在VM 32的虚拟环境内执行,OS34具有比管理程序30小的处理器权限(举例来说,在英特尔(Intel) 平台上的环0或内核模式)。一组应用程序42e到f在比OS 34小的处理器权限(举例来说,环3或用户模式)下执行。应用程序42e到f的部分可在内核权限级别(例如,由应用程序42f安装的驱动程序36;示范性驱动程序36执行反恶意软件操作,例如检测软件对象的恶意软件指示行为及/或检测软件对象内的恶意软件指示签名)下执行。类似地, OS 34的部分可在用户模式(环3)中执行。
在一些实施例中,自省引擎40实质上在与管理程序30相同的处理器权限级别下执行,且经配置以执行在主机系统10上执行的虚拟机(例如VM 32)的自省。VM的或在相应的VM内执行的软件对象的自省可包括:分析相应的软件对象的行为,例如识别由对象执行的一组操作(例如,发布系统调用、存取OS的注册表、从远程位置下载文件、将数据写入到文件等)。自省可进一步包括:确定含有软件对象的部分的存储器区段的地址;存取相应的存储器区段;以及分析存储于相应的存储器区段内的内容。自省的其它实例包含:拦截及/或约束对此类存储器区段的某些进程的存取,举例来说,防止进程重写由另一进程使用的代码或数据。在一些实施例中,由引擎40针对自省选择的对象包括进程、指令流、寄存器及数据结构(例如页面表及相应的VM的驱动对象)以及其它。
为了在如图1(即,从相应的VM外部)中说明的配置中执行VM 32的自省,引擎40 的一些实施例利用处理器12的存储器映射结构及机制。虚拟机通常与虚拟化物理存储器(举例来说,图3中的存储器114,在所属领域中也称为客户物理存储器)一起操作。虚拟化物理存储器包括实际物理存储器14的抽象表示,例如作为指定到每一客户VM 的虚拟化地址的连续空间,其中所述空间的部分被映射到物理存储器14及/或物理存储装置20内的地址。在经配置以支持虚拟化的系统中,通常通过由处理器12控制的专用数据结构实现此类映射,所述专用数据结构称为第二级地址转换(SLAT)。流行的SLAT 实施方案包含扩展页面表(平台上的EPT)及嵌套页面表(平台上的NPT)。在此类系统中,虚拟化物理存储器可被划分在所属领域中称为页面的单元中,页面表示经由机制(例如EPT及/或NPT)被个别地映射到物理存储器的虚拟化物理存储器的最小单元,即,用页面粒度执行物理与虚拟化物理存储器之间的映射。所有页面通常都具有预先确定的尺寸,举例来说,4千字节、2兆字节等。通常由管理程序30配置虚拟化物理存储器到页面的划分。在一些实施例中,管理程序30还配置EPT/NPT且因此配置物理存储器与虚拟化物理存储器之间的映射。虚拟化物理存储器地址到物理存储器地址的实际映射(转换)可包括在主机系统10的转换后备缓冲器(TLB)中查找物理存储器地址。在一些实施例中,地址转换包括:执行页面行走,其包含在一组页面表及/或页面目录中的一组连续的地址查找;以及执行计算,例如将页面的偏置添加到关于相应的页面的地址。
一些硬件配置允许管理程序30(举例来说)通过对相应的页面设定读、写及/或执行存取权利来选择性地控制对存储于物理存储器14中的每一页面内的数据的存取。(例如)可通过修改EPT或NPT内的相应的页面的项目来设定此类权利。管理程序30可因此选择哪个软件对象可存取在每一页面内的地址处存储的数据,且可指示用相应的数据允许哪种操作,举例来说,读、写、执行。为了执行操作(例如将数据写入到对象不具有相应的权利的页面或执行来自被标记为非可执行的页面的代码)由在VM内执行的软件对象做出的尝试可触发虚拟机退出事件(举例来说,英特尔平台上的VMExit事件)。在一些实施例中,虚拟机退出事件将对处理器的控制从执行相应的软件对象的VM转移到管理程序30。此类转移可允许在管理程序30的处理器权限级别下执行的软件拦截未经授权的写或执行尝试。在一些实施例中,自省引擎40执行此类自省以作为反恶意软件操作的部分。
在一些实施例中,OS 34通过(例如)利用页面表机制维持VM 32相应的虚拟存储器空间与虚拟化物理存储器之间的映射(地址转换),针对进程(例如图4中的应用程序42e 到f)配置虚拟存储器空间。在一些实施例中,进程虚拟存储器空间也被划分成页面,此类页面表示被OS 34个别地映射到虚拟化物理存储器的虚拟存储器的最小单元,即,用页面粒度执行对虚拟化物理存储器映射的虚拟化。
图5说明在如图4中展示的实施例中的存储器地址的示范性映射。软件对象(例如应用程序、进程或在客户VM 32内执行的操作系统的部分)由客户OS 34指派虚拟存储器空间214a。当软件对象试图存取空间214a的示范性存储器页面60a的内容时,根据由客户OS34配置及控制的页面表,由客户VM 32的虚拟化处理器将页面60a的地址转换成VM 32的虚拟化物理存储器空间114的页面60b的地址。配置及控制虚拟化物理存储器114的管理程序30(例如)使用如上文论述的SLAT构件接着将页面60b的地址映射到在主机系统10的物理存储器14内的页面60c的地址。
在一些实施例中,管理程序30构建包括物理存储器14的表示的其本身的虚拟存储器空间214b且利用转换机构(例如页面表)将空间214b中的地址映射到物理存储器14中的地址中。在图5中,此类示范性映射将页面60c的地址转换成页面60h的地址。此类映射允许管理程序30管理(举例来说,读取、写入及对其的控制存取)属于在主机系统 10上运行在各种VM内执行的软件对象的存储器页面。
图5进一步说明由客户OS 34执行的页面交换操作。页面交换是现代操作系统的共同特征,其用以有效地管理可用的存储器资源。在一些实施例中,将页面换出存储器包括OS将相应的页面的内容从存储器移动到存储装置(举例来说,磁盘),使得相应的页面可用以存储其它数据。在稍后的时间,OS可大概在与存储内容的原始页面的地址不同的地址处通过将相应的内容从存储装置移回到存储器中来执行页面的换入。为了完成换入,OS可修改相应的页面的页面表项目以反应地址变化。在图5中说明的实例中,页面60c被换出到存储装置上的页面60d。由于OS 34在虚拟机内执行,所以OS 34将虚拟化物理存储器114视为其物理存储器,且将虚拟化存储装置120视为其物理存储装置。所以有效地将页面60c换出存储器包括将页面60c的内容移动到虚拟化存储装置 120。装置120可包括由物理装置20的管理程序30产生的抽象,所以页面60d的内容可实际上被重新引导到装置20上的页面60k。在一些实施例中,管理程序30可给予客户VM 32对存储装置20的直接存取,例如使用来自的VT-d技术。在此类配置中,虚拟化存储装置120可与主机系统10的实际物理存储装置一致。为了执行换入,OS 34 可将页面60d的内容移动到虚拟化物理存储器114的页面60e。客户OS 34可进一步修改对应于页面60a的页面表项目以指示从页面60a到页面60e的地址转换(图5中的虚线箭头)。页面60e可被映射到物理存储器14中的页面60m。
图6展示根据本发明的一些实施例的由存储器自省引擎40执行的用以保护虚拟机免受恶意软件影响的步骤的示范性序列。此类反恶意软件保护包括:(例如)识别在相应的VM内执行的经选择的进程(此后被视为目标进程)的存储器空间的页面(此后被视为目标页面);以及保护相应的页面内容免于(举例来说)由恶意软件实体进行的未经授权的修改。在另一实例中,自省引擎40可确定目标页面是否含有恶意代码。目标进程可属于(例如)应用程序(例如应用程序42e到f)或属于图4中的客户OS 34。当目标进程在用户级别处理器权限(举例来说,中的用户模式)下执行时,目标页面的内容可能并不是一直存在于存储器中,而是可偶尔由OS换入到存储器中及换出存储器。通过在VM 32 外部执行,存储器自省引擎40可能不能对此类经换出的存储器页面的内容直接存取。
在步骤302到304的序列中,引擎40等待直到当前执行上下文为目标进程的执行上下文,即,直到当前执行的指令属于目标进程。确定当前执行上下文可包括(例如)读取相应的VM的虚拟处理器的CR3寄存器的内容(x86平台的CR3寄存器存储页面结构的地址,所述页面结构地址唯一地识别每一执行进程)。当执行上下文为目标进程的执行上下文时,在步骤306到308的序列中,引擎40可确定目标页面的内容当前是否被换出存储器。当目标页面的内容在存储器中时,在步骤316中,引擎40可继续自省目标页面(举例来说)以分析及/或保护目标页面的内容。当目标页面的内容当前被换出时,在步骤310中,引擎40直接将页面错误注入到相应的VM中以迫使换入目标页面(如下文将详细描述)。接下来,在步骤312到314的序列中,引擎40等待直到目标页面被换入,即,直到相应的页面内容被映射到相应的VM的虚拟化物理存储器,以执行自省。
为了确定目标页面是否存在于存储器中(步骤306到308),以及为了确定目标页面是否已被换入(步骤312到314),存储器自省引擎40可存取由OS 34构建的页面表的内容。在一些实施例中,目标页面的页面表项目的字段(举例来说,专用位)指示相应的页面当前是否存在于存储器中。
图7说明由引擎40执行以直接注入页面错误从而迫使换入目标页面(图6中的步骤310)的步骤的示范性序列。在步骤序列322到324中,引擎40评估当前状态或虚拟处理器112以确定页面错误异常是否能被安全地注入到VM 32中。步骤322可包括评估当前在处理中的中断请求的优先级。在Microsoft系统中,此类评估可包括(例如) 通过查找VM32的段寄存器的内容确定当前中断请求级别(IRQL)。此类示范性寄存器包含x86处理器架构的FS及/或GS寄存器,所述FS及/或GS寄存器存储到包含IRQL的数据结构的指针。在示范性实施例中,当IRQL<2时,注入页面错误被认为是安全的。当较高优先级的中断在等待时(举例来说,IRQL≥2),步骤322到324等待待服务的高优先级请求。
在一些实施例中,步骤322可包含确定虚拟处理器112当前在其下执行的权限级别(环)。在运行Microsoft的主机系统中,当处理器在用户模式(环3)中执行时,IRQL为零,对应于用户模式页面的如此页面错误的注入可被认为是安全的。当处理器 112在内核模式(环0)中执行时,可需要额外确定以推断错误注入是否为安全的。
步骤326到328的序列将页面错误异常注入到VM 32中,所述异常经配置以触发目标页面的换入。在示范性实施例中,在步骤326中,引擎40将目标页面的虚拟地址写入到相应的VM的虚拟处理器的CR2寄存器中,从而向OS 34指示将哪一虚拟页面换入到存储器中。接下来,在步骤328中,引擎40(例如)通过写入VM 32的虚拟机控制结构(VMCS)的一组控制位在虚拟化处理器112内触发异常,相应的控制位可配置以在相应的VM内触发页面错误。在经配置以支持虚拟化的处理器上,此类控制位为 VMCS的VM项目事件注入字段的部分。
VM控制结构为由管理程序30维持以描述在主机系统10上执行的客户VM的一种特殊种类的数据结构。VMCS的格式可为特定于实施及/或特定于平台的。对于包括多个虚拟化处理器112的VM,管理程序30可维持用于每一虚拟处理器的相异的VMCS。在一些实施例中,每一VMCS可包括客户状态区及主机状态区,所述客户状态区存储数据,例如CPU状态及/或相应的虚拟处理器的控制寄存器的内容,且所述主机状态区存储用于管理程序30的类似数据。在一些实施例中,处理器12使存储器中的区域与每一VMCS 相关联,命名为VMCS区域。软件可使用区域的地址(举例来说,VMCS指针)来指代特定VMCS。在任何给定时间处,至多一个VMCS可被加载到处理器12上,表示所述VM 当前控制处理器。
图8到9展示在环境中的本发明的一些实施例的示范性应用。图8说明由引擎40执行以确定目标进程主要可执行的虚拟存储器地址的步骤的序列。在步骤332中,引擎40可检测目标进程的开始。步骤332可利用所属领域中已知的任何方法,例如拦截管理活动进程的列表的OS的机构。例如,在中,每当进程产生时,相应的进程的指示符被插入到活动进程的列表中;在相应的进程的结束后从列表移除指示符。在一些实施例中,在开始进程之后,OS 34也构建包括由OS 34使用的数据的特定于进程的数据结构(被称为进程环境块(PEB))以管理与相应的进程相关联的资源。通过拦截(举例来说,安放一拦截)用于将目标进程插入到活动进程的列表中的OS指令,引擎40可获得例如相应的PEB的存储器地址等信息,引擎40可在步骤334中提取所述信息。在Windows中,PEB的虚拟地址被存储于OS的数据结构中,被称为执行进程块 (EPROCESS)。图10展示此类特定于进程的数据结构的说明性图式。
作为用户级别数据结构,含有PEB数据的虚拟存储器页面当前可存在或可不存在于存储器中。在步骤336中,引擎40确定相应的虚拟存储器页面是否被换出,且如果否,则在步骤340中引擎40继续(例如)通过解析PEB数据确定目标进程的主要可执行的虚拟地址。当PEB数据当前被换出存储器时,步骤338使用(举例来说)如上文关于图7描述的机制迫使换入含有PEB数据的相应的页面。
图9展示由引擎40实施以执行由目标进程加载的可执行模块(例如库)的存储器自省的步骤的示范性序列。恶意软件通常使用DLL作为用于携载恶意代码的向量,所以分析此类库的内容对反恶意软件操作可能是重要的。在步骤342中存取含有PEB数据的虚拟页面之后(参看(举例来说)上文的步骤336到338),在步骤344到346到348的序列中引擎40识别由目标进程使用的目标模块(举例来说,动态链接库(DLL))且确定相应的模块是否已加载。当目标模块已加载时,在步骤350中引擎40可(例如)根据PEB的特定数据字段(参看(举例来说)图10)确定相应的模块的虚拟地址。在步骤352中,引擎40确定含有模块数据且存在于在步骤350中确定的地址处的虚拟页面当前是否被换出存储器,且当没有时,在步骤356中继续执行相应的模块的存储器自省。当相应的模块的虚拟页面当前被换出时,在步骤354中,引擎40使用(例如)上文关于图7描述的机制迫使换入相应的虚拟页面。
图10展示在环境中的虚拟地址的示范性确定。在一些实施例中,OS 34维持内核虚拟存储器空间214d,其中位于虚拟地址60p处的页面含有由OS 34用来管理目标进程的执行的EPROCESS结构的部分。(例如)可通过拦截目标进程的开始(参见(举例来说)图8中的步骤332)确定地址60p。EPROCESS数据结构的字段持有目标进程的进程环境块(PEB)的指示符(举例来说,指针)。指针指示由OS 34指派到目标进程的进程虚拟存储器214e内的虚拟地址60q。PEB结构进一步包含到含有关于由目标进程加载的可执行模块(举例来说,库)的信息的结构(LDR数据)的指针。LDR数据位于空间214e内的地址60r处。通过行走由OS 34构建的进程管理数据结构的分层,自省引擎40可因此确定用于自省目标的对象的多个虚拟地址。当位于此类地址处的存储器页面的内容被换出 RAM时,引擎40可迫使OS34使用本文中描述的方法将相应的页面换入。
上文描述的示范性系统及方法允许使用虚拟化技术保护主机系统免受恶意软件影响。在一些实施例中,存储器自省引擎在于主机系统上执行的虚拟机下方操作。存储器自省引擎可通过分析由在相应的虚拟机内执行的进程使用的存储器页面的内容保护虚拟机。自省引擎可因此从相应的VM外部确定相应的进程的代码是否含有恶意软件。
在一些实施例中,自省引擎还可防止一些关键对象(例如某些驱动程序及页面表以及其它)的未经授权的修改(举例来说,通过恶意软件)。为了保护此类对象,一些实施例可通过拦截对被分配到相应的对象的存储器页面的试图写入来防止变化。可根据管理程序的级别执行此类拦截。
在常规的反恶意软件系统中,安全应用程序在类似于操作系统或共同应用程序的处理器权限级别的处理器权限级别下执行。此类系统可能易受也在操作系统的权限级别下操作的高级的恶意软件的伤害。相比之下,在本发明的一些实施例中,管理程序在最高权限级别(举例来说,根模式或环-1)下执行,从而将操作系统转移到虚拟机。存储器自省引擎可在与管理程序相同的处理器权限级别下执行。可因此根据高于操作系统的处理器权限级别的处理器权限级别进行反恶意软件操作。在一些实施例中,单一存储器自省引擎可保护在相应的计算机系统上同时执行的多个虚拟机。
尽管存储器自省引擎在用于保护目标的虚拟机外部执行,但引擎可确定由在受保护的VM内运行的软件对象使用的虚拟地址。然而,当此类虚拟地址指向当前由操作系统换出存储器的页面的内容时,存储器自省引擎不能存取相应的内容。在本发明的一些实施例中,当页面当前被换出时,存储器自省引擎可迫使OS将相应的页面换入,从而使相应的页面内容可用于分析及/或保护。为了迫使换入,存储器自省引擎可在相应的虚拟机的虚拟化处理器内触发处理器事件(例如页面错误异常),所述处理器事件经配置以使得操作系统将经换出的页面带回到存储器。触发处理器事件可包括:(例如)写入到由相应的虚拟机使用的虚拟机控制结构的一组控制位。存储器自省引擎可因此在无需来自 OS或来自在相应的VM内执行的其它软件的协助的情况下将页面错误注入到相应的虚拟机中。
所属领域的技术人员将清楚的是,在不背离本发明的范围的情况下可以许多方式更改上文的实施例。因此,本发明的范围应由以下权利要求书及其合法等效物确定。
Claims (23)
1.一种用于保护计算机系统免受恶意软件影响的主机系统,所述主机系统包括硬件处理器,其经配置以操作:
管理程序,其经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所述虚拟机经配置以利用所述虚拟化处理器执行目标进程,其中暴露所述虚拟机包括配置数据结构以存储所述虚拟化处理器的当前状态,所述数据结构包括事件注入字段,当所述事件注入字段设置为预定值时,致使所述虚拟化处理器产生页面错误;以及存储器自省引擎,其在所述虚拟机外部执行且经配置以:
根据所述虚拟机的页面表确定所述目标进程的虚拟存储器空间的目标页面是否被换出所述虚拟化存储器;以及
作为响应,当所述目标页面被换出所述虚拟化存储器时,直接将所述页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所述目标页面映射到所述虚拟化存储器的页面,其中直接注入所述页面错误包括所述存储器自省引擎将所述预定值写入所述事件注入字段。
2.根据权利要求1所述的主机系统,其中直接注入所述页面错误包括:所述存储器自省引擎将所述目标页面的虚拟地址写入到所述虚拟化处理器的寄存器。
3.根据权利要求1所述的主机系统,其中所述存储器自省引擎进一步经配置以:
为直接注入所述页面错误做准备,根据所述虚拟化处理器的所述当前状态确定是否满足注入条件;以及
作为响应,当满足所述注入条件时直接注入所述页面错误。
4.根据权利要求3所述的主机系统,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器的中断请求级别IRQL。
5.根据权利要求3所述的主机系统,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器当前在其下执行的权限级别。
6.根据权利要求3所述的主机系统,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器的当前执行上下文。
7.根据权利要求3所述的主机系统,其中响应于确定所述注入条件是否被满足,所述存储器自省引擎进一步经配置以当所述注入条件没有被满足时,延迟注入所述页面错误直到所述注入条件被满足。
8.根据权利要求1所述的主机系统,其中所述存储器自省引擎进一步经配置响应于直接注入所述页面错误以:
检测所述目标页面的页面表项目的修改;以及
作为响应,根据所述修改确定所述目标页面是否被映射到所述虚拟化存储器的所述页面。
9.根据权利要求1所述的主机系统,其中所述存储器自省引擎进一步经配置以根据所述目标页面的内容确定所述目标进程是否为恶意的。
10.根据权利要求1所述的主机系统,其中所述存储器自省引擎进一步经配置以拦截对所述目标页面的内容的试图修改。
11.根据权利要求1所述的主机系统,其中所述存储器自省引擎进一步经配置为确定所述目标页面是否被换出所述虚拟化存储器做准备以:
检测所述虚拟化处理器的事件,所述事件指示在所述虚拟机内的所述目标进程的开始;以及
作为响应,根据所述事件确定所述目标页面的虚拟地址。
12.一种用于保护计算机系统免受恶意软件影响的方法,其包括:
利用主机系统的至少一个硬件处理器执行管理程序,所述管理程序经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所述虚拟机经配置以利用所述虚拟化处理器执行目标进程,其中暴露所述虚拟机包括配置数据结构以存储所述虚拟化处理器的当前状态,所述数据结构包括事件注入字段,当所述事件注入字段设置为预定值时,致使所述虚拟化处理器产生页面错误;
利用所述至少一个硬件处理器确定所述目标进程的虚拟存储器空间的目标页面是否被换出所述虚拟化存储器;以及
作为响应,当所述页面被换出所述虚拟化存储器时,利用所述至少一个硬件处理器直接将所述页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所述目标页面映射到所述虚拟化存储器的页面,其中直接注入所述页面错误包括所述存储器自省引擎将所述预定值写入所述事件注入字段。
13.根据权利要求12所述的方法,其中直接注入所述页面错误包括:将所述目标页面的虚拟地址写入到所述虚拟化处理器的寄存器。
14.根据权利要求12所述的方法,其进一步包括为直接注入所述页面错误做准备:
利用所述至少一个硬件处理器以根据所述虚拟化处理器的所述当前状态确定是否满足注入条件;以及
作为响应,当满足所述注入条件时利用所述至少一个硬件处理器直接注入所述页面错误。
15.根据权利要求14所述的方法,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器的当前中断请求级别IRQL。
16.根据权利要求14所述的方法,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器当前在其下执行的权限级别。
17.根据权利要求14所述的方法,其中确定是否满足所述事件注入条件包括:确定所述虚拟化处理器的当前执行上下文。
18.根据权利要求14所述的方法,其进一步包括响应于确定所述注入条件是否被满足,当所述注入条件没有被满足时,延迟注入所述页面错误直到所述注入条件被满足。
19.根据权利要求12所述的方法,其进一步包括,响应于直接注入所述页面错误:
利用所述至少一个硬件处理器检测所述目标页面的页面表项目的修改;以及
作为响应,利用所述至少一个硬件处理器以根据所述修改确定所述目标页面是否被映射到所述虚拟化存储器的所述页面。
20.根据权利要求12所述的方法,其进一步包括利用所述至少一个硬件处理器以根据所述目标页面的内容确定所述目标进程是否为恶意的。
21.根据权利要求12所述的方法,其进一步包括利用所述至少一个硬件处理器拦截对所述目标页面的内容的试图修改。
22.根据权利要求12所述的方法,其进一步包括,为确定所述目标页面是否被换出所述虚拟化存储器做准备:
利用所述至少一个硬件处理器检测所述虚拟化处理器的事件,所述事件指示在所述虚拟机内的所述目标进程的开始;以及
作为响应,利用所述至少一个硬件处理器以根据所述事件确定所述目标页面的虚拟地址。
23.一种用于保护计算机系统免受恶意软件影响的非暂时性计算机可读媒体,所述非暂时性计算机可读媒体存储指令,所述指令在由主机系统的至少一个硬件处理器执行时使得所述主机系统形成存储器自省引擎,其中所述主机系统执行暴露包括虚拟化处理器及虚拟化存储器的虚拟机的管理程序,所述虚拟机经配置以利用所述虚拟化处理器执行目标进程,其中暴露所述虚拟机包括配置数据结构以存储所述虚拟化处理器的当前状态,所述数据结构包括事件注入字段,当所述事件注入字段设置为预定值时,致使所述虚拟化处理器产生页面错误,其中所述存储器自省引擎在所述虚拟机外部执行,且其中所述存储器自省引擎经配置以:
根据所述虚拟机的页面表确定所述目标进程的虚拟存储器空间的目标页面是否被换出所述虚拟化存储器;以及
作为响应,当所述目标页面被换出所述虚拟化存储器时直接将页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所述目标页面映射到所述虚拟化存储器的页面,其中直接注入所述页面错误包括所述存储器自省引擎将所述预定值写入所述事件注入字段。
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 (2)
Publication Number | Publication Date |
---|---|
CN105393229A CN105393229A (zh) | 2016-03-09 |
CN105393229B true CN105393229B (zh) | 2019-01-18 |
Family
ID=52344738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480040376.3A Active CN105393229B (zh) | 2013-07-17 | 2014-07-02 | 虚拟机中的页面错误注入 |
Country Status (13)
Country | Link |
---|---|
US (1) | US9507727B2 (zh) |
EP (1) | EP3022648B8 (zh) |
JP (1) | JP6411494B2 (zh) |
KR (1) | KR101955189B1 (zh) |
CN (1) | CN105393229B (zh) |
AU (1) | AU2014389571B2 (zh) |
CA (1) | CA2915646C (zh) |
ES (1) | ES2639500T3 (zh) |
HK (1) | HK1216679A1 (zh) |
IL (1) | IL243122B (zh) |
RU (1) | RU2659472C2 (zh) |
SG (1) | SG11201510735RA (zh) |
WO (1) | WO2015152747A2 (zh) |
Families Citing this family (18)
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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129531A (zh) * | 2011-03-22 | 2011-07-20 | 北京工业大学 | 一种基于Xen的主动防御方法 |
CN102736969A (zh) * | 2012-05-22 | 2012-10-17 | 中国科学院计算技术研究所 | 一种针对硬件虚拟化的内存监控方法和系统 |
Family Cites Families (12)
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 |
US8694738B2 (en) | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8914458B2 (en) | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
-
2014
- 2014-05-28 US US14/289,163 patent/US9507727B2/en active Active
- 2014-07-02 SG SG11201510735RA patent/SG11201510735RA/en unknown
- 2014-07-02 JP JP2016527974A patent/JP6411494B2/ja active Active
- 2014-07-02 AU AU2014389571A patent/AU2014389571B2/en active Active
- 2014-07-02 CA CA2915646A patent/CA2915646C/en active Active
- 2014-07-02 ES ES14882801.5T patent/ES2639500T3/es active Active
- 2014-07-02 EP EP14882801.5A patent/EP3022648B8/en active Active
- 2014-07-02 CN CN201480040376.3A patent/CN105393229B/zh active Active
- 2014-07-02 WO PCT/RO2014/000018 patent/WO2015152747A2/en active Application Filing
- 2014-07-02 RU RU2016104469A patent/RU2659472C2/ru active
- 2014-07-02 KR KR1020167000715A patent/KR101955189B1/ko active IP Right Grant
-
2015
- 2015-12-15 IL IL24312215A patent/IL243122B/en active IP Right Grant
-
2016
- 2016-04-22 HK HK16104630.0A patent/HK1216679A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129531A (zh) * | 2011-03-22 | 2011-07-20 | 北京工业大学 | 一种基于Xen的主动防御方法 |
CN102736969A (zh) * | 2012-05-22 | 2012-10-17 | 中国科学院计算技术研究所 | 一种针对硬件虚拟化的内存监控方法和系统 |
Non-Patent Citations (1)
Title |
---|
"Detecting past and present intrusions through vulnerability-specific predicates";JOSHI,Ashlesha 等;《Proceedings of the twentieth ACM symposium on Operating systems principles》;20051026;91-104 * |
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 |
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 |
JP6411494B2 (ja) | 2018-10-24 |
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 |
---|---|---|
CN105393229B (zh) | 虚拟机中的页面错误注入 | |
CN105393255B (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
US10635479B2 (en) | Event filtering for virtual machine security applications | |
US8954959B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU | |
CN106575237A (zh) | 用于在退出虚拟机器后暴露当前处理器指令的结果的系统及方法 | |
US20160210069A1 (en) | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine | |
WO2017112248A1 (en) | Trusted launch of secure enclaves in virtualized environments | |
US10664304B2 (en) | Application memory protection using an extended page table switching virtual machine function | |
Ding et al. | HyperVerify: A VM-assisted architecture for monitoring hypervisor non-control data | |
US20160048458A1 (en) | Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System | |
US20150379265A1 (en) | Systems And Methods For Preventing Code Injection In Virtualized Environments | |
Allievi et al. | Windows Internals, Part 2 | |
Guerra et al. | ITZ: an introspection library for ARM TrustZone | |
Luţaş et al. | Secure Virtual Machine for Real Time Forensic Tools on Commodity Workstations | |
李寧 | A Local-Memory-Based Extensible Secure Architecture for Embedded Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1216679 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |