CN109923546A - 虚拟机安全性应用程序的事件过滤 - Google Patents

虚拟机安全性应用程序的事件过滤 Download PDF

Info

Publication number
CN109923546A
CN109923546A CN201780069409.0A CN201780069409A CN109923546A CN 109923546 A CN109923546 A CN 109923546A CN 201780069409 A CN201780069409 A CN 201780069409A CN 109923546 A CN109923546 A CN 109923546A
Authority
CN
China
Prior art keywords
trial
event
qualified
response
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780069409.0A
Other languages
English (en)
Other versions
CN109923546B (zh
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
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 CN109923546A publication Critical patent/CN109923546A/zh
Application granted granted Critical
Publication of CN109923546B publication Critical patent/CN109923546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Abstract

所描述系统及方法允许保护硬件虚拟化系统免遭恶意软件的影响。一些实施例使用混合式事件通知/分析系统,其中在受保护虚拟机VM内执行的第一组件注册为因违反存储器存取权限而触发的处理器异常的处理程序,且其中在所述相应VM外部执行的第二组件注册为VM退出事件的处理程序。所述第一组件根据一组规则而过滤权限违反事件,且仅将被认为与安全性相关的事件通知所述第二组件。所述第二组件分析所通知事件以检测恶意软件。

Description

虚拟机安全性应用程序的事件过滤
相关申请案
本申请案主张于2016年12月19日提出申请的标题为“用于加速虚拟机中的计算机安全性操作的事件过滤器(Event Filter for Accelerating Computer SecurityOperations in Virtual Machines)”的第62,436,027号美国临时专利申请案的申请日期的权益,所述美国临时专利申请案的全部内容以引用的方式并入本文中。
背景技术
本发明涉及计算机安全性系统及方法,且明确地说,涉及用于保护虚拟机免受恶意软件攻击的系统及方法。
恶意软件(也被称为恶意软件(malware))在世界范围内影响大量计算机系统。在其许多形式(例如计算机病毒、隐匿程序(rootkit)、间谍软件及勒索软件)中,恶意软件给数百万计算机用户呈现严重风险,使其易受数据及敏感信息丢失、身份盗用及生产力损失以及其它侵害。计算机安全性软件可用于保护计算机系统免遭恶意软件的影响。
硬件虚拟化技术使得能够形成以许多方式表现为物理计算机系统的模拟计算机环境(通常称为虚拟机(VM))。在例如服务器合并及基础设施即服务(也俗称“云计算”)的典型应用程序中,数个虚拟机可在同一计算机系统上同时运行,从而在其当中共享硬件资源,因此减少投资及操作成本。每一虚拟机可独立于其它虚拟机而运行其自身的操作系统及/或软件应用程序。每一此VM潜在地需要保护措施来抵御计算机安全性威胁。
在受保护虚拟机外部放置计算机安全性软件通常确保高保护等级。然而,与非虚拟化环境相比,当以此类配置实施时,计算机安全性软件的操作基本上更复杂且计算上更昂贵。在常规硬件虚拟化反恶意软件系统中,在受保护VM内发生的安全性相关事件通常致使硬件处理器暂停执行相应VM,且切换到执行在受保护VM外部的安全性软件。接着,处理器可响应于事件分析而往回切换到执行受保护VM。频繁的VM暂停/重新开始循环会产生大量计算成本,且可影响生产力及用户体验。
对改进硬件虚拟化平台中的计算机安全性操作的效率存在极大兴趣。
发明内容
根据一个方面,一种主机系统包括硬件处理器及存储器。所述硬件处理器经配置以执行虚拟机(VM)、事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行。所述硬件处理器进一步经配置以:响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常;及响应于所述第一异常,从执行所述软件实体切换到执行所述事件过滤器.所述硬件处理器进一步经配置以响应于第二异常而从执行所述事件过滤器切换到执行所述自检引擎。所述事件过滤器经配置以响应于所述第一异常根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎。所述事件过滤器进一步经配置以响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常,及当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体。所述自检引擎经配置以确定所述尝试是否为恶意的。
根据另一方面,一种方法保护主机系统免受计算机安全性威胁。所述主机系统包括硬件处理器及存储器,所述硬件处理器经配置以执行虚拟机(VM)、事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行。所述方法包括:将所述硬件处理器配置成响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常。所述方法进一步包括:将所述硬件处理器配置成响应于所述第一异常而从执行所述软件实体切换到执行所述事件过滤器及响应于第二异常而从执行所述事件过滤器切换到执行所述自检引擎。所述方法进一步包括:响应于所述第一异常,采用所述事件过滤器来根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎。所述方法进一步包括:响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常,及当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体。所述方法进一步包括:响应于所述第二异常,采用所述自检引擎来确定所述尝试是否为恶意的。
根据另一方面,一种非暂时性计算机可读媒体存储有指令,所述指令在由公开虚拟机的主机系统的硬件处理器执行时致使所述主机系统形成事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行。所述自检引擎经配置以将所述硬件处理器配置成响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常。所述自检引擎进一步经配置以:将所述硬件处理器配置成响应于所述第一异常而从执行所述软件实体切换到执行所述事件过滤器及响应于第二异常而从执行所述事件过滤器切换到执行所述自检引擎。所述自检引擎进一步经配置以响应于所述第二异常而确定所述尝试是否为恶意的。所述事件过滤器经配置以响应于所述第一异常根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎。所述事件过滤器进一步经配置以:响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常,及当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体。
附图说明
在阅读以下详细说明后且在参考图式后将更好地理解本发明的前述方面及优点,在图式中:
图1图解说明根据本发明的一些实施例的主机系统的示范性硬件配置。
图2展示根据本发明的一些实施例的由在主机系统上执行的监控程序公开的一组来宾虚拟机(VM)及保护相应VM的一组安全性组件。
图3展示如图2中所图解说明的虚拟机配置中的示范性存储器地址转换。
图4展示根据本发明的一些实施例的示范性页表条目。
图5图解说明根据本发明的一些实施例的在受保护来宾虚拟机内执行的事件过滤器的示范性组件。
图6展示根据本发明的一些实施例的经执行以在主机系统上安装安全性软件且使安全性软件初始化的示范性步骤序列。
图7展示根据本发明的一些实施例的由事件过滤器执行的示范性步骤序列。
图8图解说明根据本发明的一些实施例的由事件过滤器的资格检查器组件执行的用以确定所拦截事件是否有资格被通知给自检引擎的示范性步骤序列。
图9展示根据本发明的一些实施例的由资格检查器执行的用以确定所拦截事件是否有资格被通知的另一示范性步骤序列。
图10展示根据本发明的一些实施例的由自检引擎执行的示范性步骤序列。
具体实施方式
在以下说明中,应理解,结构之间的所有所叙述连接可为直接操作连接或通关中间结构的间接操作连接。一组元素包含一个或多个元素。对元素的任何叙述应理解为是指至少一个元素。多个元素包含至少两个元素。除非另有需要,否则任何所描述方法步骤不需要一定以特定所图解说明次序执行。从第二元素导出的第一元素(例如,数据)涵盖等于所述第二元素的第一元素以及通过处理所述第二元素而产生的第一元素及任选地其它数据。根据参数做出确定或决策涵盖根据所述参数及任选地根据其它数据做出确定或决策。除非另外规定,否则一些数量/数据的指示符可为数量/数据本身,或与所述数量/数据本身不同的指示符。计算机安全性涵盖保护用户及设备免遭对数据及/或硬件的不期望或未授权存取、免遭对数据及/或硬件的不期望或未授权修改且免遭对数据及/或硬件的破坏。计算机程序是执行任务的一系列处理器指令。本发明的一些实施例中所描述的计算机程序可为独立式软件实体或其它计算机程序的子实体(例如,子例程、库)。除非另外规定,否则进程是计算机程序的实例,例如应用程序或操作系统的一部分,且由具有至少执行线程及指派给执行线程的虚拟存储器空间表征,其中相应虚拟存储器空间的内容包含可执行代码。除非另外规定,否则页表示可个别地映射到主机系统的物理存储器的最小虚拟存储器单元。当程序在虚拟机的虚拟处理器上执行时,程序被视为是在相应虚拟机内或在相应虚拟机内部执行。计算机可读媒体涵盖非暂时性媒体(例如磁性、光学及半导体存储媒体(例如,硬驱动器、光盘、快闪存储器、DRAM))以及通信链路(例如导电电缆及光纤链路)。根据一些实施例,本发明尤其提供计算机系统,所述计算机系统包括经编程以执行本文中所描述的方法的硬件(例如一或多个处理器),以及用以执行本文中所描述的方法的计算机可读媒体编码指令。
以下说明以实例方式且未必以限制方式图解说明本发明的实施例。
图1展示根据本发明的一些实施例的经保护免遭计算机安全性威胁的主机系统10的示范性硬件配置。主机系统10可表示例如企业服务器的公司计算装置或例如个人计算机、平板计算机或智能电话的最终用户装置。其它示范性主机系统包含游戏控制台、家用电器(例如智能TV)、可穿戴计算装置或具有存储器及处理器的任何其它装置。主机系统10可用于执行一组软件应用程序,例如浏览器、字处理应用程序及电子通信(例如,电子邮件、即时消息)应用程序以及其它。在一些实施例中,主机系统10经配置以支持硬件虚拟化且公开一组虚拟机,如下文所展示。
为简单起见,图1图解说明计算机系统;其它主机系统(例如智能电话及平板计算机)的硬件配置可不同。系统10包括全部通过控制器集线器24互连的一组物理装置,包含处理器12、存储器单元18、一组输入装置14、一组输出装置16、一组存储装置20及一组网络适配器22。处理器12包括经配置以利用一组信号及/或数据来执行计算及/或逻辑操作的物理装置(例如,微处理器、半导体衬底上形成的多核集成电路)。在一些实施例中,此类逻辑操作以一系列处理器指令(例如机器代码或其它类型的软件)的形式递送到处理器12。存储器单元18可包括存储由处理器12在执行指令时存取或产生的数据/信号的易失性计算机可读媒体(例如,RAM)。
输入装置14可包含计算机键盘、鼠标及麦克风以及其它,其包含允许用户将数据及/或指令引入到主机系统10中的相应硬件接口及/或适配器。输出装置16可包含允许主机系统10将数据传递到用户的显示装置(例如监视器及扬声器以及其它)以及硬件接口/适配器(例如图形卡)。在一些实施例中,输入装置14及输出装置16可共享一件共同硬件,如在触摸屏装置的情形中。存储装置20包含实现处理器指令及/或数据的非易失性存储、读取及写入的计算机可读媒体。示范性存储装置20包含磁盘及光盘及快闪存储器装置以及可移除媒体(例如CD及/或DVD磁盘及驱动器)。所述组网络适配器22使得主机系统10能够连接到计算机网络及/或其它装置/计算机系统。控制器集线器24一般表示多个系统、外围设备及/或芯片集总线,及/或实现处理器12与装置14、16、18、20及22之间的通信的所有其它电路。举例来说,控制器集线器24可包含存储器管理单元(MMU)、输入/输出(I/O)控制器及中断控制器以及其它。在另一实例中,控制器集线器24可包括将处理器12连接到存储器18的北桥及/或将处理器12连接到装置14、16、20及22的南桥。在一些硬件平台中,MMU部分地或完全地与处理器12集成在一起,即,MMU与处理器12共享共同半导体衬底。
图2展示根据本发明的一些实施例的其中一组安全性组件协作以保护一组虚拟机免遭计算机安全性威胁的示范性配置。所图解说明的主机系统10使用硬件虚拟化技术来操作监控程序30所公开的一组来宾虚拟机(VM)32a、32b。尽管图2经草拟以展示仅两个来宾VM,但一些实施例可代管同时操作的更多个VM(例如,数百个)。使用监控程序来管理多个虚拟机在应用程序(例如云计算及服务器合并以及其它)中是常见的。流行监控程序的实例包含来自威睿公司(VMware Inc.)的VMware及开源Xen监控程序以及其它。
虚拟机在此项技术中称为是对能够运行操作系统及其它应用程序的实际物理机器/计算机系统的仿真。在一些实施例中,监控程序30包含经配置以创建或实现多个虚拟化装置(例如虚拟处理器及虚拟控制器)并代替主机系统10的真实物理装置而将此类虚拟化装置呈现给软件的软件。监控程序30的此些操作在此项技术中通常称为公开虚拟机。监控程序30通常允许主机系统10的硬件资源被多个虚拟机多路复用(共享)。监控程序30可进一步管理主机系统10的硬件,使得每一来宾VM 32a、32b独立地操作且不知晓同时在主机系统10上执行执行的其它VM。
每一虚拟化装置(例如,处理器、输入、输出、存储装置等)仿真主机系统10的相应物理装置的功能性中的至少一些功能性。举例来说,在来宾VM的虚拟化处理器上执行的软件可经由虚拟化网络适配器而发送及/或接收网络业务。在一些实例中,监控程序30可向每一来宾VM公开虚拟化装置的仅一子组(举例来说,仅虚拟化处理器、存储器及控制器集线器的若干部分)。监控程序30还可将主机系统10的一些硬件装置的直接及专用权赋予所选择VM。在一个此类实例中,来宾VM 32a(图2)可具有输入装置14及输出装置16的专用权,但缺少虚拟化网络适配器。同时,来宾VM 32b可具有网络适配器22的直接及专用权。此类配置可(举例来说)使用来自技术而实施。
在一些实施例中,公开每一来宾VM 32a、32b包括配置监控程序30所使用的数据结构以管理相应来宾VM的操作。此结构在本文中将称为虚拟机状态对象(VMSO)。示范性VMSO包含平台上的虚拟机控制结构(VMCS)及平台上的虚拟机控制块(VMCB)。在一些实施例中,处理器16使存储器中的区域与每一VMSO相关联,使得软件可使用存储器地址或指针(例如,平台上的VMCS指针)来提及特定VMSO。
每一VMSO可包括表示主机系统10上公开的相应虚拟化处理器的当前状态的数据。在多线程配置中,硬件处理器12可操作多个核心,每一核心进一步包括多个逻辑处理器,其中每一逻辑处理器可独立于其它逻辑处理器及与其它逻辑处理器同时处理执行线程。多个逻辑处理器可共享一些硬件资源,举例来说,共同MMU。在多线程实施例中,可针对每一相异逻辑处理器而设置相异VMSO。相应VMSO可包括来宾状态区及主机状态区,来宾状态区保存相应VM的CPU状态,且主机状态区存储监控程序30的当前状态。在一些实施例中,VMSO的来宾状态区包含相应VM的虚拟处理器的控制寄存器(例如,CR0、CR3等)、指令指针(例如,RIP)、通用寄存器(例如,EAX、ECX等)及状态寄存器(例如,EFLAGS)的内容以及其它。VMSO的主机状态区可包含指向经配置用于相应VM的地址转换的页表的指针(例如,平台上的EPT指针)。
在一些实施例中,处理器12可将VMSO的一部分存储在专用内部寄存器/高速缓冲存储器内,而相应VMSO的其它部分可驻存在存储器18中。在任何给定时间,可将最多一个VMSO(在本文中称为当前VMSO)加载到逻辑处理器上,从而识别当前具有对相应逻辑处理器的控制的虚拟机。当处理器12从执行第一VM切换到执行第二VM或监控程序30时,处理器12可将第一VM的当前状态保存到当前VMSO的来宾状态区。
所图解说明来宾VM(图2)中的每一者可分别执行来宾操作系统(OS)34a、34b。操作系统34a、34b可包括任何广泛可用的操作系统,例如Microsoft 以及其它。每一OS 34a、34b提供在相应VM内执行的应用程序与相应VM的(虚拟化)硬件装置之间的介接。一组示范性应用程序36a、36b一般表示任何软件应用程序,例如字处理、图像处理、媒体播放器、数据库、日历、个人联系人管理、浏览器、游戏、语音通信、数据通信及计算机安全性应用程序以及其它。在以下说明中,在虚拟机的虚拟处理器上执行的软件视为是在相应虚拟机内执行。举例来说,在图2的实例中,应用程序36a视为是在来宾VM 32a内执行,而应用程序36b视为是在来宾VM 32b内执行。相比之下,监控程序30视为是在来宾VM 32a、32b外部或在来宾VM 32a、32b下方执行。
在一些实施例中,多个安全性组件协作以保护来宾VM 32a、32b免遭计算机安全性威胁(例如恶意软件)。图2将此些安全性组件图解说明为分别在来宾VM 32a、32b内执行的一组事件过滤器42a、42b及在来宾VM 32a、32b外部执行的自检引擎40。自检引擎40可进一步包含通知处理程序44。在一些实施例中,每一事件过滤器42a、42b检测在相应来宾VM内执行软件期间某些事件的发生。过滤器42a、42b所拦截的示范性事件包含处理器异常及/或中断、调用OS 34a、34b的某些功能、存取OS 34a、34b的注册表、从远程位置下载文件及将数据写入到文件以及其它。在一些实施例中,过滤器42a、42b在相应操作系统的处理器特权级别(例如,内核模式)执行。
事件过滤器42a、42b可根据一组规则而过滤所检测到事件,以识别尤其与计算机安全性相关的事件子组,且将所选择事件子组的发生通知自检引擎40。在一些实施例中,自检引擎40分析所接收通知以确定相应事件是否指示恶意软件攻击。引擎40还可执行其它安全性相关操作,例如,确定含有在来宾VM内执行的软件对象的一部分的存储器区段的地址、存取相应存储器区段及分析相应存储器区段内所存储的内容。由自检引擎40执行的安全性操作的其它实例包含拦截及/或限制对某些存储器区段的存取,例如,阻止对属于受保护进程的代码或数据的盖写,及阻止某些存储器页中所存储的代码的执行。
单个自检引擎40可保护在主机系统10上执行的多个来宾VM。引擎40可并入到监控程序30中(举例来说,作为一组库),或可作为不同于且独立于监控程序30但在监控程序30的处理器特权级别执行的计算机程序而递送。引擎40可或可不是进程(具有单独经调度执行线程)。在一些实施例中,引擎40包括在被某些处理器事件触发时执行的未调度代码对象的集合。下文进一步详细描述事件过滤器42a、42b及自检引擎40的操作。
现代处理器实施处理器特权级别的分级,此项技术中也称为保护环。每一此类环或级别由允许在相应环内执行的软件执行的一组动作及/或处理器指令表征。示范性特权级别/环包含用户模式(环3)及内核模式(环0)。经配置以支持硬件虚拟化的一些主机系统可包含具有最高处理器特权的额外环(例如,环-1、根模式、或平台上的VMXroot)。在一些实施例中,监控程序30以最高特权级别(环-1)控制处理器12,从而创建作为虚拟机向在主机系统10上执行的其它软件公开的硬件虚拟化平台。操作系统(例如图2中的来宾OS34a)通常以比监控程序30低的处理器特权(例如,在环0或内核模式中)在相应VM的虚拟环境内执行。常见用户应用程序(例如应用程序36a)通常以比OS 34a低的处理器特权(例如,在环3或用户模式中)执行。当软件对象尝试执行需要比其所指派保护环所允许更高的处理器特权的动作或指令时,所述尝试通常产生处理器事件(例如,异常或错误),这会将对处理器12的控制转移到在具有足够特权的环中执行的实体(例如,操作系统的事件过滤器)以便执行相应动作。
明确地说,一些处理器指令的执行需要监控程序30的特权级别(例如,VMXroot)。此类指令的实例包含平台上的VMCALL。在一些硬件系统中,从虚拟机内调用此指令会产生特定类型的错误,称为虚拟机退出事件(例如,平台上的VMExit)。VM退出事件暂停相应虚拟机的执行且通常以监控程序30的处理器特权级别将处理器12切换到执行在相应VM外部的处理程序例程。
在一些硬件平台中,VM退出可由其它类型的事件(例如违反存储器存取权限)触发。在一个此类实例中,当在VM内执行的软件对象尝试将数据写入到标记为不可写入的存储器页或执行来自标记为不可执行的存储器页的代码时,处理器12可产生页错误,且作为响应,暂停相应VM的执行并切换到执行监控程序30。此类退出机制可允许(举例来说)计算机安全性程序在相应VM外部执行(例如自检引擎40)以保护虚拟机免遭安全性威胁。在一些实施例中,自检引擎40拦截在VM内部执行软件期间发生的VM退出事件,且可能地在不知晓VM内软件的情况下进一步分析此类事件。在事件指示攻击的情形中,引擎40可采取几个减轻威胁的动作,例如暂停相应来宾VM的执行、切断去往及/或来自相应来宾VM的通信、将清除代理注入到相应来宾VM中、警示主机系统10的用户等。
对于硬件虚拟化最优的现代计算平台经配置还产生由特权指令触发及/或因违反存储器存取权限而触发的另一种类的处理器事件。此类处理器事件通常称为虚拟化异常(例如,平台上的#VE),且致使处理器从执行来宾VM内的软件切换到执行也在相应来宾VM内的处理程序例程,从而避免通常与VM退出事件相关联的计算成本。此类处理器可配置以响应于各种情况而选择性地产生VM退出事件或虚拟化异常。
虚拟机通常利用虚拟化物理存储器(此项技术中也称为来宾物理存储器)来操作。虚拟化物理存储器包括实际物理存储器18的抽象表示,举例来说,作为特定用于每一VM的连续地址空间、具有映射到物理存储器18及/或物理存储装置20内的地址的所述空间的部分。在现代硬件虚拟化平台中,此映射通常经由受处理器12控制的专用数据结构及机制而实现,称为二级地址转换(SLAT)。流行SLAT实施方案包含平台上的扩展页表(EPT)及平台上的快速虚拟化索引(RVI)/嵌套页表(NPT)。在此些系统中,虚拟化物理存储器可以此项技术中称作页的单元进行分割,页表示经由SLAT而个别地映射到物理存储器的虚拟化物理存储器的最小单元,即,以页粒度执行物理与虚拟化物理存储器之间的映射。所有页通常具有预定大小,例如,4千字节、2兆字节等。将虚拟化物理存储器分割成页通常是由监控程序30配置。在一些实施例中,监控程序30还配置SLAT结构及因此物理存储器与虚拟化物理存储器之间的映射。在一些实施例中,将指向SLAT数据结构(例如,指向页表)的指针存储在相应虚拟机的VMSO内。虚拟化物理存储器地址到物理存储器地址的实际映射(转换)可包括在主机系统10的转换后援缓冲器(TLB)中查找物理存储器地址。在TLB遗漏的情形中,地址转换包括执行页走查(其包含在一组页表及/或页目录中进行的一组连续地址查找),及执行计算(例如将页的位移加到关于相应页的地址)。
图3图解说明如图2中所展示的实施例中的存储器地址的映射。来宾VM 32一般表示在主机系统10上执行的任何来宾虚拟机,举例来说,图2中的VM 32a、32b。在由监控程序30公开后,来宾VM 32将虚拟化物理存储器空间118视为其自己的物理存储器空间。在来宾VM 32内执行的软件对象(例如,进程)被相应VM的来宾OS 34指派有虚拟存储器空间218。当软件对象尝试存取空间218a的示范性存储器页50a的内容时,来宾VM 32的虚拟化处理器根据由来宾OS 34配置及控制的页表而将页50a的地址转换成虚拟化物理存储器空间118的页50b的地址。物理处理器16使用由监控程序30配置的SLAT将页50b的地址进一步映射到物理存储器18内的页50c的地址。
虚拟地址空间118在此项技术中通常称为来宾物理存储器,且一个此类存储器空间内的地址称为来宾物理地址(GPA)。地址空间218通常称为来宾虚拟存储器,且通过来宾虚拟地址(GVA)而索引。物理存储器18内的地址通常称为主机物理地址(HPA)。因此,图3中的地址转换/映射52称为GVA转GPA转换。相比之下,地址转换54通常称为GPA转HPA转换。
地址转换52及54依赖于存储器分页机制及页表的利用。页表是通常以页表条目集合的形式存储虚拟与物理存储器页之间的映射的数据结构。页表条目的格式可在不同硬件平台间及/或在不同OS版本间变化。图4中图解说明示范性页表条目51。每一此类页表条目可对应于一虚拟存储器页,举例来说,对应于图3中的存储器空间218内的页50a。在一些实施例中,页表条目51包括存储地址A及一组旗标F以及其它的一组字段。地址A通常为物理地址;在硬件虚拟化平台中,地址A可表示GPA。在实施分级页表的系统中,地址A可指示另一页表的地址。旗标字段的内容在若干实施方案当中不同。在一些实施例中,旗标是指示以下内容的控制位:举例来说,相应页是否存在于存储器中(而非杯换出到磁盘)、从相应页最后被换入以来相应页的内容是否已改变、存取相应页内的地址的尝试是否出错(例如VMexit或虚拟化异常)、相应页是否可由在用户模式中执行的进程存取等。其它旗标/控制位可指示一组存储器存取权限(例如,读取、写入、执行)。在一些实施例中,页表条目51可进一步存储相应存储器空间的识别符(例如,进程ID)及/或操作系统的存储器管理组件所使用的各种统计信息。
在一些实施例中,监控程序30设置其自己的虚拟存储器空间318(包括对物理存储器18的表示),且采用转换机制(举例来说,页表)将空间318中的地址映射到物理存储器18中的地址。在图3中,此示范性映射将虚拟空间318内的页50f的地址转换成页50c的物理地址,且将页50d的地址转换成页50e的物理地址。此些映射允许以监控程序30的处理器特权级别执行的潜在地任何软件对象管理属于在主机系统10上运行的各种VM内执行的软件对象的存储器页。明确地说,存储器自检引擎40可枚举在来宾VM32内执行的进程所使用的物理存储器页、从所述物理存储器页进行读取、向所述物理存储器页进行写入及控制对所述物理存储器页的存取。
图5展示根据本发明的一些实施例的事件过滤器42的示范性组件。过滤器42可一般表示图2中的事件过滤器42a、42b中的任一者。在一些实施例中,事件过滤器42利用处理器12注册为经配置以处置相应来宾VM的虚拟化异常的软件组件。此注册意指当在相应来宾VM内执行来宾进程期间发生的事件触发虚拟化异常时,处理器12暂停相应来宾进程的执行且切换到执行过滤器42。过滤器42可包含资格检查器46及连接到资格检查器46的通知产生器48。
在一些实施例中,资格检查器46经配置以过滤触发虚拟化异常的事件,以产生被视为恶意软件指示或以其它方式与计算机安全性相关的事件子组。举例来说,示范性安全性相关事件可包含盖写页表条目的字段的尝试、执行关键OS组件(例如存储器分配功能)的尝试、从特定存储器区段读取代码、将代码写入到特定存储器区段或执行代码的尝试等。通知产生器48可经配置以将由资格检查器46产生的所选择事件子组的发生通知自检引擎40。通知机制可采用硬件虚拟化技术中已知的任何方法,例如经由特权处理器指令(例如VMCALL)而触发VM退出事件。通知产生器48可(举例来说)通过将相应数据写入到过滤器42与引擎40之间共享的预定存储器区段而将数据(例如所通知事件的细节或参数)发射到自检引擎40。
在一些实施例中,事件过滤器42进一步包括经配置以仿真触发虚拟化异常的事件的发生的仿真器47。由于异常通常在相应事件导致对存储器及/或对处理器的状态的改变之前被触发,因此可需要仿真。在其中虚拟化异常因违反存储器存取权限而触发的一个实例中,处理器指令(例如MOV,其将致使数据被写入到被认为不可写入的位置)在将任何数据写入到相应位置之前产生虚拟化异常。简单地重新启动相应进程/应用程序将产生重新执行出错指令的尝试,这又将触发新的异常。为避免此无限循环,一些实施例在重新启动最初触发异常的进程/应用程序之前使用仿真器47来仿真相应事件的发生。在以上实例中,仿真器47可影响因MOV指令的实际执行原本已造成的改变,即,仿真器47可实际上将数据写入到其预期存储器位置。
图6展示根据本发明的一些实施例的经执行以设置主机系统10上的计算机安全性的示范性步骤序列。在典型情景中,系统管理员可在需要保护的每一主机上安装安全性应用程序。安全性应用程序可包括各种组件,例如监控程序30、自检引擎40、事件过滤器42等。所图解说明的步骤序列可(举例来说)通过相应安全性应用程序的安装程序实用工具而执行。安装程序可首先以最强处理器特权级别(例如,根模式、环-1)接管处理器12,并安装监控程序30。接着,安装程序可启动自检引擎40。
在一些实施例中,监控程序30及/或自检引擎40使用安全引导机制或此项技术中已知的另一验证形式来启动,以确保相应软件组件的可信度。安全引导可包括与远程验证服务器的验证交换(例如,散列检验)。在一个示范性实施例中,安全引导可采用主机系统10的安全存储硬件组件(例如平台上的受信任平台模块(TPM)),且进一步采用完整性证明机制(例如的受信任执行技术(TXT))。
响应于启动每一来宾VM,步骤407安装经配置以处置在相应VM内发生的虚拟化异常的事件过滤器42。在一些实施例中,事件过滤器42可被秘密地放入到相应来宾VM中,以避免过滤器42被可能恶意软件检测到。为实现此注入,自检引擎40可将过滤器42隐藏在存储器的未使用区段内或当前由另一软件对象(例如驱动程序)使用的存储器页内。
在一些实施例中,自检引擎通过将过滤器42与在相应VM内执行的其它组件隔离而保护事件过滤器42。在一个实例中,引擎40使用SLAT手段来设置不同于相应来宾VM所使用的来宾物理存储器空间(例如,不同于如图3中所图解说明的实施例中的空间118)的影子存储器空间。实际上,设置此影子存储器空间可包含引擎40配置指派给事件过滤器42的二级页表(例如,平台上的EPT)。利用相异页表来操作会将过滤器42与在VM 32内执行的任何其它进程隔离,在此意义上,此些进程无法修改属于事件过滤器42的数据。将过滤器42隔离可进一步包括在执行过滤器42时将处理器12配置成从使用与VM 32相关联的页表切换到使用影子页表来执行地址转换。切换页表可在不使来宾VM 32退出的情况下发生,因此不会产生VM退出事件的计算成本。可实现页表切换的一个示范性包含事件过滤器42发出特定特权指令(例如,平台上的VMFUNC),这可被处理器12解译为对切换的暗示。
在步骤序列408-410中,自检引擎40可继续识别存储对于相应来宾VM的安全性来说重要的资产的一组存储器页。此类资产的实例包含属于OS的执行以下操作的功能的代码,所述操作例如存储器分配、存储器权限管理及注册表编辑,例如,NTDLL.DLL及KERNEL32.DLL库的选定功能。在OS中,安全性相关功能可包含LIBC.SO的选定功能。被视为对于安全性来说重要的其它资产包含与在来宾VM内执行的进程相关联的页表。
一些资产(例如OS的特定功能)的存储器位置可通过剖析OS 34的某些数据结构而获得。自检引擎40可进一步保持跟踪当前加载于相应来宾VM内及/或在相应来宾VM内执行的一组进程。一些实施例可使用此项技术中已知的任何方法来收听指示来宾VM内的新进程/线程的启动的事件。一些示范性实施例拦截管理活动进程列表的OS的机制。举例来说,在中,每次创建进程时,将相应进程的指示符插入到活动进程列表中;在相应进程结束候即刻从所述列表移除所述指示符。在一些实施例中,在启动进程后,OS 34还即刻设置进程特有数据结构(称为进程环境块(PEB)),所述进程特有数据结构包括OS 34用来管理与相应进程相关联的资源的数据。通过拦截用以将目标进程插入到活动进程列表中的OS指令,引擎40可获得进一步信息,例如相应PEB的存储器地址。在中,PEB的虚拟地址存储在称为执行体进程块(EPROCESS)的数据结构中。通过进一步剖析此类数据结构,自检引擎40可获得例如相应进程的主可执行文件及/或相应进程所加载的库的存储器位置以及与相应进程相关联的页表(举例来说,x86平台中的页目录基址寄存器(PDBR))的存储器位置等信息。
对应于当前所加载及/或执行的各种进程的页表条目的存储器位置可(举例来说)通过读取处理器12的控制寄存器(例如,x86平台中的CR3寄存器)的内容及执行页表走查而获得。替代实施例可从相应EPROCESS结构的特定字段读取与每一进程相关联的页表的地址。
为促进安全性关键资产的存储器位置的确定,自检引擎40可与过滤器42协作,或可将帮助程序对象放入到相应来宾VM中。此等策略经设计以桥接语义间隙。通常从相应VM外部的位置发现关于虚拟机的内部工作的信息比从相应VM内发现难得多。例如在VM内执行的事件过滤器42的组件可使用OS的设施来获得例如各种资产的存储器地址等信息,并接着使用本文中所描述的通知机制将此信息传递到自检引擎40。
在一些实施例中,在步骤410(图6)中,自检引擎40及/或过滤器42可汇编受保护存储器区段的名单,所述名单包括含有受保护资产的若干部分的存储器区段的枚举。示范性名单条目可包括所述区段的存储器地址(或存储器页的识别符及相对于页边界的位移)及相应区段的大小的指示符。存储器地址可包含GPA、HPA等。受保护区段的大小可小于页大小。名单条目可进一步包括相应区段(例如,驱动程序、页表、私人数据等)内所存储的资产类型的指示符。名单条目中包含资产类型指示符可通过允许过滤器42根据受保护资产的类型而选择性地应用事件资格准则(举例来说)以便以不同于保护用户的私人文件的方式保护页表来促进事件过滤器42的执行。在一些实施例中,动态地更新名单:当出现新资产(例如,经由新进程启动)时,识别存储受保护资产的若干部分的区段且将所述区段添加到名单。当资产不再需要保护时(例如,当进程结束时)或当相应资产移动到另一存储器位置时,可从名单移除对应于废弃区段的条目。
响应于确定安全性关键对象的存储器位置,步骤412可设定对受保护存储器区段的存取权限。由于在大部分当前计算系统中,权限可仅以页粒度设定,因此步骤412可包括设定对代管相应存储器区段的存储器页的存取权限。这可(举例来说)使用由监控程序30所配置的SLAT机制进行。权限可经设定以允许事件过滤器42检测以被视为不当或恶意软件指示的方式存取受保护存储器区段的尝试。为防止数据从受保护区段的未授权读取(例如,为避免数据盗用或勒索软件攻击),示范性实施例可将代管相应数据的存储器页标记为不可读。从相应页读取数据的尝试随后将触发处理器异常/错误,所述处理器异常/错误可充当尝试的指示符。为检测对页表条目的尝试修改,代管相应页表条目的存储器页可标记为不可写入。因此,向相应存储器页进行写入的任何尝试将启用对尝试的检测。类似地,为检测执行某一OS功能的尝试,一些实施例将含有相应功能的代码的页标记为不可执行。
在一些实施例中,在步骤414(图6)中,自检引擎40可将处理器12配置成响应于违反此类存储器存取权限而触发虚拟化异常。另一步骤416可将事件过滤器42注册为虚拟化异常的处理程序且将通知处理程序44注册为VM退出事件的处理程序。响应于此些注册,存储器存取权限的违反将由事件过滤器42而非自检引擎40处置。同时,VM退出事件将经由通知处理程序44而通知自检引擎40。
图7展示在本发明的一些实施例中的由事件过滤器42执行的示范性步骤序列。在已注册为虚拟化异常的处理程序之后,事件过滤器42检测在来宾软件的执行期间触发虚拟化异常的事件的发生。此类事件在本文中将称为触发事件。响应于检测到触发事件,在步骤序列436-438中,过滤器42可确定相应触发事件的事件类型以及一组事件参数。在一些实施例中,当前虚拟化异常的原因的指示符存储在相应来宾VM的VMSO的特定字段中。因此,可从相应来宾VM的VMSO的某些字段提取关于事件的本质的线索。在其中异常由向标记为不可写入的页进行写入的尝试触发的实例中,事件参数可包含写入尝试的存储器地址以及处理器曾尝试写入到相应存储器位置的值。
在一些实施例中,事件过滤器42选择性地将被视为与安全性相关的一子组触发事件的发生通知自检引擎40。可根据一组资格准则而选择事件,且可仅将被认为有资格的事件传递到自检引擎40。响应于检测到被视为没有资格被传递到自检引擎40的触发事件的发生,一些实施例采用仿真器47来仿真所检测到事件(图7中的步骤444)。随后,过滤器42可发信号通知处理器12重新开始在相应VM内执行来宾软件而不触发VM退出。当事件满足资格准则时,在步骤442中,一些实施例产生VM退出事件,从而将相应触发事件的发生通知自检引擎40。举例来说,产生VM退出事件可包括过滤器42发出特权处理器指令,例如平台上的VMCALL。为将事件参数传递到引擎40,事件过滤器42的一些实施例在产生VM退出事件之前将相应参数写入到在过滤器42与自检引擎40之间共享的存储器区段。
图8-9图解说明根据本发明的一些实施例的由资格检查器46(图5)执行的用以确定所检测到触发事件是否有资格被通知给自检引擎40的示范性步骤序列。此些序列可作为图7中的步骤440的一部分而执行。图8-9两者均假设所拦截触发事件包括以违反存取权限的方式存取存储器的尝试,举例来说,向标记为不可写入的页进行写入的尝试。
在步骤452(图8)中,检查器46可识别产生异常的存储器页,即,为存取尝试的目标的存储器页。作为响应,检查器46可查找当前受保护存储器区段的名单,以确定目标存储器页是否含有受保护存储器区段,即受保护资产的至少一部分。当目标存储器页未保存任何受保护资产时,在步骤460中,过滤器可确定当前触发事件没有理由被通知给自检引擎40。当目标存储器页含有受保护资产的一部分时,另一步骤456可(举例来说)根据存取尝试的地址而确定触发事件是否包括实际存取受保护存储器区段的尝试。当不包括时,触发事件可被认为没有资格。相比之下,当触发事件相当于存取受保护存储器区段的尝试时,检查器46可确定当前触发事件有资格被通知。
图9展示根据本发明的一些实施例的由资格检查器46执行的用以确定事件是否有资格被通知的另一示范性步骤序列。图9的实例致力于保护页表免遭恶意修改。在一些实施例中,示范性有资格触发事件包括改变页表条目的旗标/控制位(例如,表示性质的位,例如存在/换出、读取/写入、执行-停用、用户/管理程序)的值的尝试。其它示范性有资格触发事件包括盖写相应页表条目的物理地址字段(图4中的A字段)的尝试。此些动作通常指示尝试劫持相应进程的执行、将代码注入到相应进程的存储器空间中等的恶意软件。
图10展示根据本发明的一些实施例的由自检引擎40执行的示范性步骤序列。引擎40可等待来自过滤器42的通知,所述通知指示相应来宾VM内发生特定类型的触发事件,相应触发事件被认为有资格由事件过滤器42做出通知。响应于通知,在步骤486中,引擎40可分析相应事件以确定相应事件是否指示计算机安全性威胁。此分析可采用此项技术中的任何方法,举例来说各种试探及决策树、事件相关性方法、机器学习算法等。在步骤486中,自检引擎40可使用事件过滤器42所传递的事件参数及/或可执行其自己的取证活动以发现关于当前触发事件或一般来说关于当前在相应来宾VM内执行的软件的额外信息。在一个示范性分析中,其中所通知事件包括盖写页表条目的控制位的尝试,在步骤486中,引擎40可确定相应尝试是由OS作为正当存储器管理操纵而执行还是由另一软件实体执行,在由另一软件实体执行的情形中,所述尝试可被视为恶意软件指示。
当步骤486的分析确定相应触发事件不指示安全性威胁时,在一些实施例中,自检引擎40可仿真相应触发事件,并指导处理器12重新开始执行相应来宾VM。当事件指示威胁时,引擎40可采取保护动作来减轻威胁(举例来说,执行清除操作以移除在相应来宾VM内执行的恶意软件代理或以其它方式使在相应来宾VM内执行的恶意软件代理无用、通知主机系统10的用户等)。
以上所描述的示范性系统及方法允许主机系统(例如,计算机或智能电话)在以硬件虚拟化配置操作时高效地执行计算机安全性任务。主机系统经配置以执行来宾虚拟机内的操作系统及一组软件应用程序。在一些实施例中,安全性应用程序包括至少两个组件:在相应虚拟机内执行的事件过滤器及在相应虚拟机外部执行的自检引擎(举例来说,处于监控程序的级别或处于单独虚拟机中)。处理器可经配置以响应于检测到以违反存取权限的方式存取存储器的尝试而产生虚拟化异常。一些实施例将事件过滤器组件注册为虚拟化异常的处理程序。
计算机安全性通过设定对存储属于受保护对象的数据的存储器区段的存取权限而得以加强。以违反相应存取权限的方式存取受保护存储器区段中的任一者的尝试会触发虚拟化异常,且因此被事件过滤器检测到。在一些实施例中,事件过滤器根据一组资格准则而过滤所检测到存储器存取尝试以选择被认为可疑或恶意软件指示的存取尝试子组。举例来说,示范性有资格事件可包含盖写用于执行在虚拟机内执行的进程的存储器地址转换的页表条目的尝试。(举例来说)经由超级调用而将被认为有资格的事件通知在受保护虚拟机外部执行的自检引擎。自检引擎可分析所通知事件以确定所通知事件是否指示恶意攻击。
一般来说,在虚拟机外部执行的软件组件比在相应VM内部执行的组件基本上更不易受在VM内执行的恶意软件攻击。因此,从安全性角度来说,将重要安全性组件放置在受保护VM外部可是有利的。然而,将数据传递到在相应VM外部执行的组件及/或将安全性相关事件的发生发信号通知在相应VM外部执行的组件通常需要VM退出,就计算资源来说VM退出是相对昂贵的。
常规计算机安全性软件通常完全放置在受保护虚拟机内部或完全放置在受保护虚拟机外部。与此类系统相比,本发明的一些实施例包括混合配置,其中一个组件(事件过滤器)在受保护VM内执行,而另一组件(自检引擎)在受保护VM外部执行。事件检测由所述内部组件执行,而所拦截事件的大量分析由所述外部组件执行。此类配置可实现安全性与速度之间的平衡,从而在不折损安全性的情况下改进用户体验。为进一步增大安全性,一些实施例使内部组件的大小及复杂性最小化。在优选实施例中,事件过滤器仅充当用以选择用于通知自检引擎的事件子组的过滤器。在不知晓在VM内执行的操作系统或恶意软件的情况下,此轻量组件可相对易于注入到受保护VM中。接着,可由外部组件(即自检引擎)执行更复杂事件分析。
本发明的一些实施例依赖于以下观察:并非在来宾软件的执行期间检测到的所有事件均有理由付出使VM退出的代价。举例来说,由于存储器存取权限可仅以页粒度设定,因此保护仅占据存储器页的一小部分的项目可因存取同一存储器页内所代管的其它项目的正当尝试而无意地造成大量权限违反。在另一实例中,并非对页表的所有修改均可疑;作为正当存储器管理活动的一部分,操作系统会频繁地对控制位及地址做出改变。将正当事件通知安全性软件会不必要地消耗计算资源。
因此,一些实施例采用虚拟化异常机制作为过滤器来避免不必要的VM退出。过滤器以用于确定事件是否应在VM外部被通知的特定资格准则而操作。举例来说,在受保护VM内执行的事件过滤器可分析每一所检测到存储器存取违反,并确定其实际上是否由存取受保护项目的尝试造成而非由存取同一页内所存储的其它数据的尝试造成。当试图保护页表时,事件过滤器可检查所尝试修改的目标是否为特定项目(例如,某一控制位)。接着,过滤器可仅将有资格的事件传递到存储器自检引擎。
本发明的一些实施例的应用程序可远扩展到计算机安全性领域之外。通过避免大比例的VM退出事件,事件过滤器通常可加速硬件虚拟化平台的操作。用于选择哪些VM内事件在内部进行处理(或被忽略)及哪些事件在外部被通知的准则可经调谐以实现所要最优化。
所属领域的技术人员将清楚,可在不背离本发明的范围的情况下以许多方式更改以上实施例。因此,本发明的范围应由所附权利要求书及其法律等效内容来确定。

Claims (21)

1.一种主机系统,其包括硬件处理器及存储器,所述硬件处理器经配置以执行虚拟机VM、事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行,所述硬件处理器进一步经配置以:
响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常;
响应于所述第一异常,从执行所述软件实体切换到执行所述事件过滤器;及
响应于第二异常,从执行所述事件过滤器切换到执行所述自检引擎,
其中所述事件过滤器经配置以:
响应于所述第一异常,根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎;
响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常;及
响应于确定所述尝试是否有资格被通知,当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体,且其中所述自检引擎经配置以确定所述尝试是否为恶意的。
2.根据权利要求1所述的主机系统,其中确定所述尝试是否有资格被通知包括:
确定存储器页的区段是否存储受保护对象的一部分,所述区段由所述存储器位置指示;
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段存储所述受保护对象的所述部分时,确定所述尝试有资格;及
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段不存储所述受保护对象的所述部分时,确定所述尝试没有资格。
3.根据权利要求2所述的主机系统,其中所述存储器页进一步存储不受保护对象的一部分。
4.根据权利要求2所述的主机系统,其中所述受保护对象包括所述硬件处理器用来执行所述VM的存储器地址转换的页表。
5.根据权利要求3所述的主机系统,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的控制位的值的尝试。
6.根据权利要求3所述的主机系统,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的地址字段的内容的尝试。
7.根据权利要求1所述的主机系统,其中确定所述尝试是否为恶意包括:
采用所述自检引擎来确定所述尝试是否由在所述虚拟机内执行的操作系统的组件执行;及
作为响应,当所述尝试由所述操作系统的所述组件执行时,确定所述尝试并非恶意的。
8.一种保护主机系统免受计算机安全性威胁的方法,其中所述主机系统包括硬件处理器及存储器,所述硬件处理器经配置以执行虚拟机VM、事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行,所述方法包括:
将所述硬件处理器配置成响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常;
将所述硬件处理器配置成响应于所述第一异常而从执行所述软件实体切换到执行所述事件过滤器;
将所述硬件处理器配置成响应于第二异常而从执行所述事件过滤器切换到执行所述自检引擎;
响应于所述第一异常,采用所述事件过滤器来根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎;
响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常;
响应于确定所述尝试是否有资格被通知,当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体;及
响应于所述第二异常,采用所述自检引擎来确定所述尝试是否为恶意的。
9.根据权利要求8所述的方法,其中确定所述尝试是否有资格被通知包括:
确定存储器页的区段是否存储受保护对象的一部分,所述区段由所述存储器位置指示;
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段存储所述受保护对象的所述部分时,确定所述尝试有资格;及
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段不存储所述受保护对象的所述部分时,确定所述尝试没有资格。
10.根据权利要求9所述的方法,其中所述存储器页进一步存储不受保护对象的一部分。
11.根据权利要求9所述的方法,其中所述受保护对象包括所述硬件处理器用来执行所述VM的存储器地址转换的页表。
12.根据权利要求11所述的方法,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的控制位的值的尝试。
13.根据权利要求11所述的方法,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的地址字段的内容的尝试。
14.根据权利要求8所述的方法,其中确定所述尝试是否为恶意包括:
采用所述自检引擎来确定所述尝试是否由在所述虚拟机内执行的操作系统的组件执行;及
作为响应,当所述尝试由所述操作系统的所述组件执行时,确定所述尝试并非恶意的。
15.一种非暂时性计算机可读媒体,其存储有指令,所述指令在由公开虚拟机的主机系统的硬件处理器执行时致使所述主机系统形成事件过滤器及自检引擎,所述事件过滤器在所述VM内执行,所述自检引擎在所述VM外部执行,其中:
所述自检引擎经配置以:
将所述硬件处理器配置成响应于检测到在所述VM内执行的软件实体以违反存储器存取权限的方式存取存储器位置的尝试而产生第一异常;
将所述硬件处理器配置成响应于所述第一异常而从执行所述软件实体切换到执行所述事件过滤器;
将所述硬件处理器配置成响应于第二异常而从执行所述事件过滤器切换到执行所述自检引擎;及
响应于所述第二异常,确定所述尝试是否为恶意的,且其中
所述事件过滤器经配置以:
响应于所述第一异常,根据事件资格准则而确定所述尝试是否有资格被通知给所述自检引擎;
响应于确定所述尝试是否有资格被通知,当所述尝试有资格时,致使所述处理器产生所述第二异常;及
响应于确定所述尝试是否有资格被通知,当所述尝试没有资格时,阻止所述处理器产生所述第二异常,且替代地,致使所述处理器重新开始执行所述软件实体。
16.根据权利要求15所述的计算机可读媒体,其中确定所述尝试是否有资格被通知包括:
确定存储器页的区段是否存储受保护对象的一部分,所述区段由所述存储器位置指示;
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段存储所述受保护对象的所述部分时,确定所述尝试有资格;及
响应于确定所述区段是否存储所述受保护对象的所述部分,当所述区段不存储所述受保护对象的所述部分时,确定所述尝试没有资格。
17.根据权利要求16所述的计算机可读媒体,其中所述存储器页进一步存储不受保护对象的一部分。
18.根据权利要求16所述的计算机可读媒体,其中所述受保护对象包括所述硬件处理器用来执行所述VM的存储器地址转换的页表。
19.根据权利要求18所述的计算机可读媒体,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的控制位的值的尝试。
20.根据权利要求18所述的计算机可读媒体,其中确定所述尝试是否有资格被通知进一步包括:确定所述尝试是否包括盖写所述页表的页表条目的地址字段的内容的尝试。
21.根据权利要求15所述的计算机可读媒体,其中确定所述尝试是否为恶意包括:
采用所述自检引擎来确定所述尝试是否由在所述虚拟机内执行的操作系统的组件执行;及
作为响应,当所述尝试由所述操作系统的所述组件执行时,确定所述尝试并非恶意的。
CN201780069409.0A 2016-12-19 2017-12-19 虚拟机安全性应用程序的事件过滤 Active CN109923546B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662436027P 2016-12-19 2016-12-19
US62/436,027 2016-12-19
US15/845,060 2017-12-18
US15/845,060 US10635479B2 (en) 2016-12-19 2017-12-18 Event filtering for virtual machine security applications
PCT/EP2017/083579 WO2018114970A1 (en) 2016-12-19 2017-12-19 Event filtering for virtual machine security applications

Publications (2)

Publication Number Publication Date
CN109923546A true CN109923546A (zh) 2019-06-21
CN109923546B CN109923546B (zh) 2023-04-07

Family

ID=62556303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780069409.0A Active CN109923546B (zh) 2016-12-19 2017-12-19 虚拟机安全性应用程序的事件过滤

Country Status (12)

Country Link
US (1) US10635479B2 (zh)
EP (1) EP3516571B1 (zh)
JP (1) JP7036821B2 (zh)
KR (1) KR102189296B1 (zh)
CN (1) CN109923546B (zh)
AU (1) AU2017384437B2 (zh)
CA (1) CA3037801A1 (zh)
ES (1) ES2925891T3 (zh)
IL (1) IL267289B (zh)
RU (1) RU2723668C1 (zh)
SG (1) SG10201913258XA (zh)
WO (1) WO2018114970A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199678A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
CN112199158A (zh) * 2020-10-16 2021-01-08 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质
CN112486862A (zh) * 2019-09-12 2021-03-12 意法半导体(大西部)公司 用于存储器的保护系统和方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11089064B1 (en) 2016-09-12 2021-08-10 Skyhigh Networks, Llc Cloud security policy enforcement for custom web applications
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
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
DE102019214541A1 (de) * 2019-09-24 2021-03-25 Siemens Aktiengesellschaft Rechenvorrichtung und Verfahren zum Erkennen einer Bedrohung in einer virtuellen Einheit
US11442770B2 (en) * 2020-10-13 2022-09-13 BedRock Systems, Inc. Formally verified trusted computing base with active security and policy enforcement
US11934857B2 (en) * 2021-03-16 2024-03-19 Vmware, Inc. Supporting execution of a computer program by using a memory page of another computer program
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
KR20230065526A (ko) * 2021-11-05 2023-05-12 삼성전자주식회사 메모리 관리 시스템 및 메모리 관리 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2897747A1 (en) * 2013-02-22 2014-08-28 Bitdefender Ipr Management Ltd Memory introspection engine for integrity protection of virtual machines
US20150121135A1 (en) * 2013-10-31 2015-04-30 Assured Information Security, Inc. Virtual machine introspection facilities
CN104769604A (zh) * 2012-10-19 2015-07-08 迈克菲公司 实时模块保护
US20150199514A1 (en) * 2014-01-10 2015-07-16 Bitdefender IPR Management Ltd. Computer Security Systems And Methods Using Virtualization Exceptions
US20150370724A1 (en) * 2014-06-24 2015-12-24 Bitdefender IPR Management Ltd. Systems And Methods For Dynamically Protecting A Stack From Below The Operating System
US20160048679A1 (en) * 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
CN105393255A (zh) * 2013-07-05 2016-03-09 比特梵德知识产权管理有限公司 用于虚拟机中的恶意软件检测的过程评估
CN105393229A (zh) * 2013-07-17 2016-03-09 比特梵德知识产权管理有限公司 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075845A (en) * 1989-12-22 1991-12-24 Intel Corporation Type management and control in an object oriented memory protection mechanism
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
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US20050138256A1 (en) * 2003-12-23 2005-06-23 Bolay Frederick H. Method and apparatus for processing hot key input using operating system visible interrupt handling
US9390031B2 (en) * 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7797747B1 (en) * 2006-02-21 2010-09-14 Symantec Corporation Detection of malicious code in non-paged pool unused pages
US9015704B2 (en) * 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US9129106B2 (en) * 2009-11-04 2015-09-08 Georgia Tech Research Corporation Systems and methods for secure in-VM monitoring
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8966623B2 (en) 2010-03-08 2015-02-24 Vmware, Inc. Managing execution of a running-page in a virtual machine
US8949797B2 (en) * 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
CN102523215B (zh) 2011-12-15 2014-10-01 北京海云捷迅科技有限公司 基于kvm虚拟化平台的虚拟机在线杀毒系统
US9405570B2 (en) * 2011-12-30 2016-08-02 Intel Corporation Low latency virtual machine page table management
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
US9311248B2 (en) * 2012-05-07 2016-04-12 Raytheon Cyber Products, Llc Methods and apparatuses for monitoring activities of virtual machines
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
RU2541895C2 (ru) * 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения защищенности данных организации путем создания изолированной среды
US9037873B2 (en) * 2013-01-30 2015-05-19 Vmware, Inc. Method and system for preventing tampering with software agent in a virtual machine
US9015374B2 (en) * 2013-07-09 2015-04-21 Advanced Micro Devices, Inc. Virtual interrupt filter
US9323931B2 (en) 2013-10-04 2016-04-26 Bitdefender IPR Management Ltd. Complex scoring for malware detection
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9977895B2 (en) * 2014-03-27 2018-05-22 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9454676B2 (en) 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features
US20150379265A1 (en) * 2014-06-30 2015-12-31 Bitdefender IPR Management Ltd. Systems And Methods For Preventing Code Injection In Virtualized Environments
US9335943B2 (en) * 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9356945B2 (en) 2014-07-17 2016-05-31 Check Point Advanced Threat Prevention Ltd Automatic content inspection system for exploit detection
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US9965313B2 (en) 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US10515023B2 (en) * 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US10248785B2 (en) * 2016-02-29 2019-04-02 Red Hat Israel, Ltd. Application memory protection using a host page table switching virtual machine function
US10120738B2 (en) * 2016-06-24 2018-11-06 Vmware, Inc. Hypervisor techniques for performing non-faulting reads in virtual machines
US9965375B2 (en) * 2016-06-28 2018-05-08 Intel Corporation Virtualizing precise event based sampling
US10664181B2 (en) * 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104769604A (zh) * 2012-10-19 2015-07-08 迈克菲公司 实时模块保护
CA2897747A1 (en) * 2013-02-22 2014-08-28 Bitdefender Ipr Management Ltd Memory introspection engine for integrity protection of virtual machines
CN105190570A (zh) * 2013-02-22 2015-12-23 比特梵德知识产权管理有限公司 用于虚拟机器的完整性保护的存储器自省引擎
CN105393255A (zh) * 2013-07-05 2016-03-09 比特梵德知识产权管理有限公司 用于虚拟机中的恶意软件检测的过程评估
CN105393229A (zh) * 2013-07-17 2016-03-09 比特梵德知识产权管理有限公司 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中
US20150121135A1 (en) * 2013-10-31 2015-04-30 Assured Information Security, Inc. Virtual machine introspection facilities
US20150199514A1 (en) * 2014-01-10 2015-07-16 Bitdefender IPR Management Ltd. Computer Security Systems And Methods Using Virtualization Exceptions
WO2015183116A1 (en) * 2014-01-10 2015-12-03 Bitdefender Ipr Management Ltd Computer security systems and methods using virtualization exceptions
US20150370724A1 (en) * 2014-06-24 2015-12-24 Bitdefender IPR Management Ltd. Systems And Methods For Dynamically Protecting A Stack From Below The Operating System
US20160048679A1 (en) * 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨科;凌冲;朱陈成;: "一种恶意软件行为分析系统的设计与实现" *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486862A (zh) * 2019-09-12 2021-03-12 意法半导体(大西部)公司 用于存储器的保护系统和方法
CN112199678A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
CN112199678B (zh) * 2020-09-25 2024-04-09 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
CN112199158A (zh) * 2020-10-16 2021-01-08 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质
CN112199158B (zh) * 2020-10-16 2021-11-23 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JP2020502638A (ja) 2020-01-23
AU2017384437B2 (en) 2022-01-13
SG10201913258XA (en) 2020-02-27
IL267289B (en) 2021-07-29
EP3516571B1 (en) 2022-06-01
JP7036821B2 (ja) 2022-03-15
US10635479B2 (en) 2020-04-28
CA3037801A1 (en) 2018-06-28
KR102189296B1 (ko) 2020-12-14
US20180173555A1 (en) 2018-06-21
RU2723668C1 (ru) 2020-06-17
EP3516571A1 (en) 2019-07-31
AU2017384437A1 (en) 2019-04-11
IL267289A (en) 2019-08-29
KR20190096959A (ko) 2019-08-20
CN109923546B (zh) 2023-04-07
ES2925891T3 (es) 2022-10-20
WO2018114970A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
CN109923546A (zh) 虚拟机安全性应用程序的事件过滤
US10445498B2 (en) Systems and methods of application control in virtualized environments
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
KR102297133B1 (ko) 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
KR101955189B1 (ko) 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
US20140053272A1 (en) Multilevel Introspection of Nested Virtual Machines

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40004204

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant