CN106575236A - 用于在退出虚拟机器后暴露当前处理器指令的系统及方法 - Google Patents

用于在退出虚拟机器后暴露当前处理器指令的系统及方法 Download PDF

Info

Publication number
CN106575236A
CN106575236A CN201580042152.0A CN201580042152A CN106575236A CN 106575236 A CN106575236 A CN 106575236A CN 201580042152 A CN201580042152 A CN 201580042152A CN 106575236 A CN106575236 A CN 106575236A
Authority
CN
China
Prior art keywords
guest instruction
instruction
host computer
processor
fault
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.)
Pending
Application number
CN201580042152.0A
Other languages
English (en)
Inventor
山多尔·卢卡奇
安德烈-弗拉德·卢察什
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bit Fan De Intellectual Property Management Co Ltd
Bitdefender IPR Management Ltd
Original Assignee
Bit Fan De Intellectual Property Management Co Ltd
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 Bit Fan De Intellectual Property Management Co Ltd filed Critical Bit Fan De Intellectual Property Management Co Ltd
Publication of CN106575236A publication Critical patent/CN106575236A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

所描述系统及方法使得主机系统当在硬件可视化配置中操作时能够高效地执行计算机安全活动。处理器经配置以当在客户机VM内执行的软件执行存储器存取违例时产生VM暂停事件(例如,VM退出或虚拟化异常)。在一些实施例中,所述处理器进一步经配置以在产生所述VM暂停事件之前将针对触发所述事件的处理器指令确定的反汇编数据保存到特殊位置(例如,特定处理器寄存器)。所保存反汇编数据可包含例如平台上的前缀、操作码、Mod R/M、SIB、位移及立即数字段等个别指令编码字段的内容。

Description

