CN109858288B - 实现虚拟机安全隔离的方法与装置 - Google Patents
实现虚拟机安全隔离的方法与装置 Download PDFInfo
- Publication number
- CN109858288B CN109858288B CN201811600201.XA CN201811600201A CN109858288B CN 109858288 B CN109858288 B CN 109858288B CN 201811600201 A CN201811600201 A CN 201811600201A CN 109858288 B CN109858288 B CN 109858288B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- address space
- isolation
- execution environment
- isolated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种实现虚拟机安全隔离的方法与装置,其中所述方法包括:采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离;利用VMCS、扩展页表结构体隐藏和虚拟机退出重定向策略,在所述安全隔离的执行环境中,监控所述目标虚拟机的上下文切换和所述目标虚拟机的地址映射。本发明实施例采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
Description
技术领域
本发明实施例涉及计算机操作系统与虚拟化技术领域,更具体地,涉及一种实现虚拟机安全隔离的方法与装置。
背景技术
云计算技术利用虚拟化技术来给上层的多租户提供资源,但是由于多租户资源隔离性不强,导致上层租户中敏感数据泄露问题严峻,数据安全问题已发展成为一个全球性问题,研究非可信虚拟化执行环境中的虚拟机安全具有十分重要的理论意义和实际应用价值。
虚拟机监控器(Hypervisor)在底层给上层虚拟机提供物理资源分配和管理功能,并被授予最高权限。当攻击者攻击虚拟机监控器时,很可能会危及到整个云计算基础设施的安全,并危及租户的数据安全。另外,多租户和虚拟机监控器共享底层的物理资源,攻击者通过跨域攻击和虚拟机逃逸攻击,可对共享同一物理服务器的其它虚拟机进行攻击,泄露其敏感数据。
目前针对x86平台非可信虚拟化执行环境中虚拟机敏感数据的安全问题的解决方法中,存在系统运行的性能开销大、实现复杂、移植性差以及对原系统改造较大等问题。另外,当前x86平台上的硬件扩展方法SGX只提供对应用程序的隔离保护,无法提供对整个虚拟机的内存保护,且更改复杂。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种实现虚拟机安全隔离的方法与装置,用以有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
第一方面,本发明实施例提供一种实现虚拟机安全隔离的方法,包括:
采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;
利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离;
利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在所述安全隔离的执行环境中,监控所述目标虚拟机的上下文切换和所述目标虚拟机的地址映射。
第二方面,本发明实施例提供一种实现虚拟机安全隔离的装置,包括:
地址空间隔离模块,用于采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;
虚拟机隔离模块,用于利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离;
虚拟机监控模块,用于利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在所述安全隔离的执行环境中,监控所述目标虚拟机的上下文安全切换以及所述目标虚拟机的地址映射。
第三方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上第一方面所述的实现虚拟机安全隔离的方法。
本发明实施例提供的实现虚拟机安全隔离的方法与装置,采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的实现虚拟机安全隔离的方法的流程示意图;
图2为根据本发明实施例提供的实现虚拟机安全隔离的方法中创建隔离的地址空间的流程示意图;
图3为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表访问控制实现过程示意图;
图4为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表多映射防护的流程示意图;
图5为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表重映射防护的流程示意图;
图6为根据本发明实施例提供的实现虚拟机安全隔离的方法中虚拟机退出重定向的流程示意图;
图7为本发明另一实施例提供的实现虚拟机安全隔离的方法的流程示意图;
图8为本发明实施例提供的实现虚拟机安全隔离的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明实施例的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
目前针对x86平台非可信虚拟化执行环境中虚拟机敏感数据的安全问题的解决方法中,存在系统运行的性能开销大、实现复杂、移植性差以及对原系统改造较大等问题。针对该问题,本发明实施例采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。以下将具体通过多个实施例对本发明实施例进行展开说明和介绍。
图1为本发明一实施例提供的实现虚拟机安全隔离的方法的流程示意图,如图1所示,该方法包括:
S101,采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境。
本发明实施例为解决安全隔离执行环境的安全和性能问题,采用创建与虚拟机监控器相同权限级别的安全隔离地址空间,即同层地址空间隔离机制,减小环境切换的性能开销,能够抵御外界破坏该系统的DMA攻击,控制流劫持攻击。
具体而言,本发明实施例在虚拟化层创建一个安全隔离的执行环境,用于给虚拟机隔离和虚拟机监控提供执行环境,使得关键的事件的处理和关键数据结构的访问在该环境中进行;环境切换给系统带来的性能开销相对较小,且能够保证隔离环境一定的安全性。
S102,利用安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现目标虚拟机与其余虚拟机之间的相互隔离。
本发明实施例为解决虚拟机内存隔离的安全问题,采用内存动态标记与跟踪法,以及物理内存多重映射防护法法实现虚拟机物理内存的高强度隔离。即,将虚拟机隔离于非可信的虚拟化执行坏境,即隔离于非可信的虚拟机监控器,以及其余虚拟机,避免虚拟机上用户敏感数据被不可信虚拟机或者虚拟机监控器恶意访问。
S103,利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在安全隔离的执行环境中,监控目标虚拟机的上下文切换和目标虚拟机的地址映射。
本发明实施例为解决监控虚拟机关键数据问题,在安全隔离的执行环境中监控虚拟机、宿主机上下文切换以及虚拟机地址映射过程,涉及VMCS结构体、扩展页表结构隐藏的方法,能够抵御控制流攻击,防止物理内存页多重映射,避免用户敏感数据泄露。具体而言,本发明实施例监控虚拟机的上下文安全切换过程,在安全隔离的执行环境完成上下文安全切换,阻止系统关键信息被恶意访问。
本发明实施例提供的实现虚拟机安全隔离的方法,采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
其中,根据上述各实施例可选的,采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境的步骤具体包括:采用同层地址空间隔离机制,创建与虚拟化层相同特权级别的运行隔离空间框架,得到隔离的地址空间;创建当在原地址空间中监控的事件发生时,安全隔离的执行环境和原虚拟化执行环境之间的安全切换门,并隐藏隔离的地址空间的入口地址,以防止破坏安全切换门的安全性;当虚拟化层不再可信时,对隔离的地址空间进行安全防护,以防止破坏隔离的地址空间的安全性。
本发明实施例创建安全隔离的执行环境的过程总体可分为三部分进行,即隔离的地址空间的创建、安全切换门的创建和对隔离的地址空间安全防护。
其中,隔离的地址空间的创建可以理解为,是采用同层地址空间隔离的方法,创建与虚拟化层相同特权级别的运行的隔离空间框架,用于在虚拟化层不再可信时,该隔离的地址空间内部程序仍然能够安全运行,不受恶意攻击的影响。主要通过创建另一份系统页表A实现另一地址空间,其中部分物理地址空间只在A页表中映射。具体如图2所示,为根据本发明实施例提供的实现虚拟机安全隔离的方法中创建隔离的地址空间的流程示意图,该过程包括:
S201,系统安全启动,系统需要基于安全的硬件启动;
S202,页表创建,开始创建页表,分配页表使用内存空间;
S203,根据页表的结构,详细设计pgd,pud,pmd和pte;
S204,保存新设计页表的入口地址,以便于其他模块调用。
其中,安全切换是指当在原地址空间中监控事件发生时,实现隔离执行环境和原虚拟化执行环境之间的切换功能,同时保证一定的安全性,保证切换的过程完整性和原子性,不泄露隔离地址空间的入口地址。其中所述监控事件包含页表更新函数(do_page_fault)、write_cr3、set_pte、set_pmd、set_pud、set_pgd、set_cr0、set_cr4函数,这些函数主要与MMU、SMEP、DEP机制相关。而安全切换门的创建可以实现如下:保存现场,关中断,设置CR3寄存器(存放隔离空间入口地址),刷新TLB,关中断,执行监控事件,刷新TLB,设置CR3寄存器(原空间入口地址),开中断,恢复现场。
其中,对隔离地址空间安全防护可以理解为主要是对创建的隔离地址空间进行安全防护,当虚拟化层不再可信时,该空间需要保证安全性,才能保证在该地址空间执行进程的安全性。
其中,根据上述各实施例可选的,利用安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现目标虚拟机与其余虚拟机之间的相互隔离的步骤具体包括:通过绑定扩展页表和目标虚拟机,对扩展页表进行标记,并进行动态内存的标记与跟踪;设定共享页接口,以处理共享页问题,并进行虚拟机地址映射时的潜在多映射和重映射攻击防护。
可以理解为,本发明实施例首先进行扩展页表标记。其中扩展页表是指EPT,对于每一个VM,只有对应的一份EPT,为了使用方便和安全性,避免攻击者调度恶意的EPT,在系统中绑定EPT和VM,创建VM-Mark表。例如,如表1所示,为根据本发明实施例的虚拟机标记示例表。
表1,根据本发明实施例的虚拟机标记示例表
标记 | VMID | EPTID |
描述 | 虚拟机标识 | EPT的标识 |
之后,进行动态内存的标记与跟踪。动态内存标记模块是指对每一张物理内存页进行标识,使用Page-Mark表如表2所示,为根据本发明实施例的页标记示例表,包括物理页本身页框号,属主ID(判断该页属于某个虚拟机或者虚拟机监控器),被使用标记以及共享页标记。对于KVM系统中的balloon机制,动态地释放某物理内存,同时需动态地变换物理内存页的配置信息,OwnerID,UsedID,SharedID。
表2,根据本发明实施例的页标记示例表
标记 | Page frame | OwnerID | UsedID | SharedID |
描述 | 页框号 | 属主ID | 被使用标记 | 共享页标记 |
物理页跟踪模块是指当系统中对EPT进行更新的时候,先检查要映射到的物理页是否已经被分配过了,如若已被分配,且并非属于该虚拟机,则EPT更新失败;否则可以进行分配,对该物理内存标记,并记录到Page-Mark表中。当物理页被释放的情况下,对物理内存清空标记,清空内容,保证信息不可被泄露。
再之后,进行共享页接口的设定。具体而言,是指针对系统开启共享页功能时,一张物理内存页可能存在多个属主,针对这样的情况设定共享页接口,处理共享页问题。在系统共享页映射的过程中,使用函数ksm_page()检查所要的页是否是即将被共享,随后跳转到隔离地址空间中,设置该页为共享页,增加OwnerID,并完成系统共享页映射的后续过程。
最后,进行多重映射防护,是指防护虚拟机地址映射时发生的多映射和重映射攻击。在页映射的过程中,需要检查页映射过程。为了防止页面多映射,在EPT更新的时候,即函数tdp_page_fault,检查被映射的物理页是否已经被映射过,如未被映射,可直接映射,否则检查物理页的属主,不同的话,映射失败,否则映射成功。
其中,根据上述各实施例可选的,监控目标虚拟机的上下文切换和目标虚拟机的地址映射的步骤具体包括:在隔离的地址空间中,采用VMCS结构体和扩展页表关键数据结构隐藏策略,监控目标虚拟机和虚拟机监控器的上下文切换及虚拟机地址映射。并且,通过退出重定向策略,完成目标虚拟机的退出函数处理。
本发明实施例进行虚拟机监控,总体主要可以分两部分进行,即虚拟机、宿主机上下文的安全切换和虚拟机退出的重定向。其中,虚拟机、宿主机上下文的切换是在隔离的地址空间中执行的,上下文保存在关键数据结构VMCS结构体中。目的是保护虚拟机和宿主机运行时的关键数据结构,包括虚拟机和宿主机的特权寄存器、下一条指令地址、EPT的地址等。防止敏感信息泄露,防止加载恶意页表,阻止控制流攻击等。
上述虚拟机、宿主机上下文的安全切换过程运行在隔离的地址空间中,主要目的是保护虚拟机和宿主机运行时的关键数据结构(VMCS结构体、EPT页表),包括虚拟机和宿主机的特权寄存器(CR0、CR3、CR4)、下一条指令地址、EPT的地址。防止敏感信息泄露,防止加载恶意页表,阻止控制流攻击等。
VMCS结构的防护主要通过不泄露VMCS结构体的地址,另外访问VMCS的函数需要在隔离地址空间中运行,包含vmcs_readl,vmcs_writel,vmcs_clear。EPT页表的防护方法是将EPT的地址访问相关的函数在隔离的地址空间中运行,包含kvm_mmu_load,mmu_free_roots,mmu_step_walk。
而对于虚拟机退出的重定向而言,在隔离执行环境中监控上下文切换需要一个时间点,于是选择在虚拟机退出的时候进行监控上下文切换。该过程运行在隔离的地址空间中,主要目的是保护虚拟机与宿主机上下文切换过程,该过程中的上下文涉及重要的VMCS结构。
其中,根据上述各实施例可选的,当虚拟化层不再可信时,对隔离的地址空间进行安全防护的步骤具体包括:通过监控特权寄存器访问事件、页表访问以及DMA映射函数的合法性,确定对隔离的地址空间的安全防护操作。
可以理解的是,根据上述各实施例进行隔离的地址空间的安全防护时,主要从三方面着手,即监控特权寄存器操作事件、页表访问控制和DMA攻击防护。
其中,监控事件包含页表更新函数(do_page_fault)、write_cr3、set_pte、set_pmd、set_pud、set_pgd、set_cr0、set_cr4函数。其目的是确保系统不随意加载恶意的页表,随意更改系统页表中虚拟地址和物理地址映射,禁止映射到隔离空间中物理地址,禁止设置CR0寄存器关闭DEP机制,设置CR4寄存器关闭SMEP机制。
其中,页表访问控制是指,当使用原系统地址空间,隔离地址空间数据段和代码段在原空间不被映射,当使用隔离地址空间,原系统地址空间中的代码段不可执行,防止篡改隔离空间运行进程。基本实现过程如图3所示,为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表访问控制实现过程示意图,该过程包括:
S301,原系统空间页表提供系统的地址空间布局,每个模块的访问权限,以及模块是否被映射;隔离空间的地址并没有被映射,实现隔离目的;
S302,环境切换门,由3部分组成,进入门,共享缓冲区和退出门,该门用于实现两个地址空间的安全切换,保证切换的原子性和安全性;
S303,隔离空间的页表,即安全执行环境中的页表,原系统代码段只有R(只读)属性,隔离空间代码段和数据段地址存在虚实地址映射。
其中,DMA攻击防护模块是指,攻击者可以直接通过DMA的方式访问到某些包含敏感数据的物理地址,通过监控DMA映射函数,检查映射物理地址的合法性,合法则映射,否则映射失败。
其中,根据上述各实施例可选的,进行虚拟机地址映射时的潜在多映射攻击防护的步骤具体包括:监测扩展页表更新,并分别判断扩展页表更新是否合法以及扩展页表的内部内容是否改变;若判断的结果为是,则进一步判断物理页是否被使用,并在进一步判断的结果为是时,通过查询物理页对应的页表标记表,查看使用记录标记;基于物理页的使用记录标记,判断属主标志是否一致,若不一致,则不进行映射。
本发明实施例对虚拟机地址映射时可能发生的多映射进行防护,具体过程如图4所示,为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表多映射防护的流程示意图,该过程包括:
S401,监测EPT更新,一方面针对EPT是否合法,另一方面针对EPT的内部内容是否改变;
S402,判断EPT更新,一旦对EPT进行更新,判断加载的EPT是否是原来的EPT,同时判断对EPT的更改(地址映射)是否合法;
S403,判断物理页被使用,查看物理页对应的页表标记表,查看使用记录标记UsedID;
S404,对于已经使用过的物理页,判断属主标志是否一样,是VM还是虚拟机监控器Hypervisor的,根据属主的一致性进行映射与否的确定。
另外,为了防止页面重映射,即被释放的页面(内容未被清除)被其余虚拟机重新映射,泄露数据。防护措施是当页面被释放时,系统已经将该页设置为空闲页,需要清除其上的信息,防止信息泄露。具体过程如图5所示,为根据本发明实施例提供的实现虚拟机安全隔离的方法中页表重映射防护的流程示意图,该过程包括:
S501,监测页面释放,不断地监测原系统中页面释放相关功能;
S502,判断页面释放。判断页面是否被释放,进行不同的处理,如若不是,继续监控,如若是,进行下一步处理;
S503,页面处理,清除页面内容,随后释放页面。
其中,根据上述各实施例可选的,通过监控目标虚拟机的退出,监控目标虚拟机的上下文切换的步骤具体包括:若监控到目标虚拟机的退出事件,则跳转到隔离的地址空间,并在隔离的地址空间内,通过硬件执行,安全地进行上下文切换;在隔离的地址空间内,对VMCS结构体进行读写操作,并在读写操作完成后,跳转到原系统环境中;进行目标虚拟机的退出事件处理。
具体而言,本发明实施例虚拟机退出重定向过程如图6所示,为根据本发明实施例提供的实现虚拟机安全隔离的方法中虚拟机退出重定向的流程示意图,该过程包括:
S601,拦截虚拟机退出事件,即函数handle_exit;
S602,跳转到安全隔离地址空间中,即环境切换,address_sapce_switch_into;
S603,安全地进行上下文切换,硬件执行;
S604,对VMCS结构体进行读写操作,该操作在隔离执行空间中运行;
S605,跳转到原系统环境中,即函数address_sapce_switch_out;
S606,进行虚拟机退出事件处理。
为进一步说明本发明实施例的技术方案,本发明实施例根据上述各实施例提供如下实施例的处理流程,但不对本发明实施例的保护范围进行限制。
虚拟机隔离是整个系统实现的目的。防护敏感数据泄露,主要通过标记内存页、绑定每个虚拟机与其对应的EPT、共享标记,处理共享页问题,在虚拟机地址映射的时候实现多重映射防护,保证虚拟机之间、虚拟机与虚拟机监控器之间的隔离。
图7为本发明另一实施例提供的实现虚拟机安全隔离的方法的流程示意图,如图7所示,该处理过程包括:
S701,地址空间隔离,整个操作系统安全启动后,会被划分为两个区域环境,原执行环境和隔离的执行环境;
S702,监控事件,系统会监控系统中的关键事件;
S703,环境切换(进入),当监控的关键事件发生的时候,会到隔离的地址空间中运行;
S704,EPT创建,系统会分别对关键事件进行判断,判断依据是EPT是否创建,如若是,随后进行VM与EPT的绑定,否则继续进行判断;
S705,EPT加载,判断是否是EPT加载,根据EPT是否一致决定是否加载;
S706,EPT更新,判断是否是EPT更新,根据物理页是否已经被使用进行更新操作;
S707,EPT遍历,判断是否是EPT遍历,如若是,进行遍历,否则继续判断;
S708,EPT销毁,判断是否是EPT销毁,是则进行销毁处理,否则继续判断;
S709,物理页释放,判断是否是物理页释放,是则进行重映射处理,清空页内容,否则继续判断;
S710,上下文切换,判断是否是VMCS上下文环境是否切换,是则进行退出重定向和上下文切换处理;
S711,环境切换(返回),当所有的监控事件处理完成后,切换回原系统运行环境中。
综上而言,与现有技术相比,本发明实施例具有如下优势:实现虚拟机高强度内存隔离,防护用户敏感数据泄露;抵御虚拟机跨域攻击和虚拟机逃逸攻击带来的用户敏感信息泄露;弥补X86系统上Intel处理器中SGX只能保护应用的不足,提供保护整个虚拟机的功能,适应各种CPU版本;系统性能开销小,可移植性强,对原系统更改较少。
作为本发明实施例的另一个方面,本发明实施例根据上述各实施例提供一种实现虚拟机安全隔离的装置,该装置用于在上述各实施例中实现虚拟机安全隔离的实现。因此,在上述各实施例的实现虚拟机安全隔离的方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明实施例的一个实施例,实现虚拟机安全隔离的装置的结构如图8所示,为本发明实施例提供的实现虚拟机安全隔离的装置的结构示意图,该装置可以用于实现上述各方法实施例中虚拟机安全隔离的实现,该装置包括:地址空间隔离模块801、虚拟机隔离模块802和虚拟机监控模块803。其中:
地址空间隔离模块801用于采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;虚拟机隔离模块802用于利用安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现目标虚拟机与其余虚拟机之间的相互隔离;虚拟机监控模块803用于利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在安全隔离的执行环境中,监控目标虚拟机的上下文安全切换以及目标虚拟机的地址映射。
具体而言,首先为解决安全隔离执行环境的安全和性能问题,地址空间隔离模块801在虚拟化层创建一个安全隔离的执行环境,用于给虚拟机隔离和虚拟机监控提供执行环境。也就是说,地址空间隔离模块801创建与虚拟机监控器相同权限级别的安全隔离地址空间,即同层地址空间隔离机制,以减小环境切换的性能开销,能够抵御外界破坏该系统的DMA攻击,控制流劫持攻击。
之后,虚拟机隔离模块802将虚拟机隔离于非可信的虚拟化执行坏境,即隔离于非可信的虚拟机监控器,以及虚拟机之间的相互隔离,避免虚拟机上用户敏感数据被不可信虚拟机或者虚拟机监控器恶意访问。具体可以采用内存动态标记与跟踪法,以及物理地址多重映射防护法,实现虚拟机物理内存的高强度隔离。
最后,虚拟机监控模块803在安全隔离的执行环境中监控虚拟机、宿主机上下文切换以及虚拟机地址映射过程,涉及VMCS结构体,EPT结构的方法,能够抵御控制流攻击,防止物理地址多重映射,避免用户敏感数据泄露。具体监控虚拟机的上下文安全切换过程,每一个物理内核上一次只能运行一个系统,虚拟机或者虚拟机监控器,并且两个系统切换过程的上下文存放在VMCS结构体中,在安全隔离的执行环境完成上下文安全切换,阻止系统关键信息被恶意访问。
其中进一步的,如图8所示,地址空间隔离模块801可以进一步包括隔离的地址空间创建模块、安全切换门创建模块和对隔离地址空间安全防护模块3个子模块。虚拟机隔离模块802可以进一步包括内存动态标记与跟踪模块、扩展页表(EPT)标记模块、共享页接口设定模块、多重映射防护模块4个子模块。虚拟机监控模块803可以进一步包括虚拟机、宿主机上下文安全切换模块和虚拟机退出重定向模块2个子模块。
本发明实施例提供的实现虚拟机安全隔离的装置,通过设置相应的执行模块,采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
可以理解的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各实施例的装置中的各相关程序模块。并且,本发明实施例的实现虚拟机安全隔离的装置利用上述各程序模块,能够实现上述各方法实施例的实现虚拟机安全隔离的流程,在用于实现上述各方法实施例中虚拟机安全隔离的实现时,本发明实施例的装置产生的有益效果与对应的上述各方法实施例相同,可以参考上述各方法实施例,此处不再赘述。
本发明实施例的方法可以通过程序指令实现,该程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还根据上述各实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行如上述各实施例所述的实现虚拟机安全隔离的方法,例如包括:采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;利用安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现目标虚拟机与其余虚拟机之间的相互隔离;利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在安全隔离的执行环境中,监控目标虚拟机的上下文切换和目标虚拟机的地址映射等。
本发明实施例提供的非暂态计算机可读存储介质,通过执行上述各实施例所述的实现虚拟机安全隔离的方法,采用同层地址空间隔离机制,在非可信虚拟化执行环境中对虚拟机进行高强度的内存隔离,能够有效保证系统性能开销,全面地对虚拟机内存进行隔离,提高系统的安全性。
可以理解的是,以上所描述的装置及存储介质的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
另外,本领域内的技术人员应当理解的是,在本发明实施例的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例的说明书中,说明了大量具体细节。然而应当理解的是,本发明实施例的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明实施例公开并帮助理解各个发明方面中的一个或多个,在上面对本发明实施例的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明实施例的单独实施例。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
Claims (9)
1.一种实现虚拟机安全隔离的方法,其特征在于,包括:
采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;
利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离;
利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在所述安全隔离的执行环境中,监控所述目标虚拟机的上下文切换和所述目标虚拟机的地址映射;
所述同层地址空间隔离机制为创建与虚拟机监控器相同权限级别的安全隔离地址空间。
2.根据权利要求1所述的方法,其特征在于,所述采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境的步骤具体包括:
采用同层地址空间隔离机制,创建与所述虚拟化层相同特权级别的运行隔离空间框架,得到隔离的地址空间;
创建当在原地址空间中监控的事件发生时,所述安全隔离的执行环境和原虚拟化执行环境之间的安全切换门,以隐藏所述隔离的地址空间的入口地址,防止破坏所述安全切换门的安全性;
当所述虚拟化层不再可信时,对所述隔离的地址空间进行安全防护,以防止破坏所述隔离的地址空间的安全性。
3.根据权利要求1所述的方法,其特征在于,所述利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离的步骤具体包括:
通过绑定扩展页表和所述目标虚拟机,对扩展页表进行标记,并进行动态内存的标记与跟踪;
设定共享页接口,以处理共享页问题,并进行虚拟机地址映射时的潜在多映射和重映射攻击防护。
4.根据权利要求2所述的方法,其特征在于,所述监控所述目标虚拟机的上下文切换和所述目标虚拟机的地址映射的步骤具体包括:
在所述隔离的地址空间中,采用VMCS结构体和扩展页表关键数据结构隐藏策略,监控所述目标虚拟机和虚拟机监控器的上下文切换及虚拟机地址映射;
在所述隔离的地址空间中,通过退出重定向策略,完成所述目标虚拟机的退出函数处理。
5.根据权利要求2所述的方法,其特征在于,所述当所述虚拟化层不再可信时,对所述隔离的地址空间进行安全防护的步骤具体包括:
通过监控特权寄存器访问事件、页表访问以及DMA映射函数的合法性,确定对所述隔离的地址空间的安全防护操作。
6.根据权利要求3所述的方法,其特征在于,进行虚拟机地址映射时的潜在多映射攻击防护的步骤具体包括:
监控扩展页表更新,并分别判断扩展页表更新是否合法以及扩展页表的内部内容是否改变;
若所述判断的结果为是,则进一步判断物理页是否被使用,并在所述进一步判断的结果为是时,通过查询物理页对应的页表标记表,查看使用记录标记;
基于物理页的所述使用记录标记,判断属主标志是否一致,若不一致,则不进行映射。
7.根据权利要求4所述的方法,其特征在于,所述通过监控所述目标虚拟机的退出,监控所述目标虚拟机的上下文切换的步骤具体包括:
若监控到所述目标虚拟机的退出事件,则跳转到所述隔离的地址空间,并在所述隔离的地址空间内,通过硬件执行,安全地进行上下文切换;
在所述隔离的地址空间内,对所述VMCS结构体进行读写操作,并在所述读写操作完成后,跳转到原系统环境中;
进行所述目标虚拟机的退出事件处理。
8.一种实现虚拟机安全隔离的装置,其特征在于,包括:
地址空间隔离模块,用于采用同层地址空间隔离机制,在虚拟化层创建一个安全隔离的执行环境;
虚拟机隔离模块,用于利用所述安全隔离的执行环境,采用内存动态标记与跟踪策略,将目标虚拟机的内存隔离于非可信的虚拟化执行坏境,并实现所述目标虚拟机与其余虚拟机之间的相互隔离;
虚拟机监控模块,用于利用VMCS结构体、扩展页表关键数据结构隐藏和虚拟机退出重定向策略,在所述安全隔离的执行环境中,监控所述目标虚拟机的上下文安全切换以及所述目标虚拟机的地址映射;
所述同层地址空间隔离机制为创建与虚拟机监控器相同权限级别的安全隔离地址空间。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600201.XA CN109858288B (zh) | 2018-12-26 | 2018-12-26 | 实现虚拟机安全隔离的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600201.XA CN109858288B (zh) | 2018-12-26 | 2018-12-26 | 实现虚拟机安全隔离的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109858288A CN109858288A (zh) | 2019-06-07 |
CN109858288B true CN109858288B (zh) | 2021-04-13 |
Family
ID=66892293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811600201.XA Active CN109858288B (zh) | 2018-12-26 | 2018-12-26 | 实现虚拟机安全隔离的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109858288B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825492B (zh) * | 2019-10-31 | 2023-05-09 | 海光信息技术股份有限公司 | 安全数据内存隔离方法、装置、设备、存储介质 |
CN110955493A (zh) * | 2019-11-13 | 2020-04-03 | 东软集团股份有限公司 | 一种实现安全运行环境切换的方法、系统及相关设备 |
CN111177712B (zh) * | 2019-12-31 | 2022-06-03 | 杭州趣链科技有限公司 | 一种基于TEE的WebAssembly模型执行引擎 |
CN113742789A (zh) * | 2020-05-27 | 2021-12-03 | 华为技术有限公司 | 数据处理方法及数据处理装置 |
CN112363797B (zh) * | 2020-10-19 | 2022-04-05 | 海光信息技术股份有限公司 | 一种虚拟机安全运行方法、电子设备及存储介质 |
CN112416525B (zh) * | 2020-11-27 | 2022-06-03 | 海光信息技术股份有限公司 | 设备驱动初始化方法、直接存储访问方法及相关装置 |
CN112861118B (zh) * | 2021-04-26 | 2021-07-06 | 湖北亿咖通科技有限公司 | 双系统的容器间安全策略隔离方法、电子设备及存储介质 |
CN113810283A (zh) * | 2021-09-16 | 2021-12-17 | 中国联合网络通信集团有限公司 | 网络安全配置方法、装置、服务器及存储介质 |
CN114329437B (zh) * | 2022-03-14 | 2022-06-14 | 北京指掌易科技有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
CN115033302A (zh) * | 2022-05-27 | 2022-09-09 | 天翼云科技有限公司 | 一种安全加固方法、装置、设备及介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076781A (zh) * | 2004-12-10 | 2007-11-21 | 英特尔公司 | 对虚拟机监控程序的组件解除特权的系统和方法 |
US20090172328A1 (en) * | 2007-12-31 | 2009-07-02 | Ravi Sahita | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
CN101739282A (zh) * | 2008-11-18 | 2010-06-16 | 华为技术有限公司 | 一种虚拟机的管理方法、装置和系统 |
CN101976200A (zh) * | 2010-10-15 | 2011-02-16 | 浙江大学 | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统 |
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
CN102831006A (zh) * | 2012-07-25 | 2012-12-19 | 北京奇虎科技有限公司 | 虚拟机实现方法与虚拟机 |
CN104572170A (zh) * | 2013-10-10 | 2015-04-29 | 国际商业机器公司 | 用于提供隔离的熵元素和熵元素生成器的方法 |
CN104885057A (zh) * | 2012-09-21 | 2015-09-02 | 英特尔公司 | 虚拟化计算系统中隔离的客创建 |
CN104951694A (zh) * | 2014-03-24 | 2015-09-30 | 华为技术有限公司 | 一种管理虚拟机的隔离方法及装置 |
WO2016164424A1 (en) * | 2015-04-09 | 2016-10-13 | Vmware, Inc. | Isolating guest code and data using multiple nested page tables |
CN106970823A (zh) * | 2017-02-24 | 2017-07-21 | 上海交通大学 | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 |
-
2018
- 2018-12-26 CN CN201811600201.XA patent/CN109858288B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076781A (zh) * | 2004-12-10 | 2007-11-21 | 英特尔公司 | 对虚拟机监控程序的组件解除特权的系统和方法 |
US20090172328A1 (en) * | 2007-12-31 | 2009-07-02 | Ravi Sahita | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
CN101739282A (zh) * | 2008-11-18 | 2010-06-16 | 华为技术有限公司 | 一种虚拟机的管理方法、装置和系统 |
CN101976200A (zh) * | 2010-10-15 | 2011-02-16 | 浙江大学 | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统 |
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
CN102831006A (zh) * | 2012-07-25 | 2012-12-19 | 北京奇虎科技有限公司 | 虚拟机实现方法与虚拟机 |
CN104885057A (zh) * | 2012-09-21 | 2015-09-02 | 英特尔公司 | 虚拟化计算系统中隔离的客创建 |
CN104572170A (zh) * | 2013-10-10 | 2015-04-29 | 国际商业机器公司 | 用于提供隔离的熵元素和熵元素生成器的方法 |
CN104951694A (zh) * | 2014-03-24 | 2015-09-30 | 华为技术有限公司 | 一种管理虚拟机的隔离方法及装置 |
WO2016164424A1 (en) * | 2015-04-09 | 2016-10-13 | Vmware, Inc. | Isolating guest code and data using multiple nested page tables |
CN106970823A (zh) * | 2017-02-24 | 2017-07-21 | 上海交通大学 | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 |
Non-Patent Citations (5)
Title |
---|
HA-VMSI: A Lightweight Virtual Machine Isolation Approach with Commodity Hardware for ARM;Min Zhu,et al.;《VEE "17: Proceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments》;20170409;第242-256页 * |
SecPod: A Framework for Virtualization-based Security Systems;Xiaoguang Wang,et al.;《The Proceedings of the 2015 USENIX Annual Technical Conference (USENIC ATC"15)》;20150710;第347-360页 * |
T-VMI: Trusted Virtual Machine Introspection in Cloud Environments;Lina Jia,et al.;《2017 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing》;20170517;第478-487页 * |
一种基于VT-d技术的虚拟机安全隔离框架研究;杨永娇 等;《信息网络安全》;20151110;第7-14页 * |
基于Intel VT-d技术的虚拟机安全隔离研究;林昆;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110715;正文第14-50页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109858288A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109858288B (zh) | 实现虚拟机安全隔离的方法与装置 | |
Weisse et al. | Foreshadow-NG: Breaking the virtual memory abstraction with transient out-of-order execution | |
US20220027287A1 (en) | System for address mapping and translation protection | |
US11681793B2 (en) | Technologies for object-oriented memory management with extended segmentation | |
US8327059B2 (en) | System and method to enhance memory protection for programs in a virtual machine environment | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
EP1966706B1 (en) | Identifier associated with memory locations for managing memory accesses | |
KR100927750B1 (ko) | 무단 변경 방지 방법, 무단 변경 방지 프로세서, 무단 변경방지 제품, 무단 변경 방지 시스템 | |
US7739466B2 (en) | Method and apparatus for supporting immutable memory | |
US7380049B2 (en) | Memory protection within a virtual partition | |
KR102189296B1 (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
US20130091568A1 (en) | Systems and methods for secure in-vm monitoring | |
US20080077767A1 (en) | Method and apparatus for secure page swapping in virtual memory systems | |
CN106970823B (zh) | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 | |
CN103858129A (zh) | 用于在系统管理程序环境中进行内核rootkit保护的系统和方法 | |
US20160042195A1 (en) | Embedding secret data in code | |
KR102075701B1 (ko) | 명령어 레벨 데이터 격리 방법 및 장치 | |
CN108491249B (zh) | 一种基于模块权能的内核模块隔离方法及系统 | |
CN117494108B (zh) | 可信执行环境实现方法、计算机设备及存储介质 | |
Lin et al. | HyperMI: a privilege-level VM protection approach against compromised hypervisor | |
CN117494108A (zh) | 可信执行环境实现方法、计算机设备及存储介质 | |
CN116561824A (zh) | 在机密计算架构中管理内存的方法和装置 |
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 |