CN109074321A - 用于保护虚拟计算实例的存储页的技术 - Google Patents
用于保护虚拟计算实例的存储页的技术 Download PDFInfo
- Publication number
- CN109074321A CN109074321A CN201780023202.XA CN201780023202A CN109074321A CN 109074321 A CN109074321 A CN 109074321A CN 201780023202 A CN201780023202 A CN 201780023202A CN 109074321 A CN109074321 A CN 109074321A
- Authority
- CN
- China
- Prior art keywords
- memory page
- virtual computing
- computing example
- request
- component
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 155
- 238000005516 engineering process Methods 0.000 title description 6
- 238000000034 method Methods 0.000 claims description 65
- 230000009471 action Effects 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 9
- 238000007689 inspection Methods 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 2
- 230000004224 protection Effects 0.000 abstract description 31
- 230000006870 function Effects 0.000 abstract description 16
- 230000007246 mechanism Effects 0.000 abstract description 13
- 238000012544 monitoring process Methods 0.000 description 28
- 238000013507 mapping Methods 0.000 description 22
- 230000004048 modification Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001568 sexual effect Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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
-
- 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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
- 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
提供了保护虚拟机的存储器的完整性的机制。所述机制涉及利用所述虚拟机潜在的超级管理程序的某些功能来监控对所述虚拟机的存储页的写入。客户机完整性驱动器与所述超级管理程序进行通信以请求此功能。提供附加的保护以保护客户机完整性驱动器和相关数据,以及防止恶意软件使用这些机制。这些附加的保护包括升级的执行模式,称为“完整性模式”,只能从指定的入口点进入,以及存储所述客户机完整性驱动器和相关数据的存储页上的保护。
Description
相关申请
本专利申请要求于2016年4月16日提交的、序列号为201641013312的印度专利申请和于2017年2月28日提交的、序列号为15/444,350的美国专利申请的权益,其整体通过引用并入本文中。
背景技术
虚拟机(Virtual machine,VM)系统为访客操作系统(operating system,OS)提供虚拟执行平台,该虚拟执行平台包括被配置为模拟相应的物理硬件子系统的虚拟硬件子系统。被配置为执行访客OS的虚拟执行平台的实例通常被称为虚拟机(VM)。在典型的VM系统中,任意数量的VM可以在单个物理主机(或更简单地,“主机(host)”)上执行。每个VM可以相对于其他VM独立操作,并且可以与其他VM进行通信,例如经由仿真网络接口。通过在其中运行的虚拟化软件(例如,超级管理程序),主机应配置有足够的计算和存储器资源以支持VM。
如在物理机中一样,在VM中实施安全措施以对抗恶意活动,诸如破坏存储器或访问特权信息。在VM中作为客户机驱动器(guest driver)实现的VM完整性工具可用于实时检查VM的内容。这些工具,如第13/430,868号美国申请和第14/550,881号美国申请中所述,这两个申请都通过引用并入本文中,监控VM内的事件,并选择性地将系统事件报告给各种服务设备,诸如配置有防病毒和反恶意软件扫描软件的安全服务设备。
因此,客户机完整性驱动器是VM的安全框架中的关键组件,并且需要屏蔽内核级攻击或恶意程序,诸如根工具箱。可能的根工具箱攻击向量包括尝试卸载驱动器或阻止驱动器加载、篡改磁盘或内存中的驱动器代码或数据,以及篡改驱动器的通信信道。
附图说明
图1是根据实施例的存储器保护系统的框图。
图2是根据实施例的更详细地示出图1的方面的框图。
图3是根据实施例的用于初始化客户机完整性驱动器的完整性模式的方法的流程图。
图4是根据实施例的用于进入完整性模式的方法的流程图。
图5是根据实施例的用于执行受保护的超级调用的方法的流程图。
图6是根据实施例的用于执行超级调用以启动或停止对存储页的监控的方法的流程图。
图7是根据实施例的用于响应于在受监控的存储页上发生的写入而执行动作的方法的流程图。
为了便于理解,在可能的情况下,使用相同的附图标记来表示附图中共有的相同元件。可以预期的是,在一个实施例中公开的元件可以有利地用于其他实施例而无需具体叙述。
详细描述
根据一个或更多实施例,提供了用于保护特殊驱动器的机制,本文之后称为客户机完整性(“guest integrity,GI”)驱动器,其在虚拟机中执行。GI驱动器执行某些操作以保护虚拟机(也称为“客户机(guest)”)的完整性。更具体地,GI驱动器在客户机中实现,以定义要保护的VM的存储页。这种保护涉及GI驱动器请求超级管理程序监控这些页并且还请求在写入这些页时被通知。由于GI驱动器的重要性,应该保护GI驱动器的完整性。为了保护GI驱动器的完整性,GI驱动器以特权模式执行,称为“完整性模式”。从GI驱动器到超级管理程序(hypervisor)的对保护客户机的请求只能以完整性模式执行。完整性模式防止恶意代码伪装成GI驱动器并通过例如更改由超级管理程序监控的存储页来干扰客户机保护机制。
完整性模式只能从预先指定的“入口点”进入,在各种实施例中,入口点包括特定指令指针地址或指令指针地址和虚拟中央处理单元(virtual central processing unit,vCPU)标识符的组合。为了使入口点本身可信,GI驱动器在访客操作系统启动过程的早期提供该入口点的指示。一些操作系统(诸如Microsoft Windows)在启动过程的早期提供了执行安全软件的时间窗口。通过在启动过程的早期提供此窗口,操作系统提供了一定程度的确定性,即没有恶意软件篡改操作系统或GI驱动器。此外,在此期间执行的软件需要由操作系统开发人员进行认证,从而确保这样的软件不是恶意软件。因此,在此早期阶段定义完整性模式的入口点提供了一些确定性,即没有恶意软件以某种方式干扰进入完整性模式的机制,诸如通过“劫持(hijacking)”用于设置入口点的机制。
本文还提供了用于保护GI驱动器的完整性的其他技术。例如,GI驱动器请求存储有GUI驱动器本身的指令和数据的存储页的保护。因此,如果恶意软件篡改GI驱动器代码或数据,则GI驱动器将从超级管理程序接收通知。下面提供了附加的保护。
图1是根据实施例的实现客户机完整性平台的主机102的框图。主机102包括硬件计算平台,并且可以是台式计算机、膝上型计算机、平板计算机、诸如智能电话的移动设备或服务器级计算机。硬件计算平台可以基于众所周知的x86架构平台(或其他可用平台)的不同变型。主机102被配置为执行虚拟化软件110,虚拟化软件110为一个或更多虚拟化执行环境提供执行支持,其示例包括访客虚拟机(VM)120。
每个VM 120可以由虚拟化软件110指派一个或更多虚拟中央处理单元(“virtualcentral processing units,vCPU”)。VCPU是物理CPU的虚拟版本,并允许VM 120作为多CPU机。访客OS 106将每个vCPU视为单个物理CPU核心,其可以将不同的任务指派给不同的vCPU。被配置为在多个物理CPU上执行的软件(例如,客户机应用104)可以在虚拟化环境中的多个vCPU上执行。
每个VM 120在独立的环境中执行,并且虚拟化软件110在更特权的环境中执行以支持VM 120的活动。虚拟化软件110可以被实现为包括具有用于管理主机102的硬件子系统140的硬件驱动器的内核。在一个实施例中,虚拟化软件110包括被配置为向VM 120提供系统服务的主机操作系统。在其他实施例中,虚拟化软件110包括被配置为向VM 120提供系统服务的超级管理程序。硬件子系统140包括计算资源,计算资源包括一个或更多处理单元(例如,CPU 142)、系统存储器144(这里称为“主机物理存储器”,图2中的202)、大容量存储器(例如,非易失性存储器146)、网络接口147、输入/输出设备148,其包括例如键盘、显示器等。
如图所示,虚拟化软件110包括虚拟机监视器(virtual machine monitor,VMM)112,其在虚拟化软件110的特权环境中操作并为他们各自的VM提供虚拟系统支持,诸如仿真物理设备(例如,虚拟CPU和虚拟系统存储器)。在替代性实施例中,可以存在用于多个VM的一个VMM。
每个VM 120被配置为执行访客操作系统(OS)106,其可以是商用操作系统,诸如Microsoft 操作系统或操作系统。每个VM 120进一步被配置为支持客户机应用(app)104,并且包括下面详细描述的客户机完整性(GI)驱动器108,其与虚拟化软件110协作,以提供用于定义要保护的VM的哪些存储页并检测对受保护的页的写入的功能。每个VM 120还包括共享存储器121,其存储用于GI驱动器108和GI扩展114的操作的数据。共享存储器121被认为是共享的,因为尽管被配置为访客存储器,但是共享存储器121也由VMM 112访问。
保护数据122包括标识GI驱动器108已请求GI扩展114监控的页的数据,并定义在写入每个这样的页时要采取的动作。这种动作在本文中称为“警报动作”。通知缓冲器124包括来自GI扩展114的通知,用于通知客户机完整性驱动程序108已发生违规事件,诸如对特定受保护的存储页的写入。通知缓冲器124可以实现为环形缓冲器。
安全管理器130从GI扩展114接收关于与受保护的页相关的事件(诸如写入)的消息。安全管理器130可以被实现为虚拟机或物理计算机系统,其包括被配置为执行本文描述的功能的计算组件,诸如处理器、存储器、非易失性存储器、联网组件等。
在不脱离本发明的功能或精神或范围的情况下,可以不同地引用用于描述图1中的虚拟化组件的各种术语、层和分类。可以使用的VMM 112的一个示例是作为VMware的产品的组件包括的超级管理程序,其可以从加利福尼亚州帕洛阿尔托的VMware公司商购获得。
图2是示出根据实施例的由与GI扩展114协作工作的GI驱动器108保护的VM的受保护的存储页232的框图。图2还通过示出与VM的操作相关联的、以及与支持VM的虚拟机管理器112的操作相关联的各种软件模块和数据结构的位置来示出那些受保护的存储页的环境。
受保护的存储页232包括GI驱动器108。因此,存储包括GI驱动器108的指令的页被认为是“受保护的”。这些页受到保护,以便在恶意代码试图篡改包括GI驱动器108的指令时,GI扩展114将执行适当的警报动作。恶意代码可能以各种方式尝试篡改GI驱动器108,包括修改GI驱动程序108以使GI驱动器108向GI扩展114请求受保护的某些存储页不再受到保护。
受保护的存储页232还包括共享存储器121的页,其包括指定保护数据122的页和通知缓冲器124的页。保护数据122的页包含指定受保护的存储页的信息,以及“警报信息”,“警报信息”定义了当前的一组警报动作。警报动作在保护数据122中被指定为在违规情况下可以采取的零个或更多个预定义动作的选择,诸如对受保护的存储页的写入。在一些实施例中,警报信息可以指定在违规情况下要采取的以下动作中的零个或更多个:挂起(suspend)VM,向安全管理器130发送消息,以及将通知写入通知缓冲器124以供GI驱动器108消耗。在一些实施例中,警报信息还可以指定写入被阻止。通知缓冲器124内的条目是从GI扩展114到GI驱动器108的关于已经发生的违规的消息。
受保护的存储页232还包括受保护的访客OS页224和受保护的客户机应用页226。受保护的访客OS页224包括想要保护的访客OS 106的某些页。受保护的访客OS页224可以包括访客OS 224的某些“关键”存储页,其中某些实体(诸如GI驱动器108的开发者)已经确定对访客OS 106的运行很关键并因此需要保护。类似地,受保护的客户机应用页226包括客户机应用的页,其中某些实体(诸如GI驱动器108的开发者)已经确定对客户机应用104中的一个或更多的运行起关键作用。包括在受保护的访客OS页224和受保护的客户机应用页226内的特定页当然可以根据相关的VM的软件配置而变化。
保护数据122可以指定以下警报动作的任何组合,包括响应于受保护的页被写入而不采取的、要采取的警报动作:将通知(本文也称为“违规事件”)发布到通知缓冲器124,指示页已被写入,向安全管理器130发送预定义消息,以及挂起其页已被写入的VM。在一些实施例中,保护数据122还可以指定写入被阻止。要发送到安全管理器130的预定义消息可以存储在保护数据122中。
为了将受保护的页232与VM和VMM 112的非受保护的页进行对比,在主机物理存储器202内示出了各种元素,包括受保护的页232内的元素和其他未受保护的元素。为了提供对存储在主机物理存储器202中的各种元素的逻辑关系的理解,现在提供由主机102实现的存储器寻址方案的描述。
主机102实现第二级地址转换方案,其是主机硬件(例如,处理器和存储器管理单元(“MMU”))知道定义访客虚拟和访客物理存储器之间的映射以及访客物理存储器和主机物理存储器之间的映射的两级页表的方案。访客OS 106维护客户机页表(“guest pagetable,gPT”)210内的访客虚拟到访客物理映射(“gV→gP映射”)。如在物理计算机系统中,在实施例中的每个进程提供客户机页表。第二种类型的映射,标记为gP→hP映射,是从访客物理存储器空间到主机物理存储器空间的映射。gP→hP映射由VMM 112管理,并且在嵌套页表222(nested page table,NPT)(也称为“扩展页表”)中编码。通常,每个VM提供一组嵌套页表。
主机物理存储器202被分成访客存储器空间205和虚拟化软件空间204。访客存储器空间205包括指派给VM 120的存储器,并且被分成用户空间200和内核空间201。用户空间200包括由访客OS 106呈现给诸如客户机应用104的软件的存储器空间。用户空间200由客户机应用104经由访客虚拟存储器地址寻址。内核空间201包括分配给访客OS 106的存储器空间,并存储各种元素(诸如GI驱动器108、gPT 210、其他内核进程212(即,除GI驱动器108之外的内核进程)和保护数据122)。客户机应用104通常经由访客虚拟存储器地址访问存储器,而访客OS 106具有“查看”访客虚拟存储器地址和访客物理存储器地址的能力。虚拟化软件空间204包括主机物理存储器202的部分,其位于访客存储器空间205之外并且被分配以供虚拟化软件110使用。VMM 112具有“查看”主机物理存储器地址和访客物理存储器地址的能力。
主机物理存储器202的未在图2中示出的其他部分可以是空闲的或用于映射在主机102中运行的其他VM或进程所需的主机物理存储器。应该认识到的是,描绘各种存储器空间的框和元素仅用于说明的目的,并且这些框可以是任何尺寸的,并且在主机物理存储器空间中不需要是连续的。
在内核空间201中的元素中,所有GI驱动器108和所有共享存储器121都被包括在受保护页232内。标记为“其他内核进程212”的框包括所有软件,除了GI驱动器108和共享存储器121之外,其还包括访客OS 106。只有访客OS 106中由GI驱动器108明确要求保护的部分受到保护。因此,其他内核进程212包括一些受保护的存储页,其被示为受保护的访客OS页224,以及一些未受保护的存储页。客户机页表210可以包括受保护的一些映射。为了保护客户机页表210中的映射,GI驱动器108请求VMM 112保护特定映射。VMM 112存储受保护映射的指示,并且在各个时间点检查存储的指示与当前映射的关系,以确定映射是否已经改变。类似地,客户机应用104的一些存储页受到保护。这些存储页被指示为受保护的客户机应用页226。客户机应用104还包括一些未受保护的存储页,并因此不包括在受保护页232内。虚拟化软件空间204内的存储器对于在访客存储器空间205内执行的软件是不可访问的,因此,根据实施例,在虚拟化软件空间204内没有页受到保护。
为了防止恶意代码劫持用于请求保护存储页的机制,如果从本文称为“完整性模式”的升级的特权模式执行,则保护存储页的请求将仅由GI扩展114执行。只有GI驱动器108可以进入完整性模式。为了防止恶意代码进入完整性模式,GI驱动器108通过指定完整性模式入口点来初始化完整性模式。只能经由从预先指定的入口点执行的特定请求来输入完整性模式。
图3是根据实施例的用于初始化客户机完整性驱动器的完整性模式的方法300的流程图。尽管关于图1和图2的系统进行了描述,但是本领域技术人员将认识到的是,以各种替代的技术上可行的顺序执行方法300的步骤的任何系统都落入本公开的范围内。
如图所示,方法300开始于步骤302,其中访客OS 106开始GI驱动器108的早期加载部分。GI驱动器108的早期加载部分在由访客OS 106出于安全目的具体提供的启动过程期间的一段时间内执行。例如,Microsoft Windows操作系统提供早期启动的反恶意软件机制,其在操作系统启动期间的早期时间加载某些特定驱动器。这些驱动器执行的早期时间提供了一定程度的防篡改保护,因为其他软件(诸如恶意代码)还没有机会执行。附加地,在一些实施例中,GI驱动器108的早期加载部分由访客OS 106的开发者预先认证,使得访客OS106将GI驱动器108的早期加载部分识别为“安全”并且不包括恶意代码。
在步骤304中,GI驱动器108的早期加载部分调用超级调用以设置用于进入完整性模式的入口点。超级调用是从虚拟机到VMM 112的请求,要求执行特定功能。在步骤306中,VMM 112中的GI扩展114响应超级调用启用(invocation)并确定尚未设置用于进入完整性模式的入口点。虽然GI驱动器108的早期加载部分没有以完整性模式执行,但是GI驱动器108的早期加载部分可以被信任,因为它已被认证,以及由OS 106保证在早期启动期间用于执行代码的安全性保证。另一方面,如果GI驱动器108需要在早期启动时间段之后的某个时间改变完整性模式的入口点,则GI驱动器108必须首先进入完整性模式。在最初设置入口点之后,需要完整性模式来更改入口点,以防止恶意代码通过将入口点更改为恶意代码可访问的地址来“劫持”进入完整性模式的能力。
在308中,VMM 112中的GI扩展114设置超级调用的入口点以进入完整性模式。入口点包括指令指针地址,并且在一些实施例中,还可以包括特定的虚拟CPU(“vCPU”)标识。在入口点中包括vCPU标识为入口点提供了进一步的特异性,其进一步提供了只有GI驱动器108能够进入完整性模式的保证。在设置该入口点之后,GI扩展114将忽略超级调用以进入完整性模式,除非这些超级调用是从入口点指定的指令地址以及由实施例中的入口点指定的vCPU进行的,其中入口点指定特定的vCPU。
在初始化完整性模式并设置入口点的情况下,GI驱动器108能够通过调用适当的超级调用来进入完整性模式。图4是根据实施例的用于进入完整性模式的方法400的流程图。尽管关于图1和图2的系统进行了描述,但是本领域技术人员将认识到的是,以各种替代的技术上可行的顺序执行方法400的步骤的任何系统都落入本公开的范围内。
如图所示,方法400开始于步骤402,其中GI扩展114检测超级调用以进入完整性模式。该超级调用旨在由GI驱动器108调用以允许GI驱动器108正在其上执行的VM和vCPU进入完整性模式,并且在正常操作中,GI驱动器108调用该超级调用以进入完整性模式,使得GI驱动器108可以执行与监控对存储页的写入相关的其他功能。如上所述,仅存在用于进入完整性模式的单个入口点。因为假设该入口点在GI驱动器108内,所以只有GI驱动器108能够进入完整性模式。
在步骤404中,GI扩展114检测是否从已经注册的入口点进行对完整性模式的超级调用。如果从这样的入口点进行超级调用,则方法400进行到步骤408,并且如果不从这样的入口点进行超级调用,则方法400进行到步骤406。
在步骤406中,因为超级调用不是从入口点进行的,所以GI扩展114不允许VM(或者如果入口点指定vCPU,则为vCPU)从中进行超级调用以进入完整性模式。恶意软件可能会尝试进入完整性模式,并且可以尝试执行超级调用来执行此操作。确定是否从入口点进行超级调用以进入完整性模式,允许GI扩展114防止这种恶意软件进入完整性模式。在步骤406中,GI扩展114还执行与尝试从除预先指定的入口点之外的位置进入完整性模式相关联的警报动作。警报动作可以由以完整性模式执行并调用下面描述的“设置警报表和全局警报”超级调用的VM来定义。在步骤406之后,方法400结束。
在步骤408中,因为超级调用是从入口点进行的,所以GI扩展114允许从中进行超级调用的VM(或vCPU)进入完整性模式。在一些实施例中,GI扩展114维持特定VM或vCPU当前是否处于完整性模式的指示。该指示可以存储在虚拟化软件空间204中。如下所述,在完整性模式中,可以执行各种“受保护的”超级调用以配置GI扩展114。
成功调用进入完整性模式超级调用自动禁用vCPU上的中断,并在禁止对GI驱动器108的中断之前返回中断标志(interrupt flag,IF)的值,使得先前的中断状态可以被恢复。在进入完整性模式之后,GI驱动器108切换堆栈并禁用vCPU上的线程重新调度,以防止线程切换,同时完整性模式被启用。禁用中断和禁用线程重新调度会阻止访客OS 106抢占GI驱动器108,其可能允许另一个线程以完整性模式执行。在禁用线程重新调度之后,GI驱动器108恢复保存的中断标志并继续其他超级调用,以从GI扩展114访问客户机完整性服务。进入完整性模式超级调用不要求VM已经在以完整性模式执行。
存在用于退出完整性模式的单独超级调用。此超级调用必须从完整性模式调用。从完整性模式之外调用退出完整性模式超级调用的尝试将失败,并使GI扩展114执行与要求不在完整性模式内调用完整性模式的超级调用相关联的预定义警报动作。一旦调用该超级调用,以完整性模式执行的vCPU不再以完整性模式执行,并且需要以完整性模式执行的超级调用可能不再执行,直到GI驱动器108接下来进入完整性模式。
一旦进入完整性模式,GI驱动器108可以成功地调用各种“受保护的”超级调用,用于监控对特定存储页的写入或用于保护GI驱动器108本身。防止这些超级调用在完整性模式之外执行,以防止在VM内执行的恶意代码修改、冒充或以其他方式篡改由GI驱动器108提供的功能。这种受保护的超级调用的一些示例包括“写入-监视超级调用(write-watchhypercall)”(其请求GI扩展114监控对特定存储页的写入)、“后门消息超级调用(backdoormessage hypercall)”(其请求GI扩展114经由安全“后门”信道向安全管理器130发送消息)、“gPT监视超级调用”(其请求GI扩展114监控访客物理到gPT 210内的访客虚拟映射)、“警报定义超级调用”(其请求GI扩展114定义在发生某些违规事件时要执行的警报动作),以及用于初始化或者配置GI驱动器108或GI扩展114的其他超级调用。这些受保护的超级调用在下面进一步详细讨论。
图5是根据实施例的用于执行“受保护的”超级调用的方法500的流程图。尽管关于图1和图2的系统进行了描述,但是本领域技术人员将认识到的是,以各种替代的技术上可行的顺序执行方法500的步骤的任何系统都落入本公开的范围内。
在步骤502中,GI扩展114检测受保护的超级调用的调用。如上所述,以完整性模式执行时,各种受保护的超级调用可以由GI驱动器108调用。这些受保护的超级调用提供通常与请求GI扩展114监控VM的存储页相关联的功能。在超级调用无法在完整性模式之外执行的意义上,这些超级调用是“受保护的”。
在步骤504中,GI扩展114检测在步骤502中调用受保护的超级调用的VM或vCPU是否以完整性模式执行。如果VM或vCPU以完整性模式执行,则方法500进行到步骤508,并且如果VM或vCPU未以完整性模式执行,则方法500进行到步骤506。
在步骤506中,GI扩展114不执行超级调用并执行警报动作(诸如向安全管理器发送消息、通知GI驱动器108尝试在完整性模式之外执行受保护的超级调用,或者挂起从中调用受保护的超级调用的VM)。要执行的警报动作可以是全局警报动作,由用于定义警报的超级调用定义,如下所述。因为超级调用不是从完整性模式进行的,所以GI扩展114确定执行超级调用将不是“安全的”,因为该超级调用可能已被恶意代码调用。在步骤506之后,方法500结束。
在步骤504中,如果调用超级调用的VM或vCPU以完整性模式执行,则方法500进行到步骤508而不是步骤506。在步骤508中,GI扩展114执行超级调用,因为超级调用从完整性模式内被调用。GI扩展114认为这种受保护的超级调用的执行是“安全的”,因为只有GI驱动器108而不是恶意软件能够进入完整性模式。
如上所述,由完整性模式机制保护的一种类型的超级调用是请求GI扩展114开始或停止监控对特定存储页的写入的超级调用。该超级调用受到保护,使得恶意代码不能改变哪些存储页由GI扩展114监控。
图6是根据实施例的用于执行超级调用以启动或停止对存储页的监控的方法600的流程图。尽管参考图1和图2的系统进行了描述,但是本领域技术人员将认识到的是,以各种替代技术上可行的顺序执行方法600的步骤的任何系统都落入本公开的范围内。
GI驱动器108执行方法600以监控特定于GI驱动器108本身的存储页,包括存储GI驱动器108本身的页,以及存储保护数据122的页。如果恶意代码篡改GI驱动器108本身,则保护这些页允许执行指定的警报动作。GI驱动器108还执行方法600以保护其他页,诸如存储一些访客OS 106和/或客户机应用104的页。
在步骤602中,GI扩展114检测请求对VM 120的一个或更多存储页进行写监控的超级调用。该超级调用在本文中可以称为“写入-监视超级调用(write-watch hypercall)”。写入-监视超级调用可以请求开始或结束这样的监控。在一些实施例中,写入-监控超级调用通过客户机物理页码指定要监视或停止监视的页。写入-监视超级调用还指定在检测到对被监控页的写入时要采取的特定动作(也称为“警报”)。在一些实施例中,基于每个客户机物理页(per-guest-physical-page)指定这些动作。因此,可以为不同的客户机物理页指定不同的警报动作。在一些实施例中,代替写入-监视超级调用,可以使用读取-监视超级调用或简单地访问-监视超级调用。读取-监视超级调用请求对特定页的读取被监视,并且访问-监视超级调用请求监控视任一类型的访问(读取、写入或执行)。
在步骤604中,GI扩展114确定进行超级调用的VM 120是否以完整性模式执行。如果进行超级调用的VM 120以完整性模式执行,则方法600进行到步骤608,并且如果进行超级调用的VM 120没有以完整性模式执行,则方法600进行到步骤606。在步骤606中,GI扩展114不执行超级调用,而是执行在保护数据122中指定的全局警报动作,因为超级调用不是从完整性模式进行的。在步骤606之后,方法600结束。
在步骤608中,因为GI扩展114确定超级调用是从完整性模式进行的,所以GI扩展114执行超级调用以开始或停止监控对存储页的写入。对于请求GI扩展114开始监控特定存储页的超级调用,GI扩展114在保护数据122中添加新条目,该新条目指示要保护的新存储页以及在确定写入该存储页已经发生时将执行什么警报动作。GI扩展114还向平台跟踪服务注册存储页,该平台跟踪服务在VMM 112内执行,并提供实际的存储器跟踪服务。对于请求GI扩展114停止监控特定存储页的超级调用,GI扩展114移除保护数据122内的条目,该条目对应于要停止监控的存储页。GI扩展114还使用平台跟踪服务取消注册存储页以停止监控对存储页的写入。参考图7更详细地描述了当检测到对受保护的存储页的写入时所采取的动作。
图7是根据实施例的用于响应于在受监控的存储页上发生的写入而执行动作的方法700的流程图。尽管关于图1和图2的系统进行了描述,但是本领域技术人员将认识到的是,以各种替代技术上可行的顺序执行方法700的步骤的任何系统都落入本公开的范围内。
如图所示,方法700开始于步骤702,其中GI扩展114从平台跟踪服务接收对已发生对受监控的存储页的写入的通知。更具体地,在检测到对存储页的写入时,平台跟踪服务通知GI扩展114发生这样的写入。在一些实施例中,在写入实际发生之后,平台跟踪服务向GI扩展114提供的通知被延迟一些提供。在一些实施例中,平台跟踪服务不会阻止写入发生,而是检测这样的写入。在其他实施例中,平台跟踪服务确实防止写入发生。
存在各种机制,通过这些机制,平台跟踪服务可以检测对存储页的写入。在一个示例中,主机102的处理器可以提供用于检测对注册到平台跟踪服务的存储页的写入的功能,并且可以在检测到对已注册的存储页的写入时通知平台跟踪服务。平台跟踪服务简单地向处理器注册一个或更多存储页以便触发这种功能。在另一示例中,平台跟踪服务在嵌套页表222中的受保护的页的页表项中或在使用阴影页表来代替嵌套页表222的实施例中的阴影页表中的设置位(下文中称为“保护位”)。在一些实施例中,当发生对受保护存储页的访问时,触发故障处理程序。包括在平台跟踪服务内的故障处理程序执行诸如通知GI扩展114发生写入等步骤。在一些实施例中,这种通知在受保护的访问发生之后以一定量的延迟发生。当GI扩展114接收在设置了保护位的页上发生写入的通知时,执行图7的剩余步骤以执行针对该受保护的页的预定义“警报”。以类似的方式,可以设置受保护的页的页表条目中的不同(或相同位)以跟踪对该页的读取访问和执行访问。尽管已经描述了可以实现跟踪功能的方式的某些示例,但是本领域技术人员将认识到的是可以替代地使用其他实现。
在步骤704中,GI扩展114检查保护数据122以确定响应于正被写入的存储页而要执行的一个或更多警报动作。保护数据122基于每页存储这种警报动作的指示,因此GI扩展114确定要对写入的特定存储页执行的警报动作。
在步骤706中,GI扩展114确定警报动作是否包括向GI驱动器108发送通知。如果警报动作包括向GI驱动器108发送通知,则方法700进行到步骤708,并且如果警报动作不包括向GI驱动器108发送通知,则方法前进到步骤710。在步骤708中,GI扩展114生成通知条目并将通知条目存储在通知缓冲器124中以供GI驱动器108消耗。在步骤708之后,方法700进行到步骤710。
在步骤710中,GI扩展114确定警报动作是否包括挂起VM。如果警报动作包括挂起VM,则方法700进行到步骤712,并且如果警报动作不包括挂起VM,则方法700进行到步骤714。在步骤712中,GI扩展114挂起指定的VM。在步骤712之后,方法700进行到步骤714。
在步骤714中,GI扩展114确定警报动作是否包括向安全管理器130发送消息。如果警报动作包括发送这样的消息,则方法700进行到步骤716,并且如果警报动作不包括发送这样的消息,则方法700进行到步骤718。在步骤716中,GI扩展114向安全管理器130发送消息。在步骤716之后,方法进行到步骤718。在步骤718中,方法700结束。尽管已经描述了一些示例警报动作,但是其他警报动作也是可能的。在一个示例中,一个警报动作包括阻止写入。
在操作期间,GI驱动器108可能需要将通知传送(communicate)到安全管理器130。然而,在访客OS 106的网络驱动器被破解(compromised)的情况下,GI驱动器108可能无法使用该“标准”机制与安全管理器130进行通信。因此,提供“后门”机制以允许GI驱动器108直接与安全管理器通信。
该后门机制体现为GI驱动器108仅在以完整性模式执行时调用并且由GI扩展114处理的超级调用。在检测到该后门消息超级调用被调用时,GI扩展114确定超级调用是否从完整性模式内进行。如果超级调用不是从完整性模式内进行,则GI扩展114不执行超级调用。GI扩展114检查保护数据122以确定什么警报动作与尝试在完整性模式之外执行受保护的超级调用相关联并执行该警报动作。
如果后门消息超级调用以完整性模式进行,则GI扩展114执行该超级调用。超级调用指定访客存储器空间205内存在消息的地址。GI扩展114读取存储在该地址的消息,并将该消息发送到安全管理器130(图1)。GI扩展114可以利用主机102的网络资源来将消息发送到安全管理器130。
除了请求监视特定物理页之外,GI驱动器108还可以调用超级调用以开始监视或停止监视gPT 210内的特定访客虚拟到访客物理的映射。监视这些映射的目的是通过简单地修改gPT 210中的映射来防止绕过本文所述的存储页保护。
用于监视gPT 210映射的超级调用仅可以完整性模式执行。这种超级调用包括要监视的一个或更多映射的标识作为参数。GI扩展114在每次进入完整性模式时检测对受监视的映射的修改。当GI驱动器108执行特别请求GI扩展114以检测是否已经发生对受监视的映射的修改的超级调用时,GI扩展114还可以检测对受监视的映射的修改。必须以完整性模式调用此附加超级调用。当GI扩展114接收超级调用以监视一个或更多gPT映射时,GI扩展114记录一个或更多gPT映射。随后,当进入完整性模式或者调用特定的超级调用以检查映射时,GI扩展114检查记录的映射与实际存储在客户机页表中的映射,并且如果GI扩展114确定映射已更改,则执行在保护数据122中指定的警报动作。
存在用于向GI扩展114识别保护数据122中的哪个存储器位置将用于警报表,以及用于在该警报表中定义警报动作的附加超级调用。这些超级调用必须以完整性模式执行。定义警报动作涉及定义全局警报动作以及在警报表中为非全局事件定义条目。全局警报动作定义GI扩展114响应于发生的特定“全局”事件而采取的特定警报动作。全局警报动作存储在保护数据122中。全局事件包括检测从完整性模式之外进行的超级调用,尝试从正确设置的入口点以外的点进入完整性模式,以及可以被认为是“错误”的其他事件。非全局事件被存储为保护数据122内的警报表中的条目,其将特定的受监视的存储页与检测到对那些页的写入时要采取的特定警报动作相关联。可以采取的动作包括将通知写入通知缓冲器124、向安全管理器130发送消息,或者挂起VM。
还存在超级调用以初始化保护数据122并初始化通知缓冲器124。这些超级调用通知GI扩展114访客存储器空间205中的哪些页存储保护数据122和通知缓冲器124。在一些实施例中,这些超级调用使GI扩展114开始写入-监视存储保护数据122和通知缓冲器124的存储页(因此GI驱动器108不需要单独地请求对这些存储页的写入监视)。这些超级调用只能从完整性模式被调用。还存在用于通知GI扩展114已经消耗了通知缓冲器124中的条目的超级调用。该超级调用必须以完整性模式执行。因为通知缓冲器124在访客存储器空间205中,所以GI驱动器108可以直接访问通知缓冲器124。
如上所述的某些实施例涉及主机顶部的硬件抽象层。硬件抽象层允许多个环境或虚拟计算实例共享硬件资源。在一个实施例中,这些虚拟计算实例彼此隔离,每个虚拟计算实例至少具有在其中运行的用户应用程序。因此,硬件抽象层提供了虚拟计算实例之间的资源隔离和分配的益处。在前述实施例中,虚拟机用作虚拟计算实例和超级管理程序的示例,作为硬件抽象层的示例。如上所述,每个虚拟机包括访客操作系统,在其中运行至少一个应用程序。应当注意的是,这些实施例还可以应用于虚拟计算实例的其他示例,诸如不包括访客操作系统的容器,本文称为“无OS容器(OS-less container)”(参见例如www.docker.com)。无OS容器实现操作系统级虚拟化,其中在主机上的操作系统的内核顶部提供抽象层。抽象层支持多个无OS容器,每个无OS容器包括应用程序及其依赖项。每个无OS容器在主机操作系统的用户空间中作为独立进程运行,并与其他容器共享内核。无OS容器依赖于内核的功能来利用资源隔离(CPU、存储器、区块I/O、网络等)和单独的命名空间,并完全隔离操作环境的应用程序视图。通过使用无OS容器,可以隔离资源、限制服务,并供应进程以使操作系统的私有视图具有其自己的进程ID空间、文件系统结构和网络接口。多个容器可以共享相同的内核,但每个容器可以被限制为仅使用定义数量的资源,诸如CPU、存储器和I/O。
本文描述的各种实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。例如,这些操作可能需要物理量的物理操纵-通常,虽然不一定,这些量可以采取电信号或磁信号的形式,其中它们或它们的表示能够被存储、传输、组合、比较或者以其他方式被操纵。此外,这种操纵通常用术语来表示,诸如产生、识别、确定或比较。本文描述的形成本发明的一个或更多实施例的部分的任何操作可以是有用的机器操作。此外,本发明的一个或更多实施例还涉及用于执行这些操作的设备或装置。装置可以为特定的目的而专门构造,或者它可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。具体地,各种通用机器可以与根据本文的教导写入的计算机程序一起使用,或者可以更方便地构造更专用的装置以执行所需的操作。
本文描述的各种实施例可以用其他计算机系统配置来实践,包括手持设备、微处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等。
本发明的一个或更多实施例可以实现为一个或更多计算机程序或体现为一个或更多计算机可读介质中的一个或更多计算机程序模块。术语计算机可读介质是指可以存储其后可以输入到计算机系统的数据的任何数据存储设备-计算机可读介质可以基于任何现有的或随后开发的技术,用于以能够使它们被计算机读取的方式体现计算机程序。计算机可读介质的示例包括硬盘驱动器、网络附接存储器(network attached storage,NAS)、只读存储器、随机存取存储器(例如,闪存设备)、CD(压缩盘)--CD-ROM、CD-R或CD-RW、DVD(数字多功能盘)、磁带和其他光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,使得计算机可读代码以分布式方式存储和执行。
尽管为了清楚理解已经在一些细节上描述了本发明的一个或更多实施例,但显而易见的是,可以在权利要求的范围内进行某些改变和修改。因此,所描述的实施例被认为是说明性的而非限制性的,并且权利要求的范围不限于本文给出的细节,而是可以在权利要求的范围和等同物内进行修改。在权利要求中,除非在权利要求中明确说明,否则元件和/或步骤并不暗示任何特定的操作顺序。
根据各种实施例的虚拟化系统可以被实现为托管(hosted)实施例、非托管实施例或者作为倾向于模糊两者之间的区别的实施例,都是可想象的。进一步,各种虚拟化操作可以全部或部分地以硬件实现。例如,硬件实现可以采用查找表来修改存储访问请求以保护非磁盘数据。
无论虚拟化程度如何,许多变型、修改、添加和改进都是可能的。因此,虚拟化软件可以包括执行虚拟化功能的主机、控制台或访客操作系统的组件。可以为本文描述的作为单个实例的组件、操作或结构提供多个实例。最后,各种组件、操作和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。设想了其他功能分配,并且可以落入本发明的范围内。通常,在示例性配置中作为单独组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为单独的组件。这些和其他变型、修改、添加和改进可以落入所附权利要求的范围内。
Claims (20)
1.一种用于保护在主机内执行的虚拟计算实例的存储器的方法,所述方法包括:
从所述虚拟计算实例内执行的组件接收第一请求,以保护第一存储页;
通过检查所述虚拟计算实例的特权模式,确定所述组件被允许发出所述第一请求;
通过更新跟踪受保护的存储页的数据结构来保护所述第一存储页,从而定义第一受保护的存储页;
检测对所述第一受保护的存储页的写入;
响应于所述检测,识别针对所述第一受保护的存储页的警报动作;以及
执行所述警报动作。
2.根据权利要求1所述的方法,进一步包括:
从所述虚拟计算实例接收第二请求,以从第二存储页移除保护;
通过检查所述虚拟计算实例的所述特权模式,确定所述组件不被允许发出所述第一请求;以及
响应于所述确定,执行警报动作而不是执行所述第二请求。
3.根据权利要求1所述的方法,其中,保护所述第一存储器进一步包括:
使用跟踪服务在所述第一存储页上安装跟踪,其中所述跟踪服务在检测到对所述第一存储页的写入时将通知发送到支持所述虚拟计算实例的执行的抽象层。
4.根据权利要求1所述的方法,其中:
所述第一存储页存储所述组件的指令。
5.根据权利要求1所述的方法,其中:
所述第一存储页存储在被指派给所述虚拟计算实例的存储器空间内;以及
所述第一存储页存储以下中的至少一个:
跟踪受保护的存储页的至少一部分数据结构,以及
写入通知以供所述组件检索。
6.根据权利要求1所述的方法,进一步包括:
从跟踪服务接收已写入所述第一存储页的指示;
响应于接收到所述指示,查找与所述存储页相关联的警报动作;以及
执行所述警报动作,
其中,所述警报动作包括以下之一:向所述组件发送已写入所述第一存储页的通知,挂起所述虚拟计算实例,以及向所述虚拟计算实例外部的安全监视器发送消息。
7.根据权利要求1所述的方法,进一步包括:
从所述组件接收第二请求,所述第二请求定义存储在被指派给所述虚拟计算实例的存储器空间中并且将被发送到所述虚拟计算实例外部的安全管理器的消息;
通过检查所述虚拟计算实例的所述特权模式,确定所述组件被允许发出所述第二请求;以及
通过从被指派给所述虚拟计算实例的所述存储器空间读取所述消息并将所述消息发送到所述虚拟计算实例外部的所述安全管理器,来执行所述第二请求。
8.根据权利要求1所述的方法,进一步包括:
从所述组件接收第二请求,以进入所述特权模式;
确定第二请求是从注册的入口点发出的;以及
使所述虚拟计算实例进入所述特权。
9.根据权利要求8所述的方法,进一步包括:
接收第三请求,以注册所述入口点;
确定所述入口点尚未被设置;以及
执行所述第三请求,以设置所述入口点。
10.根据权利要求1所述的方法,其中:
所述警报动作包括以下中的至少一个:
将指示所述第一受保护的存储页被写入的写入通知发送到所述组件,
挂起对所述虚拟计算实例的执行,以及
将指示所述第一受保护的存储页被写入的写入通知发送到所述虚拟计算实例外部的安全管理器。
11.一种用于保护虚拟计算实例的存储器的系统,所述系统包括:
主机;
在所述主机内执行的抽象层;
所述虚拟计算实例,由所述抽象层支持;以及
在所述虚拟计算实例内执行的组件,
其中所述抽象层被配置为:
从所述组件接收第一请求,以保护第一存储页,
通过检查所述组件的特权模式,确定所述组件被允许发出所述第一请求,
通过更新跟踪受保护的存储页的数据结构来保护所述第一存储页,从而定义第一受保护的存储页,
检测对所述第一受保护的存储页的写入,
响应于所述检测,识别针对所述第一受保护的存储页的警报动作,以及
执行所述警报动作。
12.根据权利要求11所述的系统,其中,所述抽象层进一步被配置为:
从所述虚拟计算实例接收第二请求,以从第二存储页移除保护;
通过检查所述虚拟计算实例的所述特权模式,确定所述虚拟计算实例不被允许发出所述第一请求;以及
响应于所述确定,执行警报动作而不是执行所述第二请求。
13.根据权利要求11所述的系统,其中,所述抽象层被配置为通过以下方式保护所述第一存储页:
使用跟踪服务在所述第一存储页上安装跟踪,其中所述跟踪服务在检测到对所述第一存储页的写入时将通知发送到所述抽象层。
14.根据权利要求11所述的系统,其中:
所述第一存储页存储所述组件的指令。
15.根据权利要求11所述的系统,其中:
所述第一存储页存储在被指派给所述虚拟计算实例的存储器空间内;以及
所述第一存储页存储以下中的至少一个:
跟踪受保护的存储页的至少一部分数据结构,以及
写入通知以供所述组件检索。
16.一种存储指令的非暂时性计算机可读介质,所述指令在由处理器执行时使所述处理器执行用于保护在主机内执行的虚拟计算实例的存储器的方法,所述方法包括:
从所述虚拟计算实例内执行的组件接收第一请求,以保护第一存储页;
通过检查所述虚拟计算实例的特权模式,确定所述组件被允许发出所述第一请求;
通过更新跟踪受保护的存储页的数据结构来保护所述第一存储页,从而定义第一受保护的存储页;
检测对所述第一受保护的存储页的写入;
响应于所述检测,识别针对所述第一受保护的存储页的警报动作;以及
执行所述警报动作。
17.根据权利要求16所述的非暂时性计算机可读介质,其中,所述方法进一步包括:
从所述虚拟计算实例接收第二请求,以从第二存储页移除保护;
通过检查所述虚拟计算实例的所述特权模式,确定所述组件不被允许发出所述第一请求;以及
响应于所述确定,执行警报动作而不是执行所述第二请求。
18.根据权利要求16所述的非暂时性计算机可读介质,其中保护所述第一存储器进一步包括:
使用跟踪服务在所述第一存储页上安装跟踪,其中所述跟踪服务在检测到对所述第一存储页的写入时将通知发送到支持所述虚拟计算实例的执行的抽象层。
19.根据权利要求16所述的非暂时性计算机可读介质,其中:
所述第一存储页存储所述组件的指令。
20.根据权利要求16所述的非暂时性计算机可读介质,其中:
所述第一存储页存储在被指派给所述虚拟计算实例的存储器空间内;以及
所述第一存储页存储以下中的至少一个:
跟踪受保护的存储页的至少一部分数据结构,以及
写入通知以供所述组件检索。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201641013312 | 2016-04-16 | ||
IN201641013312 | 2016-04-16 | ||
US15/444,350 | 2017-02-28 | ||
US15/444,350 US11379385B2 (en) | 2016-04-16 | 2017-02-28 | Techniques for protecting memory pages of a virtual computing instance |
PCT/US2017/027462 WO2017180899A1 (en) | 2016-04-16 | 2017-04-13 | Techniques for protecting memory pages of a virtual computing instance |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109074321A true CN109074321A (zh) | 2018-12-21 |
CN109074321B CN109074321B (zh) | 2023-06-30 |
Family
ID=60040099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780023202.XA Active CN109074321B (zh) | 2016-04-16 | 2017-04-13 | 用于保护虚拟计算实例的存储器的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11379385B2 (zh) |
EP (1) | EP3365794B1 (zh) |
CN (1) | CN109074321B (zh) |
WO (1) | WO2017180899A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110135201A (zh) * | 2019-04-28 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 一种基于独立运行环境的网页取证方法及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3726390B1 (en) * | 2018-02-02 | 2024-04-24 | Huawei Technologies Co., Ltd. | Method and device for protecting kernel integrity |
US11222123B2 (en) | 2019-04-22 | 2022-01-11 | Cyberark Software Ltd. | Securing privileged virtualized execution instances from penetrating a virtual host environment |
US10878119B2 (en) * | 2019-04-22 | 2020-12-29 | Cyberark Software Ltd. | Secure and temporary access to sensitive assets by virtual execution instances |
US11842227B2 (en) * | 2019-10-10 | 2023-12-12 | Advanced Micro Devices, Inc. | Hypervisor secure event handling at a processor |
CN111143025B (zh) * | 2019-11-22 | 2023-03-24 | 中国船舶工业系统工程研究院 | 一种针对实时虚拟机实例管理的方法 |
US11726922B2 (en) * | 2020-02-25 | 2023-08-15 | International Business Machines Corporation | Memory protection in hypervisor environments |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070055837A1 (en) * | 2005-09-06 | 2007-03-08 | Intel Corporation | Memory protection within a virtual partition |
US20100333090A1 (en) * | 2009-06-30 | 2010-12-30 | Sun Microsystems, Inc. | Method and apparatus for protecting translated code in a virtual machine |
US20120254995A1 (en) * | 2011-03-31 | 2012-10-04 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
US20150013008A1 (en) * | 2013-07-05 | 2015-01-08 | Bitdefender IPR Management Ltd. | Process Evaluation for Malware Detection in Virtual Machines |
CN104685479A (zh) * | 2012-08-29 | 2015-06-03 | 超威半导体公司 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
CN105190570A (zh) * | 2013-02-22 | 2015-12-23 | 比特梵德知识产权管理有限公司 | 用于虚拟机器的完整性保护的存储器自省引擎 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6053948A (en) | 1995-06-07 | 2000-04-25 | Synopsys, Inc. | Method and apparatus using a memory model |
WO2004046934A2 (en) * | 2002-11-18 | 2004-06-03 | Arm Limited | Secure memory for protecting against malicious programs |
US7111145B1 (en) | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7415472B2 (en) | 2003-05-13 | 2008-08-19 | Cisco Technology, Inc. | Comparison tree data structures of particular use in performing lookup operations |
US9753754B2 (en) | 2004-12-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine |
US7596654B1 (en) | 2006-01-26 | 2009-09-29 | Symantec Operating Corporation | Virtual machine spanning multiple computers |
US20080005447A1 (en) | 2006-06-30 | 2008-01-03 | Sebastian Schoenberg | Dynamic mapping of guest addresses by a virtual machine monitor |
US7739466B2 (en) | 2006-08-11 | 2010-06-15 | Intel Corporation | Method and apparatus for supporting immutable memory |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US8190861B2 (en) * | 2006-12-04 | 2012-05-29 | Texas Instruments Incorporated | Micro-sequence based security model |
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 |
US8032897B2 (en) | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8555081B2 (en) * | 2007-10-30 | 2013-10-08 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
US8176279B2 (en) | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Managing use of storage by multiple pageable guests of a computing environment |
US20100070678A1 (en) | 2008-09-12 | 2010-03-18 | Vmware, Inc. | Saving and Restoring State Information for Virtualized Computer Systems |
US8738932B2 (en) | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US9195487B2 (en) | 2009-05-19 | 2015-11-24 | Vmware, Inc. | Interposition method suitable for hardware-assisted virtual machine |
US8341627B2 (en) | 2009-08-21 | 2012-12-25 | Mcafee, Inc. | Method and system for providing user space address protection from writable memory area in a virtual environment |
US9129106B2 (en) | 2009-11-04 | 2015-09-08 | Georgia Tech Research Corporation | Systems and methods for secure in-VM monitoring |
US8386749B2 (en) | 2010-03-16 | 2013-02-26 | Advanced Micro Devices, Inc. | Address mapping in virtualized processing system |
US8578080B2 (en) | 2011-07-01 | 2013-11-05 | Intel Corporation | Secure handling of interrupted events utilizing a virtual interrupt definition table |
US8726404B2 (en) * | 2011-11-14 | 2014-05-13 | Intel Corporation | Regulating access to and protecting portions of applications of virtual machines |
US9256552B2 (en) * | 2011-11-21 | 2016-02-09 | Cisco Technology, Inc. | Selective access to executable memory |
US9405570B2 (en) | 2011-12-30 | 2016-08-02 | Intel Corporation | Low latency virtual machine page table management |
US9195518B1 (en) | 2012-03-27 | 2015-11-24 | Vmware, Inc. | System and method for communicating production virtual machine access events to a service appliance in a virtualized environment |
US9064030B2 (en) | 2012-11-29 | 2015-06-23 | International Business Machines Corporation | Tree traversal in a memory device |
US9292328B2 (en) | 2013-05-24 | 2016-03-22 | Bromium, Inc. | Management of supervisor mode execution protection (SMEP) by a hypervisor |
US20180074903A1 (en) | 2013-05-30 | 2018-03-15 | International Business Machines Corporation | Processing access requests in a dispersed storage network |
US10324863B2 (en) * | 2013-06-24 | 2019-06-18 | Intel Corporation | Protected memory view for nested page table access by virtual machine guests |
US9117081B2 (en) | 2013-12-20 | 2015-08-25 | Bitdefender IPR Management Ltd. | Strongly isolated malware scanning using secure virtual containers |
US9652631B2 (en) * | 2014-05-05 | 2017-05-16 | Microsoft Technology Licensing, Llc | Secure transport of encrypted virtual machines with continuous owner access |
JP6584823B2 (ja) | 2014-06-20 | 2019-10-02 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US9384142B2 (en) | 2014-09-16 | 2016-07-05 | International Business Machines Corporation | Efficient and consistent para-virtual I/O system |
US10922402B2 (en) | 2014-09-29 | 2021-02-16 | Vmware, Inc. | Securing secret data embedded in code against compromised interrupt and exception handlers |
US10114958B2 (en) | 2015-06-16 | 2018-10-30 | Microsoft Technology Licensing, Llc | Protected regions |
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 |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
US10043005B2 (en) * | 2016-03-31 | 2018-08-07 | Bitdefender IPR Management Ltd. | Systems and methods for application control in virtualized environments |
US10430223B2 (en) | 2016-05-17 | 2019-10-01 | Vmware, Inc. | Selective monitoring of writes to protected memory pages through page table switching |
US10592267B2 (en) | 2016-05-17 | 2020-03-17 | Vmware, Inc. | Tree structure for storing monitored memory page data |
US10120738B2 (en) | 2016-06-24 | 2018-11-06 | Vmware, Inc. | Hypervisor techniques for performing non-faulting reads in virtual machines |
-
2017
- 2017-02-28 US US15/444,350 patent/US11379385B2/en active Active
- 2017-04-13 WO PCT/US2017/027462 patent/WO2017180899A1/en unknown
- 2017-04-13 CN CN201780023202.XA patent/CN109074321B/zh active Active
- 2017-04-13 EP EP17720651.3A patent/EP3365794B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070055837A1 (en) * | 2005-09-06 | 2007-03-08 | Intel Corporation | Memory protection within a virtual partition |
US20100333090A1 (en) * | 2009-06-30 | 2010-12-30 | Sun Microsystems, Inc. | Method and apparatus for protecting translated code in a virtual machine |
US20120254995A1 (en) * | 2011-03-31 | 2012-10-04 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
CN104685479A (zh) * | 2012-08-29 | 2015-06-03 | 超威半导体公司 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
CN105190570A (zh) * | 2013-02-22 | 2015-12-23 | 比特梵德知识产权管理有限公司 | 用于虚拟机器的完整性保护的存储器自省引擎 |
US20150013008A1 (en) * | 2013-07-05 | 2015-01-08 | Bitdefender IPR Management Ltd. | Process Evaluation for Malware Detection in Virtual Machines |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110135201A (zh) * | 2019-04-28 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 一种基于独立运行环境的网页取证方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017180899A1 (en) | 2017-10-19 |
EP3365794A1 (en) | 2018-08-29 |
US11379385B2 (en) | 2022-07-05 |
US20170300430A1 (en) | 2017-10-19 |
EP3365794B1 (en) | 2023-11-08 |
CN109074321B (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074321A (zh) | 用于保护虚拟计算实例的存储页的技术 | |
US11782766B2 (en) | Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features | |
KR101946982B1 (ko) | 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가 | |
US8856473B2 (en) | Computer system protection based on virtualization | |
US20200012787A1 (en) | Method and system for detecting kernel corruption exploits | |
US20140053272A1 (en) | Multilevel Introspection of Nested Virtual Machines | |
US9037873B2 (en) | Method and system for preventing tampering with software agent in a virtual machine | |
CN105393229B (zh) | 虚拟机中的页面错误注入 | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
CN109923546B (zh) | 虚拟机安全性应用程序的事件过滤 | |
KR20180099682A (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
EP2622525A1 (en) | Virtual machines for virus scanning | |
CN107977573A (zh) | 安全的盘访问控制 | |
US10120738B2 (en) | Hypervisor techniques for performing non-faulting reads in virtual machines | |
US9952890B2 (en) | Kernel state data collection in a protected kernel environment | |
US10061918B2 (en) | System, apparatus and method for filtering memory access logging in a processor | |
Ding et al. | HyperVerify: A VM-assisted architecture for monitoring hypervisor non-control data | |
US20180365428A1 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US10430223B2 (en) | Selective monitoring of writes to protected memory pages through page table switching | |
US10592267B2 (en) | Tree structure for storing monitored memory page data | |
Han et al. | Secure and dynamic core and cache partitioning for safe and efficient server consolidation | |
Delgado et al. | EPA-RIMM: A framework for dynamic smm-based runtime integrity measurement | |
Delgado et al. | EPA-RIMM: An Efficient, Performance-Aware Runtime Integrity Measurement Mechanism for Modern Server Platforms | |
Wang et al. | An in-out-VM measurement architecture against dynamic attacks in clouds | |
Zaidenberg et al. | Hypervisor memory introspection and hypervisor based malware honeypot |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |
|
CP03 | Change of name, title or address |