用于在退出虚拟机器后暴露当前处理器指令的系统及方法
相关申请案
本申请案主张2014年8月18日提出申请的标题为“用于在退出虚拟机器后暴露当前处理器指令的系统及方法(Systems And Methods for Exposing A Current ProcessorInstruction Upon Exiting A Virtual Machine)”的美国临时专利申请案第62/038,476号的申请日期的权益,所述美国临时专利申请案的全部内容以引用的方式并入本文中。
背景技术
本发明涉及计算机安全,且特定来说涉及在硬件虚拟化配置中执行计算机安全操作。
恶意的软件(还称为恶意软件(malware))影响全世界的大量计算机系统。在其许多形式(例如计算机病毒、蠕虫、隐匿程序(rootkit)及间谍软件)中,恶意软件给数百万计算机用户呈现严重风险,使所述计算机用户易受数据及敏感信息丢失、身份盗用及生产力损失以及其它。
现代计算应用通常采用硬件可视化技术以形成称作虚拟机器(VM)的模拟计算机环境,所述VM在许多方面表现为物理计算机系统。在例如服务器合并及基础设施即服务(infrastructure-as-a-service)等应用中,数个虚拟机器可在同一计算机系统上同时运行,所述虚拟机器共享硬件资源,因此减少投资及操作成本。每一虚拟机器可与其它虚拟机器单独地运行其自身的操作系统及/或软件。由于例如恶意软件及间谍软件等计算机安全威胁的稳定增多,因此每一此虚拟机器可能需要保护。
一些安全解决方案通过监视客户机进程在受保护VM存取存储器内所执行的方式以识别潜在恶意的活动而保护虚拟机器。在一个实例中,当尝试写入到特定存储器区域(例如,由客户机进程使用的存储器区域)或从所述特定存储器区域执行代码时,计算机安全程序可配置处理器以产生内部事件(例如,异常或VM退出事件)。此类处理器事件通常暂停对当前线程的执行且将处理器切换成执行事件处理程序例程,所述事件处理程序例程可形成计算机安全程序的部分。计算机安全程序可因此检测到以可指示恶意软件的方式存取存储器的尝试。在分析事件之后,计算机安全程序可仿真在事件发生时正被执行的处理器指令,且可将执行返回到原始线程。此类方法通常在所属领域中称作陷入与仿真(trap-and-emulate)。
常规陷入与仿真方法可对主机计算机系统造成大量计算负担,从而可能影响用户体验及生产率。因此,对开发适合于虚拟化环境的高效计算机安全系统及方法存在相当大的兴趣。
发明内容
根据一个方面,一种主机系统包括经配置以执行虚拟机器及计算机安全程序的至少一个硬件处理器。所述至少一个处理器进一步经配置以确定在所述虚拟机器内执行客户机指令是否导致存储器存取许可的违例。作为响应,当执行所述客户机指令导致所述违例时,所述至少一个硬件处理器进一步经配置以:将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;暂停对所述客户机指令的所述执行;及响应于暂停对所述客户机指令的所述执行,切换到执行所述计算机安全程序,其中所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
根据另一方面,一种保护主机系统免受计算机安全威胁的方法,所述方法包括响应于接收到用于执行的客户机指令,采用所述主机系统的至少一个硬件处理器以确定执行所述客户机指令是否导致存储器存取许可的违例,其中所述客户机指令在由所述主机系统暴露的虚拟机器内执行。所述方法进一步包括响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:采用所述至少一个硬件处理器以将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;及采用所述至少一个硬件处理器以暂停对所述客户机指令的所述执行。所述方法进一步包括响应于暂停对所述客户机指令的所述执行,切换到执行计算机安全程序,所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
根据另一方面,一种主机系统的至少一个硬件处理器可配置以响应于接收到用于执行的客户机指令,确定执行所述客户机指令是否导致存储器存取许可的违例,其中所述客户机指令在由所述主机系统暴露的客户机虚拟机器内执行。所述至少一个硬件处理器可进一步配置以响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;暂停对所述客户机指令的所述执行;及响应于暂停对所述客户机指令的所述执行,切换到执行计算机安全程序,其中所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
根据另一方面,一种非暂时性计算机可读媒体存储指令,所述指令在由主机系统的至少一个硬件处理器执行时致使所述主机系统形成计算机安全程序,所述计算机安全程序经配置以确定存储器存取许可的违例是否指示计算机安全威胁。所述至少一个硬件处理器可配置以响应于接收到用于执行的客户机指令,确定执行所述客户机指令是否导致所述违例,其中所述客户机指令在由所述主机系统暴露的虚拟机器内执行。所述至少一个硬件处理器可进一步配置以响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;暂停对所述客户机指令的所述执行;及响应于暂停对所述客户机指令的所述执行,切换到执行所述计算机安全程序。
附图说明
在阅读以下详细描述后且在参考图式后,本发明的前述方面及优点将即刻变得较好理解,在图式中:
图1展示根据本发明的一些实施例的主机计算机系统的示范性硬件配置。
图2-A展示根据本发明的一些实施例的由在主机系统上执行的虚拟机管理程序(hypervisor)暴露的一组示范性虚拟机器及保护所述组虚拟机器的计算机安全模块(CSM)。
图2-B展示本发明的替代实施例,其中CSM在虚拟机器下方执行且其中异常处理程序在受保护虚拟机器内执行。
图2-C展示本发明的另一实施例,其中CSM及异常处理程序两者均在受保护虚拟机器内执行。
图3展示根据本发明的一些实施例的暴露为客户机虚拟机器的虚拟化硬件的示范性配置。
图4展示根据本发明的一些实施例的在如图2-A中所展示的硬件虚拟化配置中的一组示范性存储器地址翻译。
图5展示根据本发明的一些实施例的处理器的示范性组件。
图6展示根据本发明的一些实施例的处理器的示范性暂停事件寄存器。
图7展示x86指令集的示范性处理器指令的汇编语言表示及其对应机器代码表示。
图8展示根据本发明的一些实施例的由处理器执行以执行处理器指令的示范性步骤序列。
图9图解说明根据本发明的一些实施例的由计算机安全模块执行以保护客户机虚拟机器的示范性步骤序列。
具体实施方式
在以下描述中,应理解,结构之间的所有所陈述连接可为直接操作连接或通过中间结构的间接操作连接。一组元素包含一个或多个元素。对元素的任何陈述应理解为是指至少一个元素。多个元素包含至少两个元素。除非另有需要,否则任何所描述方法步骤不需要一定以特定所图解说明次序执行。从第二元素导出的第一元素(例如,数据)囊括等于所述第二元素的第一元素以及通过处理所述第二元素而产生的第一元素及任选地其它数据。根据参数做出确定或决策囊括根据所述参数及任选地根据其它数据做出确定或决策。除非另有规定,否则一些数量/数据的指示符可为数量/数据本身,或与所述数量/数据本身不同的指示符。计算机程序是实施任务的处理器指令序列。在本发明的一些实施例中所描述的计算机程序可为独立软件实体或其它计算机程序的子实体(例如,子例程、库)。除非另有规定,否则计算机安全程序是保护设备及数据免受无意或未经授权存取、修改或破坏的计算机程序。除非另有规定,否则进程是计算机程序的实例(例如应用程序或操作系统的一部分),且由至少具有执行线程及指派给其的虚拟存储器空间表征,其中相应虚拟存储器空间的内容包含可执行代码。除非另有规定,否则页表示可个别地映射到主机系统的物理存储器的虚拟存储器的最小单元。术语“逻辑”囊括具有固定或可重新配置功能性的硬件电路(例如,现场可编程门阵列电路),但不囊括在通用计算机上仿真此功能性的软件。除非另有规定,否则寄存器表示与处理器集成或形成所述处理器的部分且不同于随机存取存储器(RAM)的存储组件。计算机可读媒体囊括非暂时性媒体(例如磁性媒体、光学媒体及半导体存储媒体(例如硬驱动器、光盘、快闪存储器、DRAM))以及通信链路(例如导电电缆及光纤光学链路)。根据一些实施例,本发明尤其提供计算机系统,所述计算机系统包括经编程以执行本文中所描述的方法的硬件(例如,一或多个处理器),以及用以执行本文中所描述的方法的计算机可读媒体编码指令。
以下描述通过实例方式且未必通过限制方式图解说明本发明的实施例。
图1展示根据本发明的一些实施例的主机系统10的示范性硬件配置。主机系统10可表示例如企业服务器的公司计算装置或者例如个人计算机、平板计算机或智能电话的终端用户装置。其它示范性主机系统包含TV、游戏控制台、可穿戴式计算装置或具有存储器及处理器的任何其它电子装置。主机系统10可用于执行一组软件应用程序,例如浏览器、字处理应用程序及电子通信(例如,电子邮件、即时消息)应用程序以及其它。在一些实施例中,主机系统10经配置以支持硬件虚拟化且暴露一组虚拟机器,如下文所展示。
图1图解说明计算机系统;例如智能电话及平板计算机等其它主机系统的硬件配置可不同。系统10包括全部通过控制器集线器24连接的一组物理装置,包含处理器12、存储器单元14、一组输入装置16、一组输出装置18、一组存储装置20及一组网络适配器22。在一些实施例中,处理器12包括经配置以利用一组信号及/或数据执行计算及/或逻辑操作的物理装置(例如,形成于半导体衬底上的多核心集成电路)。在一些实施例中,此类逻辑操作以处理器指令(例如,机器代码或其它类型的软件)序列的形式递送到处理器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可包含存储器管理单元(MMU)、输入/输出(I/O)控制器及中断控制器以及其它。在另一实例中,控制器集线器24可包括将处理器12连接到存储器14的北桥(northbridge)及/或将处理器12连接到装置16、18、20及22的南桥(southbridge)。在一些实施例中,控制器集线器(例如MMU)的部分可与处理器12集成,即,可与处理器12共享共同衬底。
图2-A展示根据本发明的一些实施例的示范性功能配置,其中主机系统10使用硬件虚拟化技术来操作由虚拟机管理程序50暴露的一组客户机虚拟机器52a-b。此类配置在例如云计算及服务器合并以及其它等应用中是常见的。虚拟机器(VM)在所属领域中称作实际物理机器/计算机系统的抽象(例如,软件仿真),所述VM能够运行操作系统及其它软件。在一些实施例中,虚拟机管理程序50包含软件,所述软件经配置以形成或实现多个虚拟化装置(例如虚拟处理器及虚拟控制器集线器)且将此类虚拟化装置代替主机系统10的真实物理装置来呈现给软件。虚拟机管理程序50的此类操作通常在所属领域中称作暴露虚拟机器。在一些实施例中,虚拟机管理程序50允许由多个虚拟机器对主机系统10的硬件资源的多路复用(共享)。虚拟机管理程序50可进一步管理此多路复用,使得每一客户机VM 52a-b独立地操作且不知晓在主机系统10上同时执行的其它VM。普遍虚拟机管理程序的实例包含来自威睿公司(VMware Inc.)的VMware vSphereTM及开源(open-source)Xen虚拟机管理程序以及其它。
每一VM 52a-b可分别执行客户机操作系统(OS)54a-b。一组示范性应用程序56a-d通常表示任何软件应用程序,例如字处理、图像处理、媒体播放器、数据库、日历、个人联系人管理、浏览器、游戏、语音通信、数据通信及反恶意软件应用程序以及其它。操作系统54a-b可包括任何广泛可用的操作系统,例如Microsoft 或AndroidTM以及其它。每一OS 54a-b在于相应VM内执行的应用程序与相应VM的虚拟化硬件装置之间提供接口。在以下描述中,在虚拟机器的虚拟处理器上执行的软件据称在相应虚拟机器内执行。举例来说,在图2-A的实例中,应用程序56a-b据称在客户机VM 52a内执行,而应用程序56c-d据称在客户机VM 52b内执行。相比来说,虚拟机管理程序50据称在客户机VM 52a-b外部或下方执行。
图3展示如由虚拟机管理程序50暴露的虚拟机器52的示范性配置。VM 52可表示图2-A的VM 52a-b中的任一者。VM 52包含虚拟化处理器112、虚拟化存储器单元114、虚拟化输入装置116、虚拟化输出装置118、虚拟化存储装置120、虚拟化网络适配器122及虚拟化控制器集线器124。虚拟化处理器112包括对处理器12的功能性中的至少一些功能性的仿真且经配置以接收形成软件(例如操作系统及其它应用程序)的部分的处理器指令以用于执行。使用处理器112来执行的软件被视为在虚拟机器52内执行。在一些实施例中,虚拟化存储器单元114包括用于存储及检索由虚拟化处理器112使用的数据的可寻址空间。其它虚拟化装置(例如,虚拟化输入、输出、存储装置等)仿真主机系统10的相应物理装置的功能性中的至少一些功能性。虚拟化处理器112可经配置以如同其将与对应物理装置互动一般与此类虚拟化装置互动。举例来说,在VM 52内执行的软件可经由虚拟化网络适配器122发送及/或接收网络业务。在一些实施例中,虚拟机管理程序50可仅将虚拟化装置的子集暴露于VM 52(举例来说,仅虚拟化处理器112、虚拟化存储器114以及集线器124的部分)。虚拟机管理程序50还可给予选定VM对主机系统10的一些硬件装置的独占使用。在一个此实例中,VM 52a(图2-A)可具有对输入装置16及输出装置18的独占使用,但缺少虚拟化网络适配器。同时,VM 52b可具有对网络适配器22的独占使用。举例来说,此类配置可使用来自技术来实施。
现代处理器实施处理器特权级阶层,在所属领域中还称作保护环(protectionring)。每一此环或级由在相应环内执行的软件被允许实施的一组动作及/或处理器指令表征。示范性特权级/环包含用户模式(环3)及内核模式(环0)。经配置以支持硬件虚拟化的一些主机系统可包含具有最高处理器特权的额外环(例如,环-1、根(root)模式或平台上的VMXroot)。在一些实施例中,虚拟机管理程序50以最大特权级(环-1)控制处理器12,因此形成作为虚拟机器而暴露于在主机系统10上执行的其它软件的硬件虚拟化平台。例如图2-A中的客户机OS 54a等操作系统通常以比虚拟机管理程序50小的处理器特权(例如,以环0或内核模式)在相应VM的虚拟环境内执行。例如56a-b等常见用户应用程序通常以比OS34a小的处理器特权(例如,以环3或用户模式)执行。应用程序56a-b的一些部分可以内核特权级执行,而OS 34a的一些部分可以用户模式(环3)执行。当软件对象尝试执行需要比由其经指派保护环所允许高的处理器特权的动作或指令时,所述尝试通常产生处理器事件(例如异常或故障),此将对处理器12的控制转移到以具有足够特权的环执行的实体(例如,处理程序例程)以实施相应动作。
特定来说,对执行特定动作或执行来自客户机VM内的特定指令的尝试可触发特殊类别的处理器事件,本文中通常称为VM暂停事件。在一些实施例中,VM暂停事件暂停对客户机VM内的当前线程的执行且将处理器12切换成执行处理程序例程。除其它外,示范性VM暂停事件包含VM退出事件(例如,平台上的VMExit)及虚拟化异常(例如,平台上的#VE)。VM退出事件将处理器12切换成在相应客户机VM外部、通常以虚拟机管理程序50的级执行处理程序例程。虚拟化异常可将处理器12切换成在相应客户机VM内执行处理程序例程而非退出相应VM。
触发VM暂停事件的示范性指令包含平台上的VMCALL。VM暂停事件也可由其它事件(例如存储器存取违例)触发。在一个此实例中,当在VM内执行的软件对象尝试写入到标记为不可写入的存储器区段或从标记为不可执行的存储器区段执行代码时,处理器12可产生VM退出事件。举例来说,此类VM切换机制允许计算机安全程序从相应VM外部保护虚拟机器。计算机安全程序可截获响应于由在VM内部运行的软件执行的特定动作而发生的VM退出事件,所述动作可指示安全威胁。计算机安全程序可接着可能在不知晓VM内软件的情况下阻止及/或进一步分析此类动作。此类配置可大幅度加强计算机安全。
在一些实施例(例如,图2-A)中,虚拟机管理程序50包含经配置以执行此类计算机安全操作以及其它的计算机安全模块(CSM)60。模块60可并入到虚拟机管理程序50中(举例来说,作为库)或可作为不同于且独立于虚拟机管理程序50但以虚拟机管理程序50的特权级执行的计算机程序而递送。单个模块60可经配置以保护在主机系统10上执行的多个客户机VM。由模块60实施的安全操作可包含检测由在客户机VM内执行的进程所执行的动作(例如,调用OS的特定功能、存取OS的注册表、从远程位置下载文件、将数据写入到文件等)。模块60的其它安全操作可包括确定含有在客户机VM内执行的软件对象的一部分的存储器区段的地址、存取相应存储器区段及分析存储于相应存储器区段内的内容。安全操作的其它实例包含截获及/或限制对此类存储器区段的存取,例如防止覆写属于受保护进程的代码或数据及防止执行存储于特定存储器页中的代码。在一些实施例中,CSM 60包含经配置以截获发生于客户机VM 52a-b内的VM退出事件的VM退出事件处理程序61。在替代实施例中,处理程序61可为虚拟机管理程序50的与CSM 60分离的不同模块(例如,库),所述处理程序截获VM退出事件且在确定所发生的每一VM退出的原因及/或类型之后选择性地将控制转移到CSM 60。
图2-B图解说明替代实施例,其中计算机安全模块60从相应VM外部保护客户机VM52c。在此类实施例中,当存储器存取违例发生时,处理器12可经配置以产生虚拟化异常(而非如上文关于图2-A所描述的VM退出事件)。在图2-B的示范性实施例中,虚拟化异常处理程序63在VM 52c内、举例来说以操作系统54c的特权级执行,且经配置以截获虚拟化异常并与CSM 60介接。
处理程序63与CSM 60之间的通信可根据所属领域中已知的任何进程间通信方法而继续进行。为将数据从受保护VM内发射到虚拟机管理程序50的级,处理程序63的一些实施例使用专门化指令(例如,平台上的VMCALL)以将对处理器12的控制从相应VM转移到虚拟机管理程序50。被发射的数据可由异常处理程序63放置于与CSM 60共享的预定存储器区段中。为将数据发射到处理程序63,CSM 60的一些实施例可将中断注入到VM 52c中,所述中断由处理程序63处理。相应数据可再次通过上文所描述的共享存储器区段传送。
在图2-C中所图解说明的另一实施例中,CSM 60及处理程序63两者均在受保护VM内、举例来说在内核模式(环0)中执行。此类实施例也可采用虚拟化异常来检测存储器存取违例。在配置2-A-B-C之间做出决定可包括评估性能与安全之间的折衷。VM退出事件在计算方面为相对昂贵的,通常需要随着每一退出与再入循环将大的数据结构加载到存储器中及/或从所述存储器卸载所述大的数据结构。因此,例如2-A的配置可需要比例如2-B-C的配置多的计算以截获事件。另一方面,将关键安全组件(例如CSM 60及处理程序61-63)保持于受保护VM外部(如实例2-A-B中)可加强安全,这是因为此可较难以使在相应VM内执行的恶意软件与此类组件的操作介接。
为能够在如图2-A-B中所图解说明的配置中(即,从相应VM外部)保护客户机VM,CSM 60的一些实施例采用处理器12的地址翻译数据结构及/或地址翻译机制。虚拟机器通常与虚拟化物理存储器(例如,参见图3中的存储器114)(在所属领域中还称作客户机物理存储器)一起操作。虚拟化物理存储器包括实际物理存储器14的抽象表示(举例来说)作为相连地址空间,通常称为客户机物理地址(GPA)。每一此地址空间唯一地附接到客户机VM,其中所述地址空间的部分映射到物理存储器14及/或物理存储装置20的区段。在经配置以支持虚拟化的系统中,此映射通常使用由处理器12控制的硬件加速专用数据结构及机制(称作二级地址翻译(SLAT))来实现。普遍SLAT实施方案包含平台上的扩展页表(EPT)及平台上的快速虚拟化索引(RVI)/嵌套页表(NPT)。在此类系统中,虚拟化物理存储器可以所属领域中称作页的单元经分割,页表示经由例如EPT/NPT的机制个别地映射到物理存储器的虚拟化物理存储器的最小单元,即,以页粒度执行物理与虚拟化物理存储器之间的映射。所有页通常具有预定大小,例如,4千字节、2兆字节等。通常由虚拟机管理程序50配置虚拟化物理存储器分为页的分割。在一些实施例中,虚拟机管理程序50还配置SLAT结构,且因此配置物理存储器与虚拟化物理存储器之间的地址翻译。此类地址翻译在所属领域中称作客户机物理到主机物理(GPA到HPA)翻译。
在一些实施例中,在VM内执行的操作系统针对在相应VM内执行的每一进程建立虚拟存储器空间,所述虚拟存储器空间表示物理存储器的抽象。进程虚拟存储器通常包括相连地址空间,通常在所属领域中称作客户机虚拟地址(GVA)或客户机线性地址(GLA)。在一些实施例中,进程虚拟存储器空间还分割成页,此类页表示由OS个别地映射到相应VM的虚拟化物理存储器的虚拟存储器的最小单元,即,以页粒度执行虚拟到虚拟化物理存储器映射。OS可配置由相应VM的虚拟化处理器使用以执行客户机虚拟到客户机物理或GVA到GPA地址翻译的专用数据结构(例如页表)。
图4图解说明图2-A的实施例中的示范性存储器地址翻译。在由虚拟机管理程序50暴露之后,客户机VM 52a将虚拟化物理存储器空间114a视为其自身的物理存储器空间。在客户机VM 52a内执行的进程被客户机OS 54a指派有虚拟存储器空间214a。当进程尝试在客户机虚拟地址62处存取存储器时,GVA 62由客户机VM 52a的(虚拟化)MMU翻译成虚拟化物理存储器空间114a内的客户机物理地址64。举例来说,GVA到GPA翻译70a可根据由客户机OS34a配置及控制的页表继续进行。GPA 64由MMU进一步映射到主机系统10的物理存储器14内的主机物理地址(HPA)66。举例来说,GPA到HPA翻译70b可根据由虚拟机管理程序50配置的SLAT结构继续进行。
在客户机VM 52a-b下方执行的每一进程通常被指派有可经由在所属领域中所称的主机虚拟地址(HVA)寻址的虚拟存储器空间。在图4的实例中,虚拟机管理程序50针对计算机安全模块60建立虚拟存储器空间214b。CSM 60可接着经由HVA 68引用HPA 66。当模块60集成于虚拟机管理程序50内(举例来说,作为库)时,存储器空间214b可与虚拟机管理程序50的虚拟存储器空间重合。为管理此类空间,虚拟机管理程序50可配置由MMU使用以执行HVA到HPA翻译(例如翻译70c)的专用数据结构及机制(例如,页表)。
在一些实施例中,虚拟机管理程序50及/或CSM 60可针对物理存储器页的子集中的每一者设置存取许可。举例来说,此类存储器页可由在受保护VM内执行的特定关键客户机进程(例如OS及/或反恶意软件例程的进程)使用。举例来说,存取许可指示是否可从相应页读取及写入到所述相应页中,以及是否允许软件从相应页执行代码。举例来说,可将存取许可指示为表示相应存储器页的SLAT条目的一部分。一些主机系统可允许以子页粒度设置存取许可。
虚拟机管理程序50及/或CSM 60可进一步配置处理器12以当在客户机VM内执行的软件尝试以违反存取许可的方式存取存储器(例如,写入到标记为不可写入的存储器页)时产生VM暂停事件。此尝试据此称为存储器存取违例。相应VM暂停事件可在例如图2-A的配置中为VM退出事件且在例如图2-B-C的配置中为虚拟化异常。
本发明的一些实施例引入对常规硬件处理器的结构及功能性的改变以使得处理器能够在硬件虚拟化配置中较高效地起作用。图5展示根据本发明的一些实施例的处理器12的示范性硬件组件。所图解说明组件意在作为执行所描述功能性的通用装置;结构细节可在实施方案当中大幅度变化。举例来说,每一所图解说明组件可包括未必彼此物理接近的多个互连子系统。所图解说明组件并非穷尽性的;处理器12可包含为简化呈现而从图5省略的许多其它组件(例如,调度器、中断控制器、各种高速缓冲存储器等)。
处理器12可包含经配置以实施处理器管道的各种阶段的逻辑/电路。举例来说,指令解码器30执行指令解码操作,所述指令解码操作可包含将每一处理器指令翻译成一组基本处理器操作及/或微操作。连接到解码器30的一组执行单元36可执行管道的执行阶段。除其它外,示范性执行单元36包含算术逻辑单元(ALU)及浮点单元(FPU)。
在一些实施例中,管道的针对指令的执行阶段包括确定将相应指令的运算符应用于相应指令的操作数的结果。除其它外,此类结果可包括存储器地址、将被提交到存储器地址或处理器寄存器(例如,提交到例如AX的通用寄存器、模型特定寄存器MSR、例如EFLAGS的控制寄存器或例如x86分段寄存器的隐藏部分的隐藏寄存器(还称作描述符高速缓冲存储器))的值、指令指针(例如,RIP)的值及堆栈指针(例如,RSP)的值。
指令的操作数可在指令的语句中为显式的,或可为隐式的。具有隐式操作数的示范性x86指令是STC指令,所述STC指令将处理器的EFLAGS控制寄存器的进位旗标设置为1。在一些实施例中,将寄存器EFLAGS及值1解译为(隐式)操作数,然而其在STC指令的语句中并不显式地显现。
提交单元38可执行管道的提交阶段,即,将执行单元36的输出存储于存储器14中及/或更新特定处理器寄存器的内容以反映由执行阶段产生的改变/结果。提交单元38可包括在所属领域中称作引退(retirement)单元的逻辑模块。
连接到解码器30及执行单元36的存储器存取模块34包含经配置以与存储器14介接(例如,从存储器提取指令、从存储器加载数据及将处理器指令的执行结果存储到存储器)的逻辑。在一些实施例中,存储器存取模块包括经配置以执行存储器存取所必需的虚拟到物理地址翻译的MMU。
现代处理器通常支持对处理器指令的无序及/或推测执行。在此类系统中,由同一执行单元36同时提取、解码及执行多个指令。接着将此类执行的结果有序提交以保留相应计算机程序的既定流程。举例来说,此类配置连同分支预测算法一起使用以增强处理器12的性能。在经配置用于无序执行的一些实施例中,处理器12可进一步包括耦合到解码器30及执行单元36的分派程序单元32,及耦合到执行单元36及提交单元38的寄存器堆40。分派程序单元36可调度个别微操作以用于执行且维持使每一微操作与其相应指令相关联的映射以控制执行及提交的次序。寄存器堆40包括(举例来说)组织为重排序缓冲器的内部处理器寄存器阵列。寄存器堆40可进一步包括使得分派程序单元36能够使寄存器堆40中的一行寄存器与每一经调度微操作(在所属领域中称作寄存器重命名的操作)相关联的逻辑。在此类配置中,举例来说,每一此行寄存器可保持处理器12的通用及/或状态寄存器的值,所述值对应于特定处理器指令的中间执行阶段。
处理器12可进一步包含经配置以管理虚拟机器状态数据的虚拟机器控制单元38。在一些实施例中,虚拟机器状态对象(VMSO)包括由处理器12内部使用以表示暴露于主机系统10上的每一虚拟化处理器的当前状态的数据结构。示范性VMSO包含平台上的虚拟机器控制结构(VMCS)及平台上的虚拟机器控制块(VMCB)。VMSO通常由虚拟机管理程序50建立作为暴露每一虚拟机器的部分。在一些实施例中,处理器12使存储器中的区域与每一VMSO相关联,使得软件可使用存储器地址或指针(例如,平台上的VMCS指针)来引用特定VMSO。
每一VMSO可包括客户机状态区及主机状态区,客户机状态区保持相应客户机VM的CPU状态,且主机状态区存储虚拟机管理程序50的当前状态。在一些实施例中,VMSO的客户机状态区包含相应客户机VM的虚拟处理器的控制寄存器(例如,CR0、CR3等)、指令指针(例如,RIP)、通用寄存器(例如,EAX、ECX等)及状态寄存器(例如,EFLAGS)的内容以及其它。VMSO的主机状态区可包含指向经配置用于针对相应客户机VM的GPA到HPA地址翻译的SLAT数据结构的指针(例如,平台上的EPT指针)。
在一些实施例中,处理器12可将VMSO的一部分存储于专用内部寄存器/高速缓冲存储器内,而相应VMSO的其它部分可驻存于存储器中。在任何给定时间,可将至多一个VMSO(本文中称作当前VMSO)加载到处理器上,从而识别当前控制处理器12的虚拟机器。现代处理器通常经配置用于多线程。在此类配置中,物理处理器12可操作多个核心,每一核心进一步包括多个逻辑处理器,其中每一逻辑处理器可独立于其它逻辑处理器且与所述其它逻辑处理器同时处理执行线程。多个逻辑处理器可共享一些硬件资源,举例来说共同MMU。在多线程实施例中,可将不同VMSO加载到每一不同逻辑处理器上。
当处理器12从执行相应VM切换成执行虚拟机管理程序50时(例如,在VM退出后),处理器12可将相应VM的状态保存到当前VMSO的客户机状态区。当处理器12从执行第一VM切换成执行第二VM时,卸载相关联于第一VM的VMSO,且将相关联于第二VM的VMSO加载到处理器上,第二VMSO变为当前VMSO。在一些实施例中,由虚拟机器控制模块38执行VMSO数据到处理器12的此加载/从处理器12的此卸载。模块38可进一步实施VMSO数据从存储器14的检索及/或到存储器14的保存。
在一些实施例中,处理器12进一步包括连接到执行单元36及/或提交单元38且经配置以存储与客户机指令相关联的指令特定数据的暂停事件寄存器44,其中执行所述客户机指令已导致VM暂停事件(例如,VM退出或可视化异常)。在一些实施例中,暂停事件寄存器44是可由在主机系统10上执行的软件存取的经暴露寄存器,即,存储于寄存器44中的数据可由例如安全模块60的软件读取。在一个此实例中,暂停事件寄存器44包含处理器12的模型特定寄存器(MSR)。一些实施例可将对寄存器44的存取限制于根据准则(例如处理器特权(例如,仅环-1或根模式))或对象类型(例如,仅驱动程序)而选择的软件对象子集。一些实施例可将对寄存器44的软件存取仅限制于操作子集(例如,仅读取)。
图6展示根据本发明的一些实施例的暂停事件寄存器44的一组示范性字段。寄存器44可包含反汇编字段46a及执行结果字段46b。反汇编字段46a可存储由反汇编相应客户机指令产生的数据。
图7展示示范性x86处理器指令的汇编语言表示45。所图解说明指令指示处理器将以(虚拟)地址EBX+4*ECX+0x02存储于存储器中的内容递增当前存储于寄存器AX中的值。相应指令在存储器中表示为机器代码47;表示45与47之间的翻译通常由编译器或汇编器完成。机器代码表示47具有通用形式48,包括为每一ISA及/或每一处理器族系所特有的编码字段49a-f序列。在处理器上,此类编码字段包含前缀、操作码、Mod R/M、SIB、位移及立即数(Immediate)字段。图7针对给定示范性x86指令展示每一编码字段的实例。在一些ISA中,机器代码表示47可具有可变长度,举例来说,一些编码字段可显现于特定指令的机器代码表示中,但可不显现于其它指令的表示中。在图7的实例中,表示47缺少立即数编码字段。
在一些实施例中,反汇编指令包括剖析指令的机器代码表示以识别个别指令编码字段,例如图7中的字段49a-f。反汇编可进一步包括提取个别编码字段的内容及/或使用此内容来确定客户机指令的一组语义元素。此类语义元素可包含指令的运算符(例如,MOV、ADD等)及操作数(例如,AX、[EBX+4*ECX+0x02])以及其它。指令反汇编可至少部分地由指令解码器30及/或执行单元36实施。
在图7的实例中,反汇编所图解说明指令可包含识别ADD运算符及/或根据机器代码47确定相应指令具有两个操作数(所述操作数中的一者是AX寄存器的内容,第二操作数是存储器的内容),且确定相应存储器地址的表达式(例如,EBX+4*ECX+0x02)。在一些实施例中,反汇编指令进一步包括计算由相应指令的操作数指示的存储器地址(例如,表达式EBX+4*ECX+0x02的值)。在另一实例中,其中客户机指令是相对跳转指令(例如,x86平台上的JMP$+10,在机器代码中表示为0xEB 0x08),反汇编客户机指令可包括根据客户机指令的地址、客户机指令的长度及/或相对跳转的大小来计算目的地的绝对存储器地址。
在一些实施例中,寄存器44的反汇编字段46a(图6)经配置以存储客户机指令的个别指令编码字段(例如操作码、Mod R/M及SIB字段)的内容。字段46a的其它示范性内容包含指示相应指令的运算符的运算符识别符,及相应指令的操作数的指示符。操作数指示符可进一步包含处理器寄存器(例如,AX)的识别符,及指示(举例来说)相应操作数是寄存器的内容还是存储器的内容的旗标。反汇编字段46a可进一步包括由操作数指示的存储器地址(例如,GVA、GPA、及/或HPA)。反汇编字段46a的结构可为ISA及/或平台特定的。
在一些实施例中,暂停事件寄存器44的执行结果字段46b可存储指示执行相应处理器指令的结果的数据。此类结果可包含由执行相应指令产生的状态寄存器(例如,FLAGS)的值、指令指针(例如,RIP)的值及通用寄存器(例如,EAX)的值。字段46b可进一步包括作为执行相应指令的结果将被提交到存储器的值、相应值的大小(例如,字节、字组等)及/或其中相应值将被提交的存储器地址。
在一些实施例中,执行单元36及/或提交单元38可经配置以确定执行客户机指令是否导致VM处理器事件(例如VM退出或可视化异常),且在是(yes)的情况下,在产生相应事件之前将指令反汇编数据保存到暂停事件寄存器44。处理器12可进一步经配置以延迟处理器事件的产生直到完成相应客户机指令的执行阶段为止,且将执行相应指令的结果保存到事件寄存器44而非将此类结果提交到存储器及/或处理器12的通用寄存器。为避免提交此类指令的结果,处理器12可经配置以在管道的针对相应指令的提交阶段之前产生VM处理器事件。下文将进一步详述此功能性。
图8展示根据本发明的一些实施例的由处理器12执行以执行客户机指令的详细示范性步骤序列。图8展示实施例,其中处理器12经配置以响应于存储器存取违例而产生VM退出事件。所属领域的技术人员将了解,本描述可容易地被修改以涵盖产生其它VM暂停事件(例如虚拟化异常)而非VM退出事件的实施例。“客户机指令”是本文中用于表示形成在客户机VM(例如图2-A中的VM 52a-b)内执行的计算机程序的部分的处理器指令的术语。
步骤302尝试提取客户机指令。当提取尝试失败时,步骤303可确定失败是否由存储器存取违例(举例来说,当客户机指令驻存于在客户机VM的SLAT结构中标记为不可执行的存储器页中时)导致。在否(no)的情况下,在步骤306中,处理器12产生VM退出事件且将执行转移到事件处理程序(例如图2-A中的处理程序61)。当提取客户机指令失败是由存储器存取违例导致时,此失败可指示试图保护相应存储器页的内容的安全程序(例如,反恶意软件模块)。通常以此方式受保护以免受执行的一个示范性存储器区段存储客户机进程的执行堆栈。将所述堆栈标记为不可执行可保护客户机进程(举例来说)免受堆栈攻击(exploit)。在此类情景中,一些实施例可忽略相应存储器存取许可而重新尝试提取客户机指令(步骤305)。在步骤307中,以专用旗标来标记所提取客户机指令以指示相应指令是被“强制提取”,即,在打破存储器存取许可的情况下被提取。处理器12可接着继续进行到步骤308。
在提取步骤之后,步骤308解码及分派客户机指令。在步骤310中,开始执行客户机指令。当执行客户机指令满足VM退出准则时,其中所述准则与存储器存取不相关,处理器12继续进行到下文详述的步骤322。可在多种情景中触发此类VM退出。举例来说,客户机指令可为专门化指令(例如VMCALL),所述专门化指令在从客户机VM内被调用时自动触发VM退出事件。VM退出的另一示范性原因(与存储器存取不相关)是在对客户机指令的执行期间的硬件事件(例如,中断)的发生。
当执行客户机指令导致存储器存取违例(举例来说,当客户机指令指示处理器将结果写入到标记为不可写入的存储器页中时),常规处理器通常暂停对客户机指令的执行、刷新处理器管道且产生VM暂停事件(例如,VM退出)。相比来说,在本发明的一些实施例中,并不暂停对客户机指令的执行。而是,在步骤318中,延迟VM退出事件直到管道的针对客户机指令的执行阶段结束为止。然而,在一些实施例中,并不提交所完成执行阶段的结果(如将在常规系统中所发生那样)。而是,在步骤320中,处理器12可指示提交单元38将客户机指令的所完成执行阶段的结果存储于暂停事件寄存器44中。举例来说,当存储器存取违例已发生时,可使用激活信号来使提交单元38从将结果提交到存储器及/或处理器12的通用寄存器切换到将结果存储于寄存器44中来实现此功能性。控制信号可指示对客户机指令的执行是否已导致存储器存取违例。举例来说,提交单元38可经由存储器存取模块34从MMU接收此信号。在一些实施例中,步骤320包括提交单元38从寄存器堆40检索执行客户机指令的结果。
在替代实施例中,替代将客户机指令的执行结果保存到寄存器44,步骤320可将此类结果保存到专用存储器区域,例如相应客户机VM的VMSO的客户机状态区。在另一实施例中,处理器12可在执行VM退出(步骤306)后即刻将此类结果发射到VM退出处理程序61。
在步骤322中,处理器12可将由反汇编客户机指令产生的数据存储到暂停事件寄存器44(及/或如上文所描述的存储器)。在一些实施例中,步骤322包含将客户机指令的个别编码字段的内容写入到寄存器44。可在解码及/或执行客户机指令的进程中由指令解码器30及/或执行单元36产生指令反汇编数据;步骤322可包含从相应处理器模块检索此数据。在存储客户机指令的执行结果及/或反汇编数据之后,处理器12可产生VM退出事件(步骤306)。
当在不导致存储器存取违例(步骤314)且不存在VM退出的非存储器相关原因(步骤312)的情况下继续进行对当前客户机指令的执行时,步骤315可确定当前客户机指令是否被强制提取(参见上文步骤305-307)。在否的情况下,步骤316将执行的结果提交到存储器及/或通用处理器寄存器。在当前客户机指令被强制提取的情况下,一些实施例可将相应指令视为导致存储器存取违例的指令,即,通过在产生VM退出事件之前等待相应指令完成管道的执行阶段、将结果及/或指令反汇编数据存储到寄存器44(参见上文步骤318-320-322-306)。
图9展示根据与计算机安全相关的本发明的一些实施例的由客户机VM及/或计算机安全模块60(图2-A-B)执行的示范性步骤序列。客户机进程(例如应用程序(例如,图2-A中的56a))或操作系统(例如,图2-A中的客户机OS 54a)的进程可在客户机VM内执行,逐步前进通过客户机指令序列(步骤332)。对客户机进程的执行继续直到产生VM退出(举例来说,根据上文关于图8所描述的情境)为止。所属领域的技术人员可了解可如何使描述适于其中处理器12产生虚拟化异常而非VM退出事件且其中在客户机VM内执行的异常处理程序(例如,图2-B中的处理程序63)经配置以截获相应异常的系统。
在步骤336中,处理程序61截获VM退出事件,分析所述VM退出事件以证明安全威胁。当所述事件指示安全威胁(例如,以恶意的意图执行的操作)时,在步骤340中,CSM 60可针对客户机进程及/或客户机VM采取保护性动作。除其它外,此动作可包含阻止对客户机进程的执行、将错误消息或一组虚拟结果返回给客户机进程且警报主机系统的管理员。
当VM退出事件不指示安全威胁时,步骤342确定执行客户机指令的结果是否可用(在处理器12的事件寄存器44中或存储器中)。在否的情况下,CSM 60前进到下文详述的步骤348。在是的情况下,步骤344从寄存器44及/或存储器(例如,相应客户机VM的VMSO的客户机状态区)检索相应结果。在步骤346中,CSM 60可应用执行当前客户机指令的结果。在一些实施例中,步骤346包括在提交阶段处在常规系统中实施的一组操作。举例来说,步骤346可包含更新相应客户机VM的虚拟化处理器的通用、控制及状态处理器寄存器的值。在一些实施例中,此类寄存器在相应客户机VM的VMSO的客户机状态区内为可存取的。步骤346可进一步包含将一些结果保存到由当前客户机指令的操作数指示的存储器地址。步骤346可进一步包含将指令指针(例如,x86平台中的RIP)递增,以展示对当前客户机指令的执行完成。
本发明的一些实施例将专用指令添加到处理器12的当前指令集架构(ISA),新指令指示处理器12从执行相应客户机指令的客户机VM下方直接应用客户机指令的执行结果。新指令(示范性助记符为VMAPPLY)可实施步骤346(图9)的操作,例如将来自暂停事件寄存器44的内容复制到相应客户机VM的虚拟化处理器的虚拟寄存器及/或存储器。
在一些实施例中,步骤346可进一步验证当前客户机指令是否为原子指令(例如,如由LOCK前缀指示)。在是的情况下,替代将结果直接应用于客户机的寄存器及/或存储器,步骤346可在返回到客户机VM后即刻强制对当前客户机指令的重新执行(参见下文步骤356)。
在当前客户机指令的执行结果为不可用时(举例来说,在当前VM退出是由享有特权的指令(例如VMCALL)导致时),在步骤348中,计算机安全模块60确定当前客户机指令的反汇编数据是否可用。在是的情况下,在步骤350中,CSM 60可(举例来说)从寄存器44的反汇编字段46a(例如,参见图6)检索此数据。CSM 60可接着继续进行以根据所检索反汇编数据仿真当前客户机指令(步骤354)。
当无反汇编数据可用时,步骤352可在继续进行仿真之前反汇编当前客户机指令。在步骤356中,CSM 60可重新启动相应客户机VM(例如,通过在平台上发布VMRESUME指令)。在其中步骤346包含对指令指针的修改的一些实施例中,对客户机进程的执行将以紧接着当前客户机指令的处理器指令开始,或以由当前客户机指令指示的处理器指令开始(例如,在控制例如JMP、CALL等流程改变指令的情形中)。
上文所描述的示范性系统及方法允许主机系统(例如计算机或智能电话)当在硬件虚拟化配置中操作时高效地实施计算机安全任务。除其它外,安全任务可包含保护主机系统免受恶意软件(例如计算机病毒及间谍软件)影响。在一些实施例中,主机系统经配置以在虚拟机器内执行操作系统及一组软件应用程序。安全模块可在相应虚拟机器外部(举例来说,以虚拟机管理程序的级)执行且可保护相应虚拟机器免受恶意软件影响。
在一些实施例中,安全模块识别含有对于受保护VM的安全来说关键的代码及/或数据的存储器区段(例如,一组存储器页),且配置相应存储器区段的存取许可。举例来说,此类存取许可可指示相应存储器区段为不可写入及/或不可执行的。安全模块可进一步配置主机系统的处理器以响应于存储器存取违例(例如,当在受保护VM内执行的软件尝试写入到标记为不可写入的存储器区段,或从标记为不可执行的存储器区段执行代码时)而产生VM暂停事件(例如VM退出或虚拟化异常)。安全模块可接着经由事件处理程序截获此类处理器事件,且可确定此类事件是否指示计算机安全威胁。在其中安全模块在受保护VM外部执行的配置中,安全模块的活动可能对在受保护VM内执行的软件(包含恶意软件)不可见。
在常规系统中,截获VM暂停事件根据通常在所属领域中称作“陷入与仿真”的方法继续进行。在常规技术的一个实例中,在确定哪一指令导致相应事件(例如,VM退出)之后,反恶意软件程序在将执行返回到受保护VM之前仿真相应指令,且修改指令指针以指示相应指令已被执行。在无仿真步骤的情况下,将执行返回到受保护VM将通常再触发VM退出,因此形成无限循环。
常规陷入与仿真系统及方法可因此需要反恶意软件程序包含指令反汇编器及/或指令仿真器。此类组件可在开发及维护上较为复杂且可不具可移植性(举例来说,从一个处理器到另一处理器)。此外,在常规系统中,反汇编及/或仿真步骤通常针对每个VM暂停事件实施,从而对主机系统造成相当大的计算负担。相比来说,本发明的一些实施例消除对反汇编器及/或仿真器的需要,从而大幅度加速计算机安全操作。
本发明的一些实施例引入对常规处理器的配置及操作的改变,从而使得此类处理器能够在硬件虚拟化配置中较高效地操作。
在一些实施例中,处理器经配置以响应于确定满足用于产生VM暂停事件的条件而将针对当前执行的客户机指令确定的反汇编数据保存到预定位置,例如特定处理器寄存器或特定存储器区(例如,由虚拟机管理程序使用以管理对受保护VM的执行的虚拟机器状态对象的客户机状态区)。举例来说,此反汇编数据可包含当前客户机指令的运算符及操作数的指示符。在一个示范性实施例中,反汇编数据包括客户机指令的个别编码字段(例如操作码、mod R/M及SIB字段)的内容以及其它。
此类改进可对计算机安全应用程序尤其有益,促进从外部(例如,从暴露相应VM的虚拟机管理程序的级)对虚拟机器的高效保护。在与常规计算机安全解决方案进行比较时,本发明的一些实施例允许通过从经配置以截获并分析VM退出事件的安全软件的操作消除指令反汇编阶段而在计算上大幅度减少。
所属领域的技术人员将清楚,可在不背离本发明的范围的情况下以许多方式更改以上实施例。因此,本发明的范围应由所附权利要求书及其法律等效内容来确定。

Claims (23)

1.一种主机系统,其包括经配置以执行虚拟机器及计算机安全程序的至少一个硬件处理器,其中所述至少一个处理器进一步经配置以:
确定在所述虚拟机器内执行客户机指令是否导致存储器存取许可的违例;及
作为响应,当执行所述客户机指令导致所述违例时:
将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;
暂停对所述客户机指令的所述执行;及
响应于暂停对所述客户机指令的所述执行,切换到执行所述计算机安全程序,其中所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
2.根据权利要求1所述的主机系统,其中所述机器代码表示包括编码字段序列,且其中所述部分包括所述客户机指令的个别编码字段的内容。
3.根据权利要求2所述的主机系统,其中所述个别编码字段选自由以下各项组成的群组:所述机器代码表示的前缀字段、操作码字段、mod R/M字段、SIB字段、位移字段及立即数字段。
4.根据权利要求1所述的主机系统,其中所述部分指示所述客户机指令的运算符。
5.根据权利要求1所述的主机系统,其中所述部分指示所述客户机指令的操作数。
6.根据权利要求1所述的主机系统,其中所述至少一个硬件处理器进一步经配置以响应于确定执行所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时,将由所述客户机指令指示的存储器地址写入到所述预定位置。
7.根据权利要求6所述的主机系统,其中所述存储器地址是位于所述虚拟机器的存储器空间内的客户机物理地址GPA,通过翻译由所述机器代码表示指示的虚拟地址而确定所述GPA。
8.根据权利要求6所述的主机系统,其中所述存储器地址是位于所述主机系统的物理存储器内的主机物理地址HPA,通过翻译由所述机器代码表示指示的虚拟地址而确定所述HPA。
9.根据权利要求6所述的主机系统,其中根据所述客户机指令的存储器位置确定所述存储器地址。
10.根据权利要求1所述的主机系统,其中所述至少一个硬件处理器进一步经配置以响应于确定执行所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时,将处理器寄存器的指示符写入到所述预定位置,所述寄存器由所述客户机指令指示。
11.根据权利要求1所述的主机系统,其中所述计算机安全程序在所述虚拟机器内执行。
12.根据权利要求1所述的主机系统,其中所述计算机安全程序在所述虚拟机器外部执行。
13.根据权利要求1所述的主机系统,其中所述预定位置包括所述至少一个硬件处理器的预定寄存器。
14.根据权利要求13所述的主机系统,其中所述预定寄存器是所述至少一个硬件处理器的模型特定寄存器MSR。
15.根据权利要求1所述的主机系统,其中所述预定位置包括所述主机系统的存储器的预定区段。
16.根据权利要求1所述的主机系统,其中所述预定位置包括指示所述虚拟机器的当前状态的数据结构。
17.一种保护主机系统免受计算机安全威胁的方法,所述方法包括:
响应于接收到用于执行的客户机指令,采用所述主机系统的至少一个硬件处理器以确定执行所述客户机指令是否导致存储器存取许可的违例,其中所述客户机指令在由所述主机系统暴露出的虚拟机器内执行;及
响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:
采用所述至少一个硬件处理器以将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;
采用所述至少一个硬件处理器以暂停对所述客户机指令的所述执行;及
响应于暂停对所述客户机指令的所述执行,切换到执行计算机安全程序,所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
18.根据权利要求17所述的方法,其中所述机器代码表示包括编码字段序列,且其中所述部分包括所述客户机指令的个别编码字段的内容。
19.根据权利要求17所述的方法,其中所述部分指示所述客户机指令的运算符。
20.根据权利要求17所述的方法,其中所述部分指示所述客户机指令的操作数。
21.根据权利要求17所述的方法,其中所述预定位置包括所述至少一个硬件处理器的预定寄存器。
22.一种主机系统的至少一个硬件处理器,所述至少一个硬件处理器可配置以:
响应于接收到用于执行的客户机指令,确定执行所述客户机指令是否导致存储器存取许可的违例,其中所述客户机指令在由所述主机系统暴露出的客户机虚拟机器内执行;及
响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:
将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;
暂停对所述客户机指令的所述执行;及
响应于暂停对所述客户机指令的所述执行,切换到执行计算机安全程序,其中所述计算机安全程序经配置以确定所述违例是否指示计算机安全威胁。
23.一种存储指令的非暂时性计算机可读媒体,所述指令在由主机系统的至少一个硬件处理器执行时致使所述主机系统形成计算机安全程序,所述计算机安全程序经配置以确定存储器存取许可的违例是否指示计算机安全威胁,且其中所述至少一个硬件处理器可配置以:
响应于接收到用于执行的客户机指令,确定执行所述客户机指令是否导致所述违例,其中所述客户机指令在由所述主机系统暴露出的虚拟机器内执行;及
响应于确定所述客户机指令是否导致所述违例,当执行所述客户机指令导致所述违例时:
将所述客户机指令的机器代码表示的一部分写入到可由所述计算机安全程序存取的预定位置;
暂停对所述客户机指令的所述执行;及
响应于暂停对所述客户机指令的所述执行,切换到执行所述计算机安全程序。
CN201580042152.0A 2014-08-18 2015-08-11 用于在退出虚拟机器后暴露当前处理器指令的系统及方法 Pending CN106575236A (zh)

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,801 US20160048679A1 (en) 2014-08-18 2014-09-18 Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
US14/489,801 2014-09-18
PCT/RO2015/050008 WO2016118032A2 (en) 2014-08-18 2015-08-11 Systems and methods for exposing a current processor instruction upon exiting a virtual machine

Publications (1)

Publication Number Publication Date
CN106575236A true CN106575236A (zh) 2017-04-19

Family

ID=55302381

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580042152.0A Pending CN106575236A (zh) 2014-08-18 2015-08-11 用于在退出虚拟机器后暴露当前处理器指令的系统及方法
CN201580042692.9A Pending CN106575237A (zh) 2014-08-18 2015-08-11 用于在退出虚拟机器后暴露当前处理器指令的结果的系统及方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580042692.9A Pending CN106575237A (zh) 2014-08-18 2015-08-11 用于在退出虚拟机器后暴露当前处理器指令的结果的系统及方法

Country Status (12)

Country Link
US (2) US20160048679A1 (zh)
EP (2) EP3183660A2 (zh)
JP (1) JP6496401B2 (zh)
KR (2) KR102116571B1 (zh)
CN (2) CN106575236A (zh)
AU (2) AU2015378729B2 (zh)
CA (2) CA2954510A1 (zh)
ES (1) ES2732876T3 (zh)
IL (2) IL249849A0 (zh)
RU (2) RU2017104753A (zh)
SG (2) SG11201700794SA (zh)
WO (2) WO2016118032A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596921A (zh) * 2020-12-17 2021-04-02 海光信息技术股份有限公司 系统调用处理方法及处理装置

Families Citing this family (34)

* 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
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
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
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
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
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
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
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
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
JP7035787B2 (ja) * 2018-05-14 2022-03-15 富士通株式会社 演算処理装置および演算処理装置の制御方法
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
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11221869B2 (en) 2020-03-25 2022-01-11 Red Hat, Inc. Memory efficient host virtual address management for hypercalls
US11886351B2 (en) 2020-03-25 2024-01-30 Red Hat, Inc. Memory efficient virtual address management for system calls
US20220308867A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Apparatus and method for managing unsupported instruction set architecture (isa) features in a virtualized environment
US12020059B2 (en) * 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
US20230334144A1 (en) * 2022-04-19 2023-10-19 Microsoft Technology Licensing, Llc Provisioning a security component from a cloud host to a guest virtual resource unit

Family Cites Families (44)

* 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
US7451324B2 (en) * 2002-05-31 2008-11-11 Advanced Micro Devices, Inc. Secure execution mode exceptions
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
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
US7620949B2 (en) * 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US7707341B1 (en) 2004-05-11 2010-04-27 Advanced Micro Devices, Inc. Virtualizing an interrupt controller
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
JP2009009232A (ja) * 2007-06-26 2009-01-15 Hitachi Ltd コンピュータとカーネル保護方法並びにコンピュータソフトウエア
US8261028B2 (en) 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US8307360B2 (en) 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
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
US8707457B2 (en) * 2010-05-09 2014-04-22 Citrix Systems, Inc. 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
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
KR20150038574A (ko) 2012-08-03 2015-04-08 놀쓰캐롤라이나 스테이트 유니버시티 타겟 디바이스의 능동 모니터링, 메모리 보호 및 무결성 검증을 위한 방법, 시스템 및 컴퓨터 판독 가능 매체
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596921A (zh) * 2020-12-17 2021-04-02 海光信息技术股份有限公司 系统调用处理方法及处理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN106575236A (zh) 用于在退出虚拟机器后暴露当前处理器指令的系统及方法
EP3314507B1 (en) Processors, methods, systems, and instructions to protect shadow stacks
US10635479B2 (en) Event filtering for virtual machine security applications
CN105393229B (zh) 虚拟机中的页面错误注入
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
CN112148636A (zh) 对面向返回的编程利用的缓解
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170419

WD01 Invention patent application deemed withdrawn after publication