CN110892388B - 增强用户空间与内核空间的隔离性的方法和装置 - Google Patents
增强用户空间与内核空间的隔离性的方法和装置 Download PDFInfo
- Publication number
- CN110892388B CN110892388B CN201880004375.1A CN201880004375A CN110892388B CN 110892388 B CN110892388 B CN 110892388B CN 201880004375 A CN201880004375 A CN 201880004375A CN 110892388 B CN110892388 B CN 110892388B
- Authority
- CN
- China
- Prior art keywords
- page table
- virtual machine
- page
- kernel
- guest
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种增强用户空间与内核空间的隔离性的方法和装置,将扩展页表拆分为内核态扩展页表和用户态扩展页表,使得用户态代码不能访问内核空间中的部分或全部内容,和/或,使得内核态代码不能访问用户空间中的部分内容,从而增强了用户空间和内核空间的隔离性,避免内核空间中的内容发生泄漏。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种增强用户空间与内核空间的隔离性方法和装置。
背景技术
由于处理器访问内存的速度相对处理器自身的计算速度差距很大,现代处理器为了提高性能,广泛采用了缓存(Cache)机制来对内存中的数据进行高速缓存。处理器在访问内存地址时,先检查该内存地址的内容是否已经被缓存到缓存模块中,如果是,处理器直接从缓存模块中获取该内容,此时会大幅节省访问时间;如果不是,则处理器从内存中读取数据,并缓存到缓存模块中,下次处理器访问该地址时,就可以直接从缓存模块中获取相应的内容。
上述机制有利于提高计算机的性能,然而缓存系统的复杂化也容易引起一些设计缺陷,进而造成可以被恶意利用的系统漏洞。恶意应用可以利用这些漏洞突破应用与内核的隔离,造成内核信息泄露,或者,恶意应用可以利用这些漏洞欺骗内核执行恶意代码。例如,众所周知的熔毁(meltdown)漏洞形成的原因是由于处理器预测执行时对缓存造成的影响在处理器回滚时没有被清除,从而形成了缓存侧信道,造成恶意应用可以探测任意内核地址内容。再比如,恶意应用可以利用应用空间和内核空间都处于同一个进程地址空间的特点,欺骗内核直接跳转执行应用代码,从而实现提权攻击。这些都是由于应用与内核的隔离被突破所造成的结果,这种隔离失效会造成内核机密数据泄露或内核被欺骗执行恶意应用代码等。
发明内容
本申请提供一种增强用户空间与内核空间的隔离性的方法和装置,将扩展页表拆分为内核态扩展页表和用户态扩展页表,使得用户态代码不能访问内核空间中的部分或全部内容,和/或,使得内核态代码不能访问用户空间中的部分内容,从而增强了用户空间和内核空间的隔离性,避免内核空间中的内容发生泄漏。
第一方面,提供了一种增强用户空间与内核空间的隔离性的方法,应用于包括虚拟机和虚拟机监控器的虚拟化系统,虚拟机监控器用于管理虚拟机,该方法包括:虚拟机监控器创建至少两个扩展页表,该至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,用户态扩展页表用于在虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,内核态扩展页表用于在虚拟机执行内核态代码时被运行所述虚拟机的处理器调用;虚拟机监控器对用户态扩展页表和/或内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过内核态扩展页表被映射至无效页表页。
当应用请求访问客户机虚拟地址时,该虚拟地址首先被翻译成客户机物理地址。若当前虚拟机执行内核态代码,则处理器查找内核态扩展页表;若当前虚拟机执行用户态代码,则处理器查找用户态扩展页表。随后处理器根据目标扩展页表确定与上述客户机物理地址对应的主机物理地址,随后读取该主机物理地址存储的内容。由于用户态扩展页表将客户页表中用于翻译内核态客户机虚拟地址的页表页映射至无效页表页,因此,该内核态客户机虚拟地址无法被成功翻译成主机物理地址,也就是对该主机物理地址的访问无法获得成功,从而增强了用户空间与内核空间的隔离性。另外,由于内核态扩展页表将客户页表中部分用于翻译用户态客户机虚拟地址的页表页映射至无效页表页,因此,该用户态客户机虚拟地址无法被成功翻译成主机物理地址,也就是对该主机物理地址访问无法获得成功,从而增强了用户空间与内核空间的隔离性。
此外,由于上述方案仅需切换扩展页表,而切换扩展页表的速率快于切换客户页表的速率,并且,切换扩展页表无需清空转换检测缓冲区(translation lookasidebuffer,TLB),因此,相对于通过切换客户页表增强用户空间与内核空间的隔离性的方案,本申请提供的方案在避免内核空间中的内容发生泄漏的同时减小了对应用性能的影响。
可选地,上述无效页表页为内容全为0的主机物理页,或者内容为其它能够阻止客户机虚拟地址被成功翻译的数据的主机物理页,如全部为255的主机物理页。
可选地,虚拟机监控器创建至少两个扩展页表之前,所述方法还包括:虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的页表页。
由于客户页表中用于翻译内核态客户机虚拟地址的页表页会发生变化,因此,上述方案可以动态捕捉客户页表中用于翻译内核态客户机虚拟地址的页表页,并阻止用户态扩展页表将该页表页映射至对应的主机物理页,增强了用户空间和内核空间的隔离性。
可选地,所述客户页表包括4级页表页和3级页表页,虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的页表页,包括:虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的3级页表页。
由于一个四级页表页管辖的客户机虚拟地址范围过大,无法在四级页表的层次区分用于翻译内核态客户机虚拟地址的页表页和用于翻译用户态客户机虚拟地址的页表页。此外,由于3级页表页的数量小于2级页表页的数量和1级页表页的数量,因此,上述方案可以在实时追踪客户页表中用于翻译内核态客户机虚拟地址的页表页的同时减小追踪客户页表页的代价。
可选地,虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的3级页表页,包括:虚拟机监控器将客户页表中用于翻译内核态客户机虚拟地址的3级页表页的读写属性设置为虚拟机只读,其中,所述客户页表中虚拟机只读的页表页用于在被虚拟机修改时触发虚拟机退出;当虚拟机退出被触发时,虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的3级页表页是否被填满;当客户页表中用于翻译内核态客户机虚拟地址的3级页表页被填满时,虚拟机监控器将客户页表中全部4级页表页的读写属性设置为虚拟机只读;虚拟机监控器执行虚拟机进入操作;当虚拟机退出再次被触发时,虚拟机监控器确定4级页表页是否被修改;当4级页表页被修改时,虚拟机监控器根据被修改的4级页表页确定客户页表中新增的用于翻译内核态客户机虚拟地址的3级页表页。
当客户页表中用于翻译内核态客户机虚拟地址的3级页表页被填满时,可能需要新增用于翻译内核态客户机虚拟地址的3级页表页,新增3级页表页需要修改4级页表页,因此,通过将4级页表页的读写属性设置为虚拟机只读,可以监控4级页表页的修改情况,当虚拟机修改4级页表页时,触发虚拟机退出,虚拟机监控器检查4级页表页是否被修改,根据被修改的4级页表页确定客户页表中新增的用于翻译内核态客户机虚拟地址的3级页表页,避免因遗漏客户页表中新增的用于翻译内核态客户机虚拟地址的3级页表页导致应用通过该3级页表页访问到内核内容,从而增强了用户空间和内核空间的隔离性。
可选地,所述方法还包括:虚拟机监控器将客户页表中读写属性为虚拟机只读的3级页表页和4级页表页映射至第一客户机物理地址,第一客户机物理地址与第二客户机物理地址相异,第一客户机物理地址在内核态扩展页表中的读写属性为虚拟机只读,第二客户机物理地址在用户态扩展页表和内核态扩展页表中的读写属性为虚拟机可读可写,其中,第一客户机物理地址为虚拟机使用的客户机物理地址,第二客户机物理地址为处理器在进行地址翻译时使用的客户机物理地址,并且,第一客户机物理地址与第二客户机物理地址被映射到相同的主机物理地址。
由于处理器每次使用客户页表中的页表页翻译客户机虚拟地址时,均会在使用的页表页中添加一个特殊的访问标记位,因此,若页表页的读写属性为虚拟机只读,则将触发大量的虚拟机退出,影响虚拟机的性能,本申请提出的上述方案将虚拟机使用的客户机物理地址与处理器使用的客户机物理地址分离,并将二者映射至相同的主机物理地址,从而可以在追踪客户页表中用于翻译内核态客户机虚拟地址的页表页的同时避免处理器使用页表页进行地址翻译触发虚拟机退出。
可选地,虚拟机监控器确定客户页表中用于翻译内核态客户机虚拟地址的页表页之前,所述方法还包括:虚拟机监控器获取基地址修改信息,基地址修改信息用于指示客户页表的存储位置;虚拟机监控器根据所述基地址修改信息获取客户页表。
若发生虚拟机切换,则虚拟机使用的客户页表也会不同,因此,虚拟机监控器通过获取基地址修改信息可以获取当前使用的客户页表,从而追踪到当前虚拟机使用的客户页表中用于翻译内核态客户机虚拟地址的页表页。
可选地,虚拟机监控器位于第一主机上,虚拟机监控器创建至少两个扩展页表之前,所述方法还包括:虚拟机监控器使用虚拟机热迁移技术将虚拟机从第一主机迁移至第二主机,第一主机的虚拟机监控器不包括用户态扩展页表和内核态扩展页表;虚拟机监控器在第一主机的虚拟机内核态入口写入第一切换代码,以及,在第一主机的虚拟机内核态出口写入第二切换代码,其中,第一切换代码用于将用户态扩展页表切换至内核态扩展页表,第二切换代码用于将内核态扩展页表切换至用户态扩展页表;虚拟机监控器对用户态扩展页表和/或内核态扩展页表执行映射处理之后,所述方法还包括:虚拟机监控器使用虚拟机热迁移技术将虚拟机从第二主机迁移至第一主机。
上述本申请提供的方法通过使用不同的扩展页表将客户页表中的页表页映射到不同主机物理地址,增强了用户空间和内核空间的隔离性,不需要对客户页表进行处理,因此,无需中断虚拟机的业务,可以通过虚拟机热迁移技术将正在运行的虚拟机迁移至一个正常运行的主机(即,第二主机)上,随后在第一主机上对扩展页表以及虚拟机内核态的出入口进行处理,待处理完成后再将虚拟机迁移回第一主机,从而可以在不中断业务的前提下加强虚拟机的安全性。
可选地,上述第一切换代码和第二切换代码用于调用第一主机的处理器的扩展页表切换功能。
使用处理器的扩展页表切换功能切换扩展页表可以避免触发虚拟机退出,从而提高了虚拟机的性能。
第二方面,提供了一种增强用户空间与内核空间的隔离性的装置,该装置可以实现上述第一方面所涉及的方法中各个步骤所对应的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元或模块。
在一种可能的设计中,该装置包括处理器,该处理器被配置为支持该装置执行上述第一方面所涉及的方法中相应的功能。该装置还可以包括存储器,该存储器用于与处理器耦合,其保存该装置必要的程序指令和数据。可选地,该装置还包括通信接口,该通信接口用于支持该装置与其它网元之间的通信。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储了计算机程序代码,该计算机程序代码被处理单元或处理器执行时,使得增强用户空间与内核空间的隔离性的装置执行第一方面所述的方法。
第四方面,提供了一种芯片,其中存储有指令,当其在增强用户空间与内核空间的隔离性的装置上运行时,使得该芯片执行上述第一方面的方法。
第五方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码被增强用户空间与内核空间的隔离性的装置的处理单元或处理器运行时,使得增强用户空间与内核空间的隔离性的装置执行上述第一方面的方法。
第六方面,提供了一种虚拟化系统,所述系统包括虚拟机监控器和虚拟机,所述虚拟机监控器用于管理所述虚拟机,其中,所述虚拟机监控器包括扩展页表构造模块,用于:
创建至少两个扩展页表,所述至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,所述用户态扩展页表用于在所述虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,所述内核态扩展页表用于在所述虚拟机执行内核态代码时被运行所述虚拟机的处理器调用:
对所述用户态扩展页表和/或所述内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过所述用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过所述内核态扩展页表被映射至无效页表页。
附图说明
图1是一种适用于本申请的虚拟化系统的示意图;
图2是本申请提供的一种虚拟化系统的示意图;
图3是本申请提供的一种虚拟化装置的示意图;
图4是本申请提供的一种增强用户空间与内核空间的隔离性的方法的示意图;
图5是本申请提供的一种虚拟机的内核态与用户态切换的示意性流程图;
图6是本申请提供的一种利用扩展页表控制客户页表的内容的方法的示意图;
图7是本申请提供的一种客户页表的结构示意图;
图8是本申请提供的一种追踪3级页表页的示意性流程图;
图9是本申请提供的一种客户页表写保护方法的示意图;
图10是本申请提供的一种在虚拟机工作时升级虚拟机监控器以增强用户空间与内核空间的隔离性的示意性流程图;
图11是本申请提供的一种增强用户空间与内核空间的隔离性的装置的结构示意图;
图12是本申请提供的另一种增强用户空间与内核空间的隔离性的装置的结构示意图。
具体实施方式
为了便于理解本申请的技术方案,首先对本申请涉及的概念做简要介绍。
虚拟机(virtual machine,VM)指通过虚拟机软件在物理设备上模拟出的虚拟设备。对于在虚拟机中运行的应用程序而言,这些虚拟机就像真正的物理设备那样进行工作,虚拟机上可以安装客户机操作系统(operating system,OS)和应用程序,虚拟机还可访问网络资源。
虚拟机监控器(virtual machine monitor,VMM)用于在一台物理机器上虚拟出多个虚拟运行环境,每个虚拟运行环境拥有与真实机器一样的功能。
下面将结合附图,对本申请中的技术方案进行描述。
图1示出了一种适用于本申请的虚拟化系统。
该虚拟化系统100包括:
主机110:为VM提供中央处理器(central processing unit,CPU)、存储器、输出/输出(input/output,I/O)设备等硬件资源。
VMM120:通过硬件驱动程序将主机110提供的硬件资源映射为虚拟资源,以便于VM使用,例如,将物理地址空间映射为虚拟地址空间。
VM120上运行有一个或多个VM,VM也可称为客户机,每个VM上运行有客户机OS(Guest OS),每个客户机OS上运行有一个或多个应用(application,APP)。
在虚拟化系统中,CPU使用不同级别的权限运行VM中的客户机OS内核(Guest OSKernel)和APP,使用内核态运行客户机OS内核,使用用户态运行VM中的APP,其中,当VM执行内核态程序时VM处于内核态,当VM执行用户态程序时VM处于用户态。一般来说,APP的权限级别比较低,不能直接读取和修改内核空间的内容,需要VM从用户态切换至内核态以便开始执行内核态程序。客户机OS内核是内核态程序,APP是用户态程序。
客户机OS内核和APP在运行时都需要虚拟地址空间(也可称为“虚拟空间”),客户机OS内核运行在内核态虚拟空间(也可称为“内核空间”),内核空间中存放的是客户机OS内核的代码和数据,属于内核空间的客户机虚拟地址(guest virtual address,GVA)称为内核态GVA。APP运行在用户态虚拟空间(也可称为“用户空间”),用户空间存放的是APP的代码和数据,属于用户空间的GVA称为用户态GVA。
VM中的用户态程序或内核态程序均使用GVA访问数据,GVA能够通过客户页表(guest page table,GPT)被翻译为客户机物理地址(guest physical address,GPA),GPA能够通过扩展页表被翻译为主机物理地址(host physical address,HPA)。
不同的厂商提供的处理器所使用的客户页表和扩展页表可能不同,例如,英特尔(Intel)处理器使用的用于翻译GPA的页表称为扩展页表(extended page table,EPT),超微半导体(advanced micro devices,AMD)处理器使用的用于翻译GPA的页表称为嵌套页表(nested page table,NPT),由于二者均用于对GPT翻译的结果做进一步翻译,因此,可以将EPT和NPT统称为扩展页表,本申请以英特尔处理器为例进行描述,但不代表本申请提供的技术方案仅能够应用于英特尔处理器。
图2示出了本申请提供的一种适用于英特尔处理器的虚拟化系统。
如图2所示,GPT保存在客户机OS1中,EPT保存在VMM120中。VMM120中的EPT分为用户态EPT和内核态EPT两类。当VM1处于用户态时,用户态GVA通过GPT被翻译成GPA,GPA通过用户态EPT被翻译成HPA;当VM1处于内核态时,内核态GVA通过GPT被翻译成GPA,GPA通过内核态EPT被翻译成HPA。
由于VMM120使用不同的EPT映射不同的GPA,VMM120可以控制GVA到HPA的映射过程,例如,当APP请求访问内核态GVA时,VMM120可以阻止该内核态GVA至HPA的翻译,防止APP随意读取内核空间中的内容,因此,图2所示的虚拟化系统能够增强内核空间与用户空间的隔离性。
图3示出了本申请提供的一种虚拟化装置,能够创建如图2所示的虚拟化系统。
如图3所示,该虚拟化装置包括扩展页表构造模块121、客户页表追踪模块122、动态镜像修改模块123和恶意页表切换防御模块124。
扩展页表构造模块121负责为VM构造用户态EPT和内核态EPT。客户页表追踪模块122负责追踪VM对GPT的修改,从而帮助扩展页表构造模块121实时调整EPT的内容。动态镜像修改模块123负责在VM内核镜像中插入EPT切换代码,在VM进行用户态与内核态切换时切换相应的EPT。最终,恶意页表切换防御模块124负责防止恶意APP在VM处于用户态时将用户态EPT切换至内核态EPT。
下文将详细介绍上述各个模块的功能。
下面,将基于图2所示的虚拟化系统对本申请提供的增强用户空间与内核空间的隔离性的方法进行说明。
图4示出了本申请提供的一种增强用户空间与内核空间的隔离性的方法100,该方法可以应用于VMM120,即,方法100可以由VMM120中的扩展页表构造模块121执行,方法100包括:
S110,创建至少两个扩展页表,该至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,用户态扩展页表用于在虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,内核态扩展页表用于在虚拟机执行内核态代码时被运行所述虚拟机的处理器调用。
S120,对用户态扩展页表和/或内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过内核态扩展页表被映射至无效页表页。
当APP请求访问内核态GVA时,该GVA首先被GPT翻译成对应的GPA。若当前VM处于内核态,则处理器查找内核态EPT;若当前VM处于用户态,则处理器查找用户态EPT。
随后处理器根据目标扩展页表确定与上述GPA对应的HPA,随后读取该HPA所对应的内核空间存储的内容。由于用户态EPT将GPT中部分或全部用于翻译内核态GVA的页表页映射至无效页表页,因此,用户态代码中引用的虚拟机内核态地址无法成功被翻译成对应的主机物理地址,从而增强了用户空间与内核空间的隔离性。另外,由于内核态EPT将GPT中部分用于翻译用户态GVA的页表页映射至无效页表页,因此,内核程序被执行时不会被恶意软件欺骗导致直接跳转执行用户空间的代码,从而增强了用户空间与内核空间的隔离性。
例如,若内核空间中存储的一些内容的重要性相对较低,则VMM可以允许VM中运行的一些APP(例如,一些通过多次安全验证的APP)访问这些内容,即,VMM通过用户态EPT将GPT中的部分用于翻译内核态GVA的页表页映射至无效页表页。
又例如,若内核空间中存储的内容的重要性均较高,则VMM可以禁止VM中运行的所有APP访问内核空间中的全部内容,即,VMM通过用户态EPT将GPT中的全部用于翻译内核态GVA的页表页映射至无效页表页。
再例如,VMM可以禁止VM中运行的内核态代码访问用户代码,即,VMM通过内核态EPT将GPT中部分用于翻译用户应用的代码段的GVA的页表页映射至无效页表页。
此外,由于上述方案仅需切换EPT,而切换EPT的速率快于切换GPT的速率,并且,切换EPT无需清空TLB,因此,相对于通过切换GPT增强用户空间与内核空间的隔离性的方案,本申请提供的方案在避免内核空间中的内容发生泄漏的同时减小了对应用性能的影响。
可选地,上述无效页表页为内容全为0的主机物理页,或者内容为其它能够阻止客户机虚拟地址被成功翻译的数据的主机物理页,如全部为255的主机物理页。
图5示出了本申请提供的一种VM的内核态与用户态切换的示意性流程图。
如图5所示,该切换流程包括:
S501,当中断或者系统调用发生时,CPU将根据某些特定寄存器确定相应处理函数(与中断或者系统调用相关的函数)的入口位置,并执行跳转。在本申请中,所有中断与系统调用的处理函数入口都被设置为扩展页表切换代码。
S502,扩展页表切换代码调用EPT切换(EPT SWITCHING)指令,将VM所用的用户态EPT切换至内核态EPT,随后跳转到VM内核中的中断或系统调用处理函数。
S503,客户机OS正常处理中断或者系统调用,此时如果再次发生中断,说明当前中断的优先级比前一次中断的优先级高,步骤将跳转到S501。
S504,客户机OS正常返回用户程序,恢复用户程序的寄存器内容(即,恢复应用程序的上下文)。
S505,CPU跳转至扩展页表切换模块,切换至用户态EPT。
S506,CPU执行用户态返回指令,进入用户态继续运行。
由于GPT中用于翻译内核态GVA的页表页会发生变化,因此,VMM120可以通过客户页表追踪模块122动态捕捉GPT中用于翻译内核态GVA的页表页,并通过扩展页表构造模块121修改用户态EPT,以阻止旧的用户态EPT将该页表页映射至对应的主机物理页。
因此,在S110之前,VMM120还需要执行:
确定GPT中用于翻译内核态GVA的页表页。
图6示出了本申请提供的一种利用EPT控制GPT的示意图。
图6中,客户机虚拟地址包括内核态客户机虚拟地址和用户态客户机虚拟地址,二者的分界线如图中的虚线所示,网格填充的区域(包含黑色填充区域)表示虚拟地址空间及其映射,黑色填充区域表示虚拟地址页及其映射,黑色填充区域之间的实线表示两个页之间的映射关系。图6中的虚线表示客户页表映射的地址范围。
GPT中的每一个页表页都会通过EPT被映射到一个主机物理页上。而EPT能够控制该客户物理页到主机物理页的映射,扩展页表构造模块121将建立两张页表:内核态EPT以及用户态EPT,对于内核态EPT,其对某一客户页表页的映射保持不变;而对于用户态EPT,某些客户物理页将被映射到一个新的主机物理页(例如,图6中所示的内容全为0的主机物理页)上。通过控制这一新主机物理页中的内容,扩展页表构造模块121能够控制GPT中的内容,从而可以阻止GPT中用于翻译内核态GVA的页表页映射至对应的主机物理页。
可选地,上述GPT包括4级页表页和3级页表页,VMM120确定GPT中用于翻译内核态GVA的页表页,包括:
VMM120确定(即,追踪)GPT中用于翻译内核态GVA的3级页表页。
由于一个4级页表页管辖的GVA的范围过大,无法在四级页表的层次区分用于翻译内核态GVA的页表页和用于翻译用户态GVA的页表页。此外,由于3级页表页的数量小于2级页表页的数量和1级页表页的数量,因此,上述方案可以在实时追踪GPT中用于翻译内核态GVA的页表页的同时减小追踪客户页表页的代价。
图7示出了本申请提供一种GPT的结构示意图。
图7中,黑色填充表示内核页表项也就是映射内核态虚拟地址的页表项。斜线填充表示用户页表项,也就是映射用户态虚拟地址的页表项。箭头表示虚拟地址的翻译过程。
对于一个GVA,其需要经过4层的页表翻译,最终在一级页表中找出对应的GPA。同时,在Linux中内核空间与用户空间分别使用独立的128TB的虚拟地址空间,并且对于不同的用户进程,内核空间的地址空间映射都是相同的。也就是说,在不同用户进程的页表中,内核空间所使用的1/2/3级页表页都是一样的。利用这一特点,扩展页表构造模块121可以通过修改用户态EPT,将GPT中用于进行内核态虚拟地址翻译的3级页表页映射到新的主机物理页上,并将该新的主机物理页的内容置零。
当CPU运行在用户态时(即,VM处于用户态),使用用户态EPT翻译GVA,在翻译内核态GVA时,会发现用于翻译该内核态GVA的客户页表页的内容为零,从而导致翻译失败。从而有效防治了恶意应用通过熔毁漏洞窃取内核数据。
一种追踪3级页表页方法是捕捉VM中所有修改页表基地址的操作,使VM陷入到VMM。VMM将所有的4级页表页标记为只读,从而使得每次VM修改4级页表页时都将陷入到VMM,而客户页表追踪模块122也就能实时找到所有启用的用以翻译内核态GVA的3级页表页。
例如,VMM120确定GPT中用于翻译内核态GVA的页表页之前,首先获取基地址修改信息,该基地址修改信息用于指示GPT的存储位置;再根据基地址修改信息获取GPT。
基地址修改信息即CPU中保存页表基地址的寄存器的值。在英特尔平台上,保存页表基地址的寄存器是CR3,当发生虚拟机切换时,CR3中的值会发生变化,VMM120通过读取CR3中的值获取基地址修改信息。
上述方案使得VMM可以通过获取基地址修改信息获取当前使用的GPT,从而追踪到当前VM使用的GPT中用于翻译内核态GVA的页表页。
然而上述方法会导致大量不必要的虚拟机退出,从而影响了VM的性能。针对Linux操作系统的特性,本申请提出了一种高效的3级页表页追踪方法。
在Linux操作系统中,大部分内核虚拟地址段的长度都是保持不变的(例如代码段、直接映射段等)。同时,部分可变的虚拟地址段也都是线性增长,也就是说,只有当一个3级页表页中的所有条目都被使用过之后,才申请一个新的三级页表页。利用这一特点,客户页表追踪模块122在VM启动完成后首先找到所有用以翻译内核态GVA的3级页表页,并将其设为VM只读。当某一3级页表页被填满时,此时客户机OS将申请新的3级页表页,VMM将所有的4级页表页设为VM只读,以捕获新申请的3级页表页。由于Linux操作系统在启动后修改或新建3级页表页的次数很少,此方法能够减少大量的虚拟机退出。
此外,上述方案能够通过被修改的4级页表页确定GPT中新增的用于翻译内核态GVA的3级页表页,避免因遗漏GPT中新增的用于翻译内核态GVA的3级页表页导致应用通过该3级页表页访问到内核内容,从而增强了用户空间和内核空间的隔离性,并减少了VM退出的次数,提升了虚拟机性能。
具体的步骤如下所述。
VMM120确定GPT中用于翻译内核态GVA的3级页表页,包括:
VMM120将GPT中用于翻译内核态GVA的3级页表页的读写属性设置为VM只读,其中,该GPT中VM只读的页表页被VM修改时触发虚拟机退出(VM exit)。
当虚拟机退出被触发时,VMM120确定GPT中用于翻译内核态GVA的3级页表页是否被填满。
当GPT中用于翻译内核态GVA的3级页表页被填满时,VMM120将GPT中全部4级页表页的读写属性设置为虚拟机只读。
VMM120执行虚拟机进入(VM entry)操作。相对于虚拟机退出,这里指的是虚拟机开始工作。
当虚拟机退出再次被触发时,VMM120确定4级页表页是否被修改。
当4级页表页被修改时,VMM120根据被修改的4级页表页确定GPT中新增的用于翻译内核态GVA的3级页表页。
图8示出了本申请提供的一种追踪3级页表页的示意性流程图。该追踪流程包括:
S801,VM启动时,VMM捕获VM启用的客户页表,同时识别所有用于翻译内核态GVA的3级页表页。之后将这些3级页表页设置为VM只读。
S802,当客户机OS修改内核虚拟地址对应的3级页表页时,将陷入到VMM中的客户页表追踪模块。
S803,如果本次写操作对象不是3级页表页的最后一个条目,那么VMM确定不会有新的3级页表页出现,客户页表追踪模块完成写操作并返回S802。如果本次写操作对象是3级页表页的最后一个条目,那么VMM确定之后即将新增3级页表页。
S804,将所有4级页表页的写保护开启,开始捕捉四级页表页的写操作。
S805,如果某次对4级页表页的写操作新增了用于翻译内核态GVA的3级页表页,那么将该页加入追踪列表,并进入S802。
由于CPU每次使用GPT中的页表页翻译GVA时,均会在使用的页表页中添加一个特殊的访问标记位(access bit),因此,该机制使得VM的所有内存访问操作均会对页表页进行修改,若页表页的读写属性为VM只读,则将触发大量的虚拟机退出,影响VM的性能。
为了解决这一问题,本申请提出了一种GPT写保护方法,其能够在捕获VM对GPT的修改的同时,避免产生大量的虚拟机退出。
如图9所示,黑色填充的矩形以及白色填充的矩形均表示页表页,箭头表示客户机操作系统或者处理器读取相应的页表页,实线表示不同地址之间的映射关系,虚线表示新建的客户机虚拟地址与处理器使用的客户机物理地址的映射关系。
客户机OS通过GVA访问GPT,而当VM运行时,处理器运行在非根(non-root)模式下,使用GPA访问页表。对于处理器使用的GPA,客户页表追踪模块122在2个EPT(即,内核态EPT和用户态EPT)中将该GPA映射为VM可读可写,从而允许处理器更新GPT中的访问标记位。客户页表追踪模块122同时修改GPT的内容,将GPT对应的GVA映射到一个新的GPA上,之后在内核态EPT中将该新的GPA映射为VM只读。由于两个不同的GPA被映射到同一HPA,因此它们对应的内容是一致的。但是通过权限的控制,客户机OS在访问GPT时将会触发虚拟机退出。
例如,VMM120将GPT中读写属性为虚拟机只读的3级页表页和4级页表页映射至第一GPA,第一GPA与第二GPA相异,第一GPA在内核态扩展页表中的读写属性为虚拟机只读,第二GPA在用户态扩展页表和内核态扩展页表中的读写属性为虚拟机可读可写,其中,第一GPA为所述虚拟机使用的客户机物理地址,第二GPA处理器使用的客户机物理地址,并且,第一GPA与第二GPA被映射到相同的HPA。
在本申请中,“第一”、“第二”等词语仅用于区分不同的名词,不代表对其所修饰的名词的任何限定。上文未对第一GPA做任何限定,因此,第一GPA可以是任意一个GPA,第二GPA可以是与第一GPA相异的任意一个GPA。
上述方案可以在追踪GPT中用于翻译内核态GVA的页表页的同时避免处理器使用客户页表页进行地址翻译触发虚拟机退出。
上文介绍了在具有用户态EPT和内核态EPT的虚拟化系统中增强用户空间和内核空间的隔离性的方案,然而,对于一些不包含用户态EPT和内核态EPT的虚拟化系统来说,其需要通过升级来创建用户态EPT和内核态EPT,可以通过动态镜像修改模块123对不包含用户态EPT和内核态EPT的虚拟化系统进行升级。
作为一个可选的示例,在S110之前,方法100还包括:
VMM120使用虚拟机热迁移技术将VM1从第一主机(例如,硬件层110)迁移至第二主机。
VMM120在第一主机的虚拟机内核态入口写入第一切换代码,以及,在第一主机的虚拟机内核态出口写入第二切换代码,其中,第一切换代码用于将用户态EPT切换至内核态EPT,第二切换代码用于将内核态EPT切换至用户态EPT。
该步骤可以由动态镜像修改模块123执行。
在S120之后,方法100还包括:
VMM120使用虚拟机热迁移技术将虚拟机从第二主机迁移至第一主机。
VMM120通过与第二主机的VMM配合使用虚拟机热迁移技术完成VM1的热迁移处理。
上述访问主机物理地址的方法通EPT切换增强了用户空间和内核空间的隔离性,不需要对GPT进行处理,因此,无需中断VM的业务,可以通过虚拟机热迁移技术将正在运行的VM迁移至一个正常运行的主机(即,第二主机)上,随后在第一主机上对EPT以及虚拟机内核态的出入口进行处理,待处理完成后再将VM迁移回第一主机,从而可以在不中断业务的前提下加强VM的安全性。
动态镜像修改模块123在第一主机上对虚拟机内核态的出入口进行处理的一个可选的示例如下。
动态镜像修改模块123将实时地修改客户操作系统,在进入内核态、退出内核态时插入扩展页表切换指令。一种可用的扩展页表切换指令为VMFUNC,该指令提供EPT切换(EPTSwitching)的能力,能够切换VMM配置好的EPT,并且整个切换过程仅在VM内部完成,而无须触发虚拟机退出。动态镜像修改模块123首先识别所有进出VM内核态的位置,之后插入扩展页表切换指令。
VM内核态入口识别:动态镜像修改模块123利用体系结构特性,定位进入内核态的入口。在X86平台之上,只有中断以及系统调用会产生从用户态至内核态的迁移,而对应的内核态入口均记录在特定的硬件寄存器中。动态镜像修改模块123将捕捉对这类寄存器的修改,从而找到所有的内核态入口。
VM内核态出口识别:由于内核态只能通过部分特殊的汇编指令(如sysret)返回用户态,因此,动态镜像修改模块123能够通过扫描VM内核代码定位出所有内核态的出口位置。
EPT切换代码植入:EPT切换代码即上述第一切换代码和第二切换代码。动态镜像修改模块123首先将EPT切换代码映射至VM中。例如,动态镜像修改模块123通过修改GPT,将某一段内核态虚拟页映射至到一块客户物理页上,之后将该客户物理页映射到一块写有EPT切换代码的主机物理页上。
在内核态的入口处,动态镜像修改模块123将首先修改硬件寄存器中储存的不同中断、系统调用的处理函数入口,将其指向事先映射好的EPT切换代码,在完成页表切换之后再跳转至原有处理函数执行。
在内核态的出口处,动态镜像修改模块123将原有的退出内核态指令重写为一条跳转指令,跳转至EPT切换代码处,将内核态EPT切换至用户态EPT后再执行退出指令返回用户怒。
可选地,上述第一切换代码和第二切换代码用于调用第一主机的处理器的EPT切换功能。
第一主机的处理器的使用处理器的EPT切换功能可以是硬件电路提供的功能或者CPU微码提供的功能,本申请对此不作限定。通过调用处理器的EPT切换功能可以避免触发虚拟机退出,从而提高了VM的性能。
图10示出了本申请提供的一种在VM工作时升级VMM以增强用户空间与内核空间的隔离性的示意性流程图。该流程包括:
S1001,待保护的VM开始运行在没有启用方法100的VMM上,因此需要将其迁移至另一VMM。此处可以使用现有的热迁移技术,首先进行预迁移操作,拷贝虚拟机状态。此时VM仍在运行。
S1002,暂停VM,拷贝剩余的少量状态信息。
S1003,将VM迁移至另一VMM上。
S1004,客户镜像修改模块识别上述VM的内核态的出入口。
S1005,客户镜像修改模块在上述VM内部插入EPT切换代码。
S1006,将虚拟机回迁,继续运行该虚拟机。
扩展页表构造模块121、客户页表追踪模块122、动态镜像修改模块123能够确保VM在进出内核态时,切换相应的EPT,从而防止VM运行的用户态代码利用meltdown漏洞窃取内核数据。然而由于EPT切换指令本身能够在用户态VM执行,因此攻击者可以首先利用EPT切换指令切换到内核态EPT,之后进行攻击。
为了抵御这类攻击,VMM可以通过恶意页表切换防御模块124阻止在用户态切换至内核扩展页表这一操作。例如,恶意页表切换防御模块124控制内核态EPT,将所有非内核代码段均标记位不可执行,一旦用户态代码请求切换内核扩展页表,用户态代码将无法执行。在内核态EPT中,只有内核代码以及内核模块代码两部分具有可执行权限,前者在VM启动时会被加载到特定的GVA,而后者则可以动态加载到某一特定的GVA,也可被动态移除。
作为一个可选的示例,恶意页表切换防御模块124首先在内核态EPT中,将所有客户物理内存均标记为不可执行。在启动VM时,内核代码所在的GPA将被识别并标记为可执行。对于内核模块,恶意页表切换防御模块124首先利用客户页表追踪模块122实时追踪所有内核模块对应的客户页表页的写操作。一旦发现新加载的内核模块,则将其所在的客户物理地址标记为可执行;对于删除的内核模块,则将其原来所占用的客户物理地址标记为不可执行。
上文详细描述了本申请提供的增强用户空间与内核空间的隔离性的方法的示例。可以理解的是,增强用户空间与内核空间的隔离性的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请可以根据上述方法示例对增强用户空间与内核空间的隔离性的装置进行功能单元的划分,例如,可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用集成的单元的情况下,图11示出了上述实施例中所涉及的增强用户空间与内核空间的隔离性的装置的一种可能的结构示意图。装置1100包括:扩展页表构造模块1101,可选地,装置1100还可以包括动态镜像修改模块、客户页表追踪模块和恶意页表切换防御模块中的一个或多个。扩展页表构造模块1101用于装置1100执行图4所示的创建EPT和映射处理步骤。扩展页表构造模块1101还可以用于执行本文所描述的技术的其它过程。装置1100还可以包括存储单元,用于存储装置1100的程序代码和数据。
例如,扩展页表构造模块1101用于执行:
创建至少两个扩展页表,该至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,用户态扩展页表用于在虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,内核态扩展页表用于在虚拟机执行内核态代码时被运行所述虚拟机的处理器调用。
对用户态扩展页表和/或内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过内核态扩展页表被映射至无效页表页。
扩展页表构造模块1101可以是处理单元的组成部分,处理单元可以是处理器或控制器,例如可以是中央处理器(central processing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。获取单元1101可以是收发器或通信接口。存储单元可以是存储器。
当处理单元为处理器,存储单元为存储器时,本申请所涉及的增强用户空间与内核空间的隔离性的装置可以为图12所示的装置。
参阅图12所示,该装置1200包括:处理器1202、通信接口1201(可选的)和存储器1203。其中,通信接口1201、处理器1202以及存储器1203可以通过内部连接通路相互通信,传递控制和/或数据信号,虚拟机监控器和虚拟机的实现代码被存储于存储器1203中。
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请提供的增强用户空间与内核空间的隔离性的装置,将扩展页表拆分为内核态扩展页表和用户态扩展页表,使得用户态代码不能访问内核空间中的部分或全部内容,和/或,使得内核态代码不能访问用户空间中的部分内容,从而增强了用户空间和内核空间的隔离性,避免内核空间中的内容发生泄漏。
装置实施例和方法实施例中完全对应,由相应的模块执行相应的步骤,例如获取单元执行方法实施例中的获取步骤,除获取步骤以外的其它步骤可以由处理单元或处理器执行。具体单元的功能可以参考相应的方法实施例,不再详述。
在本申请各个实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施过程构成任何限定。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(readonly memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (21)
1.一种增强用户空间与内核空间的隔离性的方法,其特征在于,所述方法应用于包括虚拟机和虚拟机监控器的虚拟化系统,所述虚拟机监控器用于管理所述虚拟机,所述方法包括:
虚拟机监控器创建至少两个扩展页表,所述至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,所述用户态扩展页表用于在虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,所述内核态扩展页表用于在所述虚拟机执行内核态代码时被运行所述虚拟机的处理器调用;
所述虚拟机监控器对所述用户态扩展页表和/或所述内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过所述用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过所述内核态扩展页表被映射至无效页表页。
2.根据权利要求1所述的方法,其特征在于,所述无效页表页为内容全为0的主机物理页。
3.根据权利要求1或2所述的方法,其特征在于,所述虚拟机监控器创建至少两个扩展页表之前,所述方法还包括:
所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的页表页。
4.根据权利要求3所述的方法,其特征在于,所述客户页表包括4级页表页和3级页表页,所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的页表页,包括:
所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页。
5.根据权利要求4所述的方法,其特征在于,所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页,包括:
所述虚拟机监控器将所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页的读写属性设置为虚拟机只读,其中,所述客户页表中虚拟机只读的页表页用于在被所述虚拟机修改时触发虚拟机退出;
当所述虚拟机退出被触发时,所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页是否被填满;
当所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页被填满时,所述虚拟机监控器将所述客户页表中全部4级页表页的读写属性设置为虚拟机只读;
所述虚拟机监控器执行虚拟机进入操作;
当所述虚拟机退出再次被触发时,所述虚拟机监控器确定所述4级页表页是否被修改;
当所述4级页表页被修改时,所述虚拟机监控器根据被修改的4级页表页确定所述客户页表中新增的用于翻译内核态客户机虚拟地址的3级页表页。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述虚拟机监控器将所述客户页表中读写属性为虚拟机只读的3级页表页和4级页表页映射至第一客户机物理地址,所述第一客户机物理地址与第二客户机物理地址相异,所述第一客户机物理地址在所述内核态扩展页表中的读写属性为虚拟机只读,所述第二客户机物理地址在所述用户态扩展页表和所述内核态扩展页表中的读写属性为虚拟机可读可写,其中,所述第一客户机物理地址为所述虚拟机使用的客户机物理地址,所述第二客户机物理地址为所述处理器使用的客户机物理地址,并且,所述第一客户机物理地址与所述第二客户机物理地址被映射到相同的主机物理地址。
7.根据权利要求1或2所述的方法,其特征在于,所述虚拟机监控器确定所述客户页表中用于翻译内核态客户机虚拟地址的页表页之前,所述方法还包括:
所述虚拟机监控器获取基地址修改信息,所述基地址修改信息用于指示所述客户页表的存储位置;
所述虚拟机监控器根据所述基地址修改信息获取所述客户页表。
8.根据权利要求1或2所述的方法,其特征在于,所述虚拟机监控器位于第一主机上,
所述虚拟机监控器创建至少两个扩展页表之前,所述方法还包括:
所述虚拟机监控器使用虚拟机热迁移技术将所述虚拟机从第一主机迁移至第二主机;
所述虚拟机监控器在所述第一主机的虚拟机内核态入口写入第一切换代码,以及,在所述第一主机的虚拟机内核态出口写入第二切换代码,其中,所述第一切换代码用于将所述用户态扩展页表切换至所述内核态扩展页表,所述第二切换代码用于将所述内核态扩展页表切换至所述用户态扩展页表;
所述虚拟机监控器对所述用户态扩展页表和/或所述内核态扩展页表执行映射处理之后,所述方法还包括:
所述虚拟机监控器使用虚拟机热迁移技术将所述虚拟机从所述第二主机迁移至所述第一主机。
9.根据权利要求8所述的方法,其特征在于,所述第一切换代码和所述第二切换代码用于调用所述第一主机的处理器的扩展页表切换功能。
10.一种增强用户空间与内核空间的隔离性的装置,其特征在于,所述装置应用于包括虚拟机和虚拟机监控器的虚拟化系统,所述虚拟机监控器用于管理所述虚拟机,所述装置包括扩展页表构造模块,用于:
创建至少两个扩展页表,所述至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,所述用户态扩展页表用于在虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,所述内核态扩展页表用于在所述虚拟机执行内核态代码时被运行所述虚拟机的处理器调用;
对所述用户态扩展页表和/或所述内核态扩展页表执行映射处理,其中,客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页通过所述用户态扩展页表被映射至无效页表页,和/或,客户页表中部分用于翻译用户态客户机虚拟地址的页表页通过所述内核态扩展页表被映射至无效页表页。
11.根据权利要求10所述的装置,其特征在于,所述无效页表页为内容全为0的主机物理页。
12.根据权利要求10或11所述的装置,其特征在于,还包括:
客户页表追踪模块,用于
确定所述客户页表中用于翻译内核态客户机虚拟地址的页表页。
13.根据权利要求12所述的装置,其特征在于,所述客户页表包括4级页表页和3级页表页,所述客户页表追踪模块具体用于:
确定所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页。
14.根据权利要求13所述的装置,其特征在于,所述客户页表追踪模块具体用于:
将所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页的读写属性设置为虚拟机只读,其中,所述客户页表中虚拟机只读的页表页用于在被所述虚拟机修改时触发虚拟机退出;
当所述虚拟机退出被触发时,确定所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页是否被填满;
当所述客户页表中用于翻译内核态客户机虚拟地址的3级页表页被填满时,将所述客户页表中全部4级页表页的读写属性设置为虚拟机只读;
执行虚拟机进入操作;
当所述虚拟机退出再次被触发时,确定所述4级页表页是否被修改;
当所述4级页表页被修改时,根据被修改的4级页表页确定所述客户页表中新增的用于翻译内核态客户机虚拟地址的3级页表页。
15.根据权利要求14所述的装置,其特征在于,所述扩展页表追踪模块还用于:
将所述客户页表中读写属性为虚拟机只读的3级页表页和4级页表页映射至第一客户机物理地址,所述第一客户机物理地址与第二客户机物理地址相异,所述第一客户机物理地址在所述内核态扩展页表中的读写属性为虚拟机只读,所述第二客户机物理地址在所述用户态扩展页表和所述内核态扩展页表中的读写属性为虚拟机可读可写,其中,所述第一客户机物理地址为所述虚拟机使用的客户机物理地址,所述第二客户机物理地址为所述处理器使用的客户机物理地址,并且,所述第一客户机物理地址与所述第二客户机物理地址被映射到相同的主机物理地址。
16.根据权利要求10或11所述的装置,其特征在于,所述扩展页表追踪模块还用于:
获取基地址修改信息,所述基地址修改信息用于指示所述客户页表的存储位置;
根据所述基地址修改信息获取所述客户页表。
17.根据权利要求10或11所述的装置,其特征在于,所述虚拟机监控器位于第一主机上,所述装置还包括热迁移模块和动态镜像修改模块,
所述热迁移模块用于:使用虚拟机热迁移技术将所述虚拟机从第一主机迁移至第二主机;
所述动态镜像修改模块用于:在所述第一主机的虚拟机内核态入口写入第一切换代码,以及,在所述第一主机的虚拟机内核态出口写入第二切换代码,其中,所述第一切换代码用于将所述用户态扩展页表切换至所述内核态扩展页表,所述第二切换代码用于将所述内核态扩展页表切换至所述用户态扩展页表;
所述热迁移模块还用于:使用虚拟机热迁移技术将所述虚拟机从所述第二主机迁移至所述第一主机。
18.根据权利要求17所述的装置,其特征在于,所述第一切换代码和所述第二切换代码用于调用所述第一主机的处理器的扩展页表切换功能。
19.一种增强用户空间与内核空间的隔离性的装置,其特征在于,包括:
存储器,用于存储指令,
处理器,与所述存储器耦合,用于调用所述存储器存储的指令执行权利要求1至权利要求9中任一项所述的方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序代码,当所述计算机程序代码被处理单元或处理器执行时,增强用户空间与内核空间的隔离性的装置执行权利要求1至权利要求9中任一项所述的方法的步骤。
21.一种虚拟化系统,其特征在于,所述系统包括硬件层,以及运行于所述硬件层之上的虚拟机监控器、以及运行于所述虚拟机监控器之上的虚拟机,所述虚拟机监控器用于管理所述虚拟机,所述硬件层包括处理器,其中:
所述虚拟机监控器用于创建至少两个扩展页表,所述至少两个扩展页表包括用户态扩展页表和内核态扩展页表,其中,所述用户态扩展页表用于在所述虚拟机执行用户态代码时被运行所述虚拟机的处理器调用,所述内核态扩展页表用于在所述虚拟机执行内核态代码时被运行所述虚拟机的处理器调用;
所述虚拟机监控器还用于对所述用户态扩展页表和/或所述内核态扩展页表执行映射处理,以使所述用户态扩展页表将客户页表中部分或全部用于翻译内核态客户机虚拟地址的页表页映射至无效页表页,和/或,以使所述内核态扩展页表将客户页表中部分用于翻译用户态客户机虚拟地址的页表页映射至无效页表页。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/095334 WO2020010556A1 (zh) | 2018-07-11 | 2018-07-11 | 增强用户空间与内核空间的隔离性的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110892388A CN110892388A (zh) | 2020-03-17 |
CN110892388B true CN110892388B (zh) | 2022-07-22 |
Family
ID=69142133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880004375.1A Active CN110892388B (zh) | 2018-07-11 | 2018-07-11 | 增强用户空间与内核空间的隔离性的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11436155B2 (zh) |
EP (1) | EP3764239B1 (zh) |
CN (1) | CN110892388B (zh) |
WO (1) | WO2020010556A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US10776020B2 (en) * | 2018-08-13 | 2020-09-15 | Red Hat, Inc. | Memory protection in virtualized computer systems using shadow page tables |
CN111752604A (zh) * | 2019-03-27 | 2020-10-09 | 阿里巴巴集团控股有限公司 | 一种具有多个运行模式的处理器 |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
CN113556323B (zh) * | 2021-06-24 | 2023-04-07 | 深圳市邦盛实时智能技术有限公司 | 一种应用于企业内控的旁路无侵入流量采集系统 |
CN115599505B (zh) * | 2021-06-28 | 2024-07-05 | 华为技术有限公司 | 用户态中断请求的处理方法及装置 |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
CN113704007B (zh) * | 2021-09-14 | 2023-11-07 | 上海交通大学 | 利用硬件特性的无服务器计算平台加速系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882113A (zh) * | 2009-05-05 | 2010-11-10 | 北京大学 | 一种基于客户操作系统内核代码替换的内存虚拟化方法 |
CN103257936A (zh) * | 2012-02-17 | 2013-08-21 | 联想(北京)有限公司 | 内存映射方法和内存映射模块 |
US8612711B1 (en) * | 2009-09-21 | 2013-12-17 | Tilera Corporation | Memory-mapped data transfers |
CN104036185A (zh) * | 2014-06-23 | 2014-09-10 | 常熟理工学院 | 基于虚拟化的宏内核操作系统载入模块权能隔离方法 |
US9274974B1 (en) * | 2005-10-21 | 2016-03-01 | Vmware, Inc. | Isolating data within a computer system using private shadow mappings |
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
CN107391225A (zh) * | 2017-07-13 | 2017-11-24 | 北京航空航天大学 | 一种基于多ept列表的监控方法和系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078827B2 (en) * | 2007-07-05 | 2011-12-13 | International Business Machines Corporation | Method and apparatus for caching of page translations for virtual machines |
US8086822B2 (en) * | 2008-05-30 | 2011-12-27 | Vmware, Inc. | In-place shadow tables for virtualization |
US9330013B2 (en) * | 2012-06-28 | 2016-05-03 | Industrial Technology Research Institute | Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith |
CN103164348B (zh) * | 2013-02-28 | 2016-06-08 | 浙江大学 | 一种多系统下对实时操作系统所占用内存的保护方法 |
CN103955438B (zh) * | 2014-05-21 | 2016-11-23 | 南京大学 | 基于硬件辅助虚拟化技术的进程内存保护方法 |
US9870324B2 (en) * | 2015-04-09 | 2018-01-16 | Vmware, Inc. | Isolating guest code and data using multiple nested page tables |
WO2016164424A1 (en) * | 2015-04-09 | 2016-10-13 | Vmware, Inc. | Isolating guest code and data using multiple nested page tables |
CN104809401B (zh) | 2015-05-08 | 2017-12-19 | 南京大学 | 一种操作系统内核完整性保护方法 |
US9842065B2 (en) * | 2015-06-15 | 2017-12-12 | Intel Corporation | Virtualization-based platform protection technology |
CN105446834B (zh) | 2015-11-30 | 2018-10-19 | 华为技术有限公司 | 虚拟机快照的生成方法和装置 |
US10459850B2 (en) * | 2016-09-20 | 2019-10-29 | Advanced Micro Devices, Inc. | System and method for virtualized process isolation including preventing a kernel from accessing user address space |
US10768962B2 (en) * | 2016-12-19 | 2020-09-08 | Vmware, Inc. | Emulating mode-based execute control for memory pages in virtualized computing systems |
CN107797895A (zh) | 2017-05-08 | 2018-03-13 | 中国人民解放军国防科学技术大学 | 一种虚拟机安全监控方法及系统 |
CN107479946B (zh) | 2017-08-16 | 2020-06-16 | 南京大学 | 一种内核模块的交互行为监控方案 |
US11030112B2 (en) * | 2018-05-25 | 2021-06-08 | Red Hat, Inc. | Enhanced address space layout randomization |
-
2018
- 2018-07-11 WO PCT/CN2018/095334 patent/WO2020010556A1/zh unknown
- 2018-07-11 CN CN201880004375.1A patent/CN110892388B/zh active Active
- 2018-07-11 EP EP18926256.1A patent/EP3764239B1/en active Active
-
2020
- 2020-09-30 US US17/038,613 patent/US11436155B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274974B1 (en) * | 2005-10-21 | 2016-03-01 | Vmware, Inc. | Isolating data within a computer system using private shadow mappings |
CN101882113A (zh) * | 2009-05-05 | 2010-11-10 | 北京大学 | 一种基于客户操作系统内核代码替换的内存虚拟化方法 |
US8612711B1 (en) * | 2009-09-21 | 2013-12-17 | Tilera Corporation | Memory-mapped data transfers |
CN103257936A (zh) * | 2012-02-17 | 2013-08-21 | 联想(北京)有限公司 | 内存映射方法和内存映射模块 |
CN104036185A (zh) * | 2014-06-23 | 2014-09-10 | 常熟理工学院 | 基于虚拟化的宏内核操作系统载入模块权能隔离方法 |
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
CN107391225A (zh) * | 2017-07-13 | 2017-11-24 | 北京航空航天大学 | 一种基于多ept列表的监控方法和系统 |
Non-Patent Citations (3)
Title |
---|
"POSTER:Page Table Manipulation Attack";JungSeung Lee等;《CCS "15: Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security》;20151012;第1644-1646页 * |
"基于代码防泄漏的代码复用攻击防御技术";王烨等;《计算机研究与发展》;20161015;第53卷(第10期);第2277-2287页 * |
"基于虚拟机监控器的隐私透明保护";任建宝等;《软件学报》;20150815;第26卷(第8期);第2-3节 * |
Also Published As
Publication number | Publication date |
---|---|
EP3764239A1 (en) | 2021-01-13 |
WO2020010556A1 (zh) | 2020-01-16 |
US20210011856A1 (en) | 2021-01-14 |
CN110892388A (zh) | 2020-03-17 |
US11436155B2 (en) | 2022-09-06 |
EP3764239B1 (en) | 2024-09-11 |
EP3764239A4 (en) | 2021-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110892388B (zh) | 增强用户空间与内核空间的隔离性的方法和装置 | |
Sev-Snp | Strengthening VM isolation with integrity protection and more | |
US11841939B2 (en) | Technologies for object-oriented memory management with extended segmentation | |
US8954959B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU | |
KR101955189B1 (ko) | 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
US7757035B2 (en) | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping | |
US8631170B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU | |
US20140380009A1 (en) | Protected memory view for nested page table access by virtual machine guests | |
BRPI0720921A2 (pt) | Agentes de proteção e modos de privilégio. | |
KR20220045211A (ko) | 캐패빌리티 기입 어드레스 추적 | |
US11741021B2 (en) | Trust domains for peripheral devices | |
US20240362171A1 (en) | Physical memory isolation | |
CN118410500A (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 |