CN112989326A - 一种指令发送方法及装置 - Google Patents

一种指令发送方法及装置 Download PDF

Info

Publication number
CN112989326A
CN112989326A CN202110379558.5A CN202110379558A CN112989326A CN 112989326 A CN112989326 A CN 112989326A CN 202110379558 A CN202110379558 A CN 202110379558A CN 112989326 A CN112989326 A CN 112989326A
Authority
CN
China
Prior art keywords
ept
physical page
gpa
processor
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110379558.5A
Other languages
English (en)
Inventor
张昊中
张扬
邓桥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202110379558.5A priority Critical patent/CN112989326A/zh
Publication of CN112989326A publication Critical patent/CN112989326A/zh
Priority to US18/283,700 priority patent/US20240160464A1/en
Priority to PCT/CN2022/080256 priority patent/WO2022213769A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/54Monitoring 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 adding security routines or objects to programs
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供了一种指令发送方法及装置,涉及计算机技术领域。该方法包括:响应于向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。本发明实施例用于在避免处理器间的指令被攻击者利用的同时避免发送指令时对虚拟机的性能造成较大的影响。

Description

一种指令发送方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令发送方法及装置。
背景技术
在多处理器系统中,处理器经常需要向系统中的其他处理器发送指令,而其中一些指令可能被攻击者利用,对系统安全造成威胁,这种可能被攻击者利用的指令称为敏感指令。例如:处理器间中断(Inter-Processor Interrupt,IPI)指令,可能被攻击者利用,给其它处理器发送中断,造成其它处理器异常中断。
为了提升多处理器系统的安全性,当前虚拟化技术中虚拟机发送IPI等敏感指令的行为会被虚拟机监视器(Hypervisor)截获,由Hypervisor执行实际的敏感指令发送操作,敏感指令发送完成后再将处理器控制权限返还给虚拟机。硬件厂商推出的硬件辅助的虚拟化技术提供了对这种方式的支持,具体为:设置虚拟机自身运行在non-root模式下,Hypervisor运行在root模式下。虚拟机从non-root模式切换到root模式称为VM Exit,表示虚拟机失去处理器的控制权限,由Hypervisor接管处理器的控制权限;从root模式切换到non-root模式称为VM Entry,表示Hypervisor将处理器的控制权限返还给虚拟机,当虚拟机执行发送IPI等敏感指令时,就会发生VM Exit,由Hypervisor执行敏感指令的发送,在发送完成后通过VM Entry获得处理器控制权限。由于当前虚拟化技术中虚拟机在发送IPI等敏感指令时会发生VM Exit,在敏感指令发送完成后还需要通过VM Entry重新获取处理器的控制权限,然而VM Exit和VM Entry会产生极大的性能消耗,因此现有虚拟化技术中的敏感指令发送方式会对虚拟机的性能造成较大的影响。
发明内容
有鉴于此,本发明提供了一种指令发送方法及装置,用于在避免处理器间的指令被攻击者利用的同时避免发送指令时对虚拟机的性能造成较大的影响。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供了一种指令发送方法,应用于第一处理器,所述方法包括:
响应于向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;
根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;
执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,所述将EPT由第一EPT切换为第二EPT,包括:
根据所述第一EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
作为本发明实施例一种可选的实施方式,所述根据所述第一EPT获取跳板代码,包括:
根据第一物理页的客户机物理地址GPA和所述第一EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的宿主机物理地址HPA的映射关系,所述第一页表包括第二物理页的客户机虚拟地址GVA与所述第二物理页的GPA的转换关系;
根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;
根据所述第二物理页的GPA和所述第一EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述根据所述第二EPT获取所述目标代码,包括:
根据第三物理页的GPA和所述第二EPT的第三映射关系访问所述第三物理页,获取第二页表;所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系;所述第二页表包括第四物理页的GVA与所述第四物理页的GPA的转换关系;
根据所述第四物理页的GVA和所述第二页表获取所述第四物理页的GPA;
根据所述第四物理页的GPA和所述第二EPT的第四映射关系访问所述第四物理页,获取所述目标代码;所述第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,在执行所述目标代码之后,所述方法还包括:
根据所述第二EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第二EPT切换为所述第一EPT。
作为本发明实施例一种可选的实施方式,所述根据所述第二EPT获取跳板代码,包括:
根据第一物理页的GPA和所述第二EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一页表包括第二物理页的GVA与所述第二物理页的GPA的转换关系;
根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;
根据所述第二物理页的GPA和所述第二EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述方法还包括:
在执行所述目标代码之前,根据第一GPA对栈指针寄存器ESP和基址指针寄存器EBP进行赋值,所述第一GPA为在所述EPT为所述第二EPT时,所述第一处理器的栈空间对应的GPA;
在执行所述目标代码之后,根据第二GPA对所述ESP和所述EBP进行赋值,所述第二GPA为在所述EPT为所述第一EPT时,所述第一处理器的栈空间对应的GPA。
作为本发明实施例一种可选的实施方式,所述方法还包括:
保存第一寄存器上下文;所述第一寄存器上下文为根据所述第一GPA对所述ESP和所述EBP进行赋值之后,所述第一处理器的寄存器的上下文;
在执行所述目标代码之后,将所述第一处理器的寄存器的上下文还原为所述第一寄存器上下文。
作为本发明实施例一种可选的实施方式,所述方法还包括:
保存第二寄存器上下文,所述第二寄存器上下文为将所述EPT由所述第一EPT切换为所述第二EPT时,所述第一处理器的寄存器的上下文;
在将所述EPT由所述第二EPT切换为所述第一EPT之后,将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文。
作为本发明实施例一种可选的实施方式,所述方法还包括:
在保存所述第二寄存器上下文之前,关闭所述第一处理器的本地中断;
在将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文之后,开启所述第一处理器的本地中断。
作为本发明实施例一种可选的实施方式,所述跳板代码包括:EPTP switch指令;
所述执行所述跳板代码包括:
调用所述跳板代码中的所述EPTP switch指令。
作为本发明实施例一种可选的实施方式,在执行所述跳板代码之后,所述方法还包括:
对所述第二处理器进行安全检查;
若安全检查不通过,则终止向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,在根据所述第一EPT获取跳板代码之前,所述方法还包括:
配置所述第一物理页和所述第二物理页,并在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,在根据所述第二EPT获取所述目标代码之前,所述方法还包括:
配置所述第三物理页和所述第四物理页,并在所述第二EPT中构建所述第三映射关系和所述第四映射关系。
作为本发明实施例一种可选的实施方式,在将所述EPT由第一EPT切换为第二EPT之前,所述方法还包括:
在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读。
作为本发明实施例一种可选的实施方式,在根据所述第二EPT获取跳板代码之前,所述方法还包括:
配置所述第一物理页和所述第二物理页,并在所述第二EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,所述目标指令为处理器间中断IPI指令,所述目标代码为与发送所述IPI指令相关的代码。
第二方面,本发明实施例提供一种指令发送装置,所述指令发送装置包括第一处理器,包括:
切换单元,用于响应于所述指令发送装置的第一处理器向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;
获取单元,用于根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;
执行单元,用于执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,所述切换单元,具体用于根据所述第一EPT获取跳板代码;执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
作为本发明实施例一种可选的实施方式,所述切换单元,具体用于根据第一物理页的客户机物理地址GPA和所述第一EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的宿主机物理地址HPA的映射关系,所述第一页表包括第二物理页的客户机虚拟地址GVA与所述第二物理页的GPA的转换关系;根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;根据所述第二物理页的GPA和所述第一EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元,具体用于根据第三物理页的GPA和所述第二EPT的第三映射关系访问所述第三物理页,获取第二页表;所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系;所述第二页表包括第四物理页的GVA与所述第四物理页的GPA的转换关系;根据所述第四物理页的GVA和所述第二页表获取所述第四物理页的GPA;根据所述第四物理页的GPA和所述第二EPT的第四映射关系访问所述第四物理页,获取所述目标代码;所述第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述切换单元,还用于在所述执行单元执行所述目标代码之后,根据所述第二EPT获取跳板代码;执行所述跳板代码,以将所述EPT由所述第二EPT切换为所述第一EPT。
作为本发明实施例一种可选的实施方式,所述切换单元,具体用于根据第一物理页的GPA和所述第二EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一页表包括第二物理页的GVA与所述第二物理页的GPA的转换关系;根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;根据所述第二物理页的GPA和所述第二EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述执行单元,还用于在执行所述目标代码之前,根据第一GPA对栈指针寄存器ESP和基址指针寄存器EBP进行赋值,所述第一GPA为在所述EPT为所述第二EPT时,所述第一处理器的栈空间对应的GPA;在执行所述目标代码之后,根据第二GPA对所述ESP和所述EBP进行赋值,所述第二GPA为在所述EPT为所述第一EPT时,所述第一处理器的栈空间对应的GPA。
作为本发明实施例一种可选的实施方式,所述执行单元,还用于保存第一寄存器上下文;所述第一寄存器上下文为根据所述第一GPA对所述ESP和所述EBP进行赋值之后,所述第一处理器的寄存器的上下文;在执行所述目标代码之后,将所述第一处理器的寄存器的上下文还原为所述第一寄存器上下文。
作为本发明实施例一种可选的实施方式,所述执行单元,还用于保存第二寄存器上下文,所述第二寄存器上下文为将所述EPT由所述第一EPT切换为所述第二EPT时,所述第一处理器的寄存器的上下文;在将所述EPT由所述第二EPT切换为所述第一EPT之后,将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文。
作为本发明实施例一种可选的实施方式,所述执行单元,还用于在保存所述第二寄存器上下文之前,关闭所述第一处理器的本地中断;在将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文之后,开启所述第一处理器的本地中断。
作为本发明实施例一种可选的实施方式,所述跳板代码包括:EPTP switch指令;所述切换单元,具体用于调用所述跳板代码中的所述EPTP switch指令。
作为本发明实施例一种可选的实施方式,所述切换单元,还用于在执行所述跳板代码之后,对所述第二处理器进行安全检查;若安全检查不通过,则终止向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,所述切换单元,还用于在根据所述第一EPT获取跳板代码之前,配置所述第一物理页和所述第二物理页,并在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元,还用于在根据所述第二EPT获取所述目标代码之前,配置所述第三物理页和所述第四物理页,并在所述第二EPT中构建所述第三映射关系和所述第四映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元,还用于在将所述EPT由第一EPT切换为第二EPT之前,在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读。
作为本发明实施例一种可选的实施方式,所述切换单元,还用于在根据所述第二EPT获取跳板代码之前,配置所述第一物理页和所述第二物理页,并在所述第二EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,所述目标指令为处理器间中断IPI指令,所述目标代码为与发送所述IPI指令相关的代码。
第三方面,本发明实施例提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行第一方面或第一方面任一种可选的实施方式所述的指令发送方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的指令发送方法。
第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的指令发送方法。
本发明实施例提供的指令发送方法响应于第一处理器向第二处理器发送目标指令的指令发送请求,将EPT由第一EPT切换为第二EPT,然后根据所述第二EPT获取与发送所述目标指令相关的目标代码,再执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。一方面,由于与发送所述目标指令相关的目标代码只能通过第二EPT获取,第一EPT无法获取,若需要通过第一处理器向第二处理器发送目标指令,则需先将EPT从第一EPT切换到第二EPT才能执行发送目标指令的相关操作,因此本发明实施例实现了第一处理器与目标代码的隔离,可以在一定程度上避免目标指令被攻击者利用。另一方面,由于本发明实施例在发送处理器间指令时无需通过虚拟机监视器,虚拟机可以在non-root模式直接发送目标指令,避免了虚拟机VM Exit和VMEntry过程中的性能损耗,因此本发明实施例还可以在发送目标指令时避免对虚拟机的性能造成较大的影响。综上,本发明实施例可以在避免处理器间的指令被攻击者利用的同时避免发送目标指令对虚拟机的性能造成较大的影响。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的指令发送方法的流程图之一;
图2为本发明实施例提供的指令发送方法的流程图之二;
图3为本发明实施例提供的第一EPT和第二EPT的结构示意图;
图4为本发明实施例提供的指令发送方法的流程图之三;
图5为本发明实施例提供的指令发送装置的结构示意图;
图6为本发明实施例提供的电子设备的硬件结构示意图。
为了能够更清楚地理解本发明的上述目的、特征和优点,下面将对本发明的方案进行进一步描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但本发明还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本发明的一部分实施例,而不是全部的实施例。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
以下首先对本发明实施例中的自定义术语进行说明。
第一EPT:第一处理器进行EPT切换前的EPT,包括:第一映射关系和第二映射关系,不包括第三映射关系和第四映射关系。
第二EPT:第一处理器进行EPT切换后的EPT,包括:第一映射关系、第二映射关系、第三映射关系以及四映射关系。
第一映射关系:第一物理页的GPA与所述第一物理页的HPA的映射关系。
第二映射关系:第二物理页的GPA与所述第二物理页的HPA的映射关系。
第三映射关系:第三物理页的GPA与所述第三物理页的HPA的映射关系。
第四映射关系:第四物理页的GPA与所述第四物理页的HPA的映射关系。
第一物理页:保存第一页表的物理页。
第二物理页:保存跳板代码的物理页。
第三物理页:保存第二页表的物理页。
第四物理页:保存目标代码的物理页。
第一页表:包含第二物理页的GVA与第二物理页的GPA的转换关系的页表。
第二页表:包含第四物理页的GVA与第四物理页的GPA的转换关系的页表。
目标代码:与发送目标指令相关的代码。
跳板代码:用于将第一处理器对应的EPT在第一EPT和第二EPT之间切换的代码。
基于上述内容,本发明实施例提供了一种应用于第一处理器的指令发送方法,参照图1所示,本发明实施例提供的指令发送方法包括如下步骤:
S101、响应于向第二处理器发送目标指令的指令发送请求,将扩展页表(ExtendedPage Table,EPT)由第一EPT切换为第二EPT。
具体的,在虚拟机技术的内存虚拟化方面,虚拟机处于non-root模式下运行客户机代码时,使用的地址是客户机虚拟地址(Guest Virtual Address,GVA),需要通过客户机页表进行地址转换得到客户机物理地址(Guest Physical Address,GPA),GPA需要经过二次地址转换,转换为宿主机物理地址(Host Physical Address,HPA)才能进行访问,在Intel的虚拟化技术中,将GPA转换为HPA的过程使用的页表称为EPT。
需要说明的是,本发明实施例中的第一处理器和第二处理器可以属于同一虚拟机,也可以分别属于不同的虚拟机,本发明实施例对此不作限定。
Intel增加了对VM Function机制的支持。即,在non-root模式下通过VMFUNC指令能够直接执行指令发送操作,不会产生VM Exit,且允许在non-root模式下为EPTP加载一个新值,从而建立另外一个EPT分页结构。基于VM Function机制,本发明实施例中为第一处理器所属虚拟机创建了两个EPT(第一EPT和第二EPT),其中,第一EPT为客户机原始的EPT,包含了客户机的内核代码,其建立遵循KVM(一种基于Linux的开源虚拟化技术)的EPTViolation过程,客户机的操作系统和应用中的普遍代码在第一EPT建立地址映射,目标代码仅在第二EPT建立地址映射,因此在向第二处理器发送目标指令前,首先需要将第一处理器对应的EPT由第一EPT切换为第二EPT。
可选的,将EPT由第一EPT切换为第二EPT的实现方式可以包括:
根据所述第一EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
S102、根据所述第二EPT获取目标代码。
其中,所述目标代码为与发送所述目标指令相关的代码。
具体的,由于与发送所述目标指令相关的目标代码在第二EPT中建立了地址映射,因此可以根据所述第二EPT获取目标代码。
S103、执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
本发明实施例提供的指令发送方法响应于第一处理器向第二处理器发送目标指令的指令发送请求,将EPT由第一EPT切换为第二EPT,然后根据所述第二EPT获取与发送所述目标指令相关的目标代码,再执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。一方面,由于与发送所述目标指令相关的目标代码只能通过第二EPT获取,第一EPT无法获取,若需要通过第一处理器向第二处理器发送目标指令,则需先将EPT从第一EPT切换到第二EPT才能执行发送目标指令的相关操作,因此本发明实施例实现了第一处理器与目标代码的隔离,可以在一定程度上避免目标指令被攻击者利用。另一方面,由于本发明实施例在发送处理器间指令时无需通过虚拟机监视器,虚拟机可以在non-root模式直接发送目标指令,避免了虚拟机VM Exit和VMEntry过程中的性能损耗,因此本发明实施例还可以在发送目标指令时避免对虚拟机的性能造成较大的影响。综上,本发明实施例可以在避免处理器间的指令被攻击者利用的同时避免发送目标指令对虚拟机的性能造成较大的影响。
作为对上述实施例的扩展和细化,本发明实施例提供了另一种指令发送方法,参照图2所示,该指令发送方法包括如下步骤:
S201、响应于向第二处理器发送目标指令的指令发送请求,根据第一物理页的GPA和所述第一EPT中的第一映射关系访问所述第一物理页,获取第一页表。
其中,所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一物理页为保存所述第一页表的物理页,所述第一页表包括第二物理页的客户机虚拟地址GVA与所述第二物理页的GPA的转换关系。
具体的,当用于将GVA转换为GPA的客户机页表的基址保存在CR3寄存器中时,可以将CR3寄存器的值修改为第一物理页的GPA,从而根据所述第一物理页的GPA和所述第一EPT中的所述第一映射关系访问所述第一物理页,获取所述第一页表。
S202、根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA。
具体的,由于第一页表为用于定义第二物理页的GVA与第二物理页的GPA的转换关系的页表,因此可以根据第二物理页的GVA查找所述第一页表,获取所述第二物理页的GPA。
S203、根据所述第二物理页的GPA和所述第一EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码。
其中,所述第二物理页为保存所述跳板代码的物理页,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
由于第二映射关系为第二物理页的GPA与所述第二物理页的HPA的映射关系,因此可以基于步骤S202中获取的第二物理页的GPA查找第二映射关系,获取第二物理页的HAP,然后再根据第二物理页的HAP访问第二物理页。又因为第二物理页为保存跳板代码的物理页,因此可以进一步获取所述跳板代码。
S204、执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
由于跳板代码为用于将第一处理器对应的EPT在第一EPT和第二EPT之间切换的代码,当前第一处理器对应的EPT为第一EPT,因此可以通过执行所述跳板代码将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT。
可选的,所述跳板代码包括:EPTP switch指令,上述步骤S204中执行跳板代码的实现方式可以包括:
调用所述跳板代码中的所述EPTP switch指令,以将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT。
由于上述实施例中需要调用EPTP switch指令,以将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT,因此在调用所述EPTP switch指令之前,本发明实施例提供的指令发送方法还包括:
使能EPTP Switch功能。
可选的,使能EPTP Switch功能的实现方式可以包括如下步骤:
步骤1、将所述处理器的虚拟机控制结构(Virtual Machine Structure,VMCS)的控制字段中的secondary processor-based VM-execution control中的enable VMfunctions置为1。
步骤2、将VM-function control字段中的EPTP switching置为1。
步骤3、将EPTP list表项写入预配置的第五物理页中。
步骤4、将所述预配置物理页的GPA写入所述VMCS中。
需要说明的是,本发明实施例中不限定现实使能EPTP Switch功能过程所执行的步骤1至步骤4的先后顺序,本领域技术人员可以根据需求以任意先后顺序执行现上述步骤1至步骤4。
进一步的,当本发明实施例提供的指令发送方法通过执行跳转代码将第一处理器对应的EPT由所述第一EPT切换为所述第二EPT时,在执行跳转代码将第一处理器对应的EPT由所述第一EPT切换为所述第二EPT之前,还需要配置所述第一物理页和所述第二物理页,并在第一EPT中构建所述第一映射关系和所述第二映射关系,因此本发明实施例提供的指令发送方法还包括:
配置所述第一物理页和所述第二物理页;以及在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
具体的,可以分配两个预设大小的空白物理页,然后将第一页表写入其中的一个空白物理页生成第一物理页,将跳板代码写入其中的另一个空白物理页生成所述第二物理页,最后再根据第一物理页的GPA和第一物理页的HAP在第一EPT中构建所述第一映射关系,根据第二物理页的GPA和第二物理页的HAP在第一EPT中构建所述第二映射关系。
需要说明的是,本发明实施例中不限定配置所述第一物理页和配置所述第二物理页的先后顺序,也不限定在第一EPT中构建所述第一映射关系和所述第二映射关系的先后顺序。
S205、根据第三物理页的GPA和所述第二EPT的第三映射关系访问所述第三物理页,获取第二页表。
其中,所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系;所述第三物理页为保存所述第二页表的物理页,所述第二页表包括第四物理页的GVA与所述第四物理页的GPA的转换关系。
实际应用中,用于将GVA转换为GPA的客户机页表的基址保存在CR3寄存器中,因此可以将CR3寄存器的值修改为第三物理页的GPA,从而根据所述第三物理页的GPA和所述第三映射关系访问所述第三物理页,获取所述第二页表。
由于所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系,因此基于第三物理页的GPA可以获取第三物理页的HPA,进而根据第三物理页的HPA访问第三物理页。又因为第三物理页为保存第二页表的物理页,可以进一步获取所述第二页表的内容。
S206、根据所述第四物理页的GVA和所述第二页表获取所述第四物理页的GPA。
具体的,由于所述第二页表用于定义第四物理页的GVA与所述第四物理页的GPA的转换关系,因此可以基于第四物理页的GVA和第二页表获取第四物理页的GPA。
S207、根据所述第四物理页的GPA和所述第二EPT的第四映射关系访问所述第四物理页,获取所述目标代码。
其中,所述第四物理页为保存所述目标代码的物理页,所述第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系。
由于第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系,步骤S206获取了第四物理页的GPA,因此可以根据所述第四物理页的GPA和所述第四映射关系获取第四物理页的HPA,进而根据第三物理页的HPA访问第四物理页。又因为第四物理页为保存与发送所述目标指令相关的目标代码的物理页,因此可以获取目标代码。
进一步的,由于上述实施例提供的指令发送方法在发送目标指令过程中需要将第一处理器对应的EPT由第一EPT切换为第二EPT,并使用第二EPT中的第三映关系和第四映射关系,因此在上述实施例提供的指令发送方法的步骤流程之前,本发明实施例提供的指令发送方法还需要配置所述第三物理页和所述第四物理页,并在第二EPT中构建所述第三映射关系和所述第四映射关系,因此在根据所述第二EPT获取所述目标代码,本发明实施例提供的指令发送方法还包括:
配置所述第三物理页和所述第四物理页;以及在所述第二EPT中构建所述第三映射关系和所述第四映射关系。
具体的,可以分配两个预设大小的空白物理页,然后将第二页表写入其中的一个空白物理页生成第三物理页,将目标代码写入其中的另一个空白物理页生成所述第四物理页,最后再根据第三物理页的GPA和第三物理页的HAP在第二EPT中构建所述第三映射关系,根据第四物理页的GPA和第四物理页的HAP在第二EPT中构建所述第四映射关系。
需要说明的是,本发明实施例中不限定配置所述第三物理页和配置所述第四物理页的先后顺序,也不限定在第二EPT中构建所述第三映射关系和所述第四映射关系的先后顺序。
S208、执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
本实施例提供的指令发送方法与图1所示指令发送方法的实现原理与技术效果类似,此处不再赘述。
作为本发明实施一种可选的实施方式,在上述步骤S208之后,本发明实施例提供的指令方法还包括:
根据所述第二EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第二EPT切换为所述第一EPT。
同样,上述步骤中执行跳板代码,以将所述第一处理器对应的EPT由所述第二EPT切换为所述第一EPT的实现方式可以包括:
调用所述跳板代码中的所述EPTP switch指令,以将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT。
需要说明的是,若通过调用所述跳板代码中的所述EPTP switch指令,将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT,则在调用所述跳板代码中的所述EPTP switch指令,以将所述第一处理器对应的EPT由所述第二EPT切换为所述第一EPT之前,已经使能了EPTP Switch功能,无需再重复使能EPTP Switch功能,而若不是通过调用所述跳板代码中的所述EPTP switch指令,将所述第一处理器对应的EPT由所述第一EPT切换为所述第二EPT,则需要在调用所述跳板代码中的所述EPTP switch指令,以将所述第一处理器对应的EPT由所述第二EPT切换为所述第一EPT之前,先使能EPTP Switch功能。其中,使能EPTP Switch功能的实现方式可以与上述实施例中使能EPTP Switch功能的实现方式相同,在此不再赘述。
参照图3所示的第一EPT和所述第二EPT的结构示意图,以下以第一EPT包括第一映射关系和第二映射关系;第二EPT包括第一映射关系、第二映射关系、第三映射关系以及第四映射关系为例对上述实施例提供的指令发送方法进行说明。参照图4所示,本发明实施例提供的指令发送方法包括:
S401、响应于向第二处理器发送目标指令的指令发送请求,关闭第一处理器的本地中断。
通过关闭第一处理器的本地中断可以使第一处理器不再接收其它处理器发送的中断指令,或者接收其它处理器发送的中断指令而不执行中断操作,进而避免第一虚拟机在进行目标指令发送过程中被中断。
S402、保存第二寄存器上下文。
其中,所述第二寄存器上下文为将所述EPT由所述第一EPT切换为所述第二EPT时,所述第一处理器的寄存器的上下文。
即,保存发送目标指令之前第一处理器运行客户机代码所产生的寄存器的上下文。
通过保存第二寄存器上下文,可以在目标指令发送完成后快速恢复第一处理器的寄存器的上下文。
S403、根据第一物理页的GPA和第一EPT中的第一映射关系访问第一物理页,获取第一页表。
S404、根据第二物理页的GVA和第一页表获取第二物理页的GPA。
S405、根据第二物理页的GPA和第一EPT中的第二映射关系访问第二物理页,获取跳板代码。
S406、执行跳板代码,以将所述EPT由第一EPT切换为第二EPT。
S407、根据第三物理页的GPA和所述第二EPT的第三映射关系访问第三物理页,获取第二页表。
S408、根据第四物理页的GVA和第二页表获取第四物理页的GPA。
S409、根据第四物理页的GPA和所述第二EPT的第四映射关系访问第四物理页,获取目标代码。
处理器执行新的函数时,需要切换到新的栈空间,因此在执行目标代码之前,还需要对第一处理器的栈空间进行切换,因此本发明实施例提供的目标指令执行方法还进一步包括如下步骤S410和S411。
S410、根据第一GPA对栈指针寄存器(Extended Stack Pointer,ESP)和基址指针寄存器(Extended Base Pointer,BSP)进行赋值。
其中,所述第一GPA为在所述第一处理器对应的EPT为所述第二EPT时,所述第一处理器的栈空间对应的GPA。
S411、保存第一寄存器上下文。
其中,所述第一寄存器上下文为根据所述第一GPA对所述ESP和所述EBP进行赋值之后,所述第一处理器的寄存器的上下文。
即,将栈空间切换为第二EPT对应的栈空间。
S412、执行目标代码,以使第一处理器向第二处理器发送目标指令。
S413、将所述第一处理器的寄存器的上下文还原为所述第一寄存器上下文。
通过上述步骤S411(保存第一寄存器上下文)和上述步骤S413(将第一处理器的寄存器的上下文还原为第一寄存器上下文)可以在执行目标代码后,快速对第一处理的栈空间进行还原。
S414、根据第二GPA对所述ESP和所述EBP进行赋值。
其中,所述第二GPA为在所述EPT为所述第一EPT时,所述第一处理器的栈空间对应的GPA。
即,将第一处理的栈空间还原为第一EPT对应的栈空间。
S415、根据第一物理页的GPA和第二EPT中的第一映射关系访问第一物理页,获取第一页表。
其中,所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一页表包括第二物理页的GVA与所述第二物理页的GPA的转换关系,所述第一物理页为保存所述第一页表的物理页。
具体的,由于第二EPT中也保存有第一映射关系,且第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,因此可以根据所述第一物理页的GPA和所述第二EPT中的所述第一映射关系获取第一物理页的HAP,进而根据第一物理页的HAP访问第一物理页。又因为所述第一物理页为保存第一页表的物理页,因此可以访问第一物理页获取所述第一页表。
同上所述,当用于将GVA转换为GPA的客户机页表的基址保存在CR3寄存器中时,可以将CR3寄存器的值修改为第一物理页的GPA,从而根据所述第一物理页的GPA和所述第二EPT中的所述第一映射关系访问所述第一物理页,获取所述第一页表。
S416、根据第二物理页的GVA和第一页表获取第二物理页的GPA。
具体的,由于第一页表为用于定义第二物理页的GVA与第二物理页的GPA的转换关系的页表,因此可以根据第二物理页的GVA查找所述第一页表,获取所述第二物理页的GPA。
S417、根据第二物理页的GPA和第二EPT中的第二映射关系访问第二物理页,获取跳板代码。
具体的,由于第二映射关系为第二物理页的GPA与所述第二物理页的HPA的映射关系,因此可以基于步骤S417中获取的第二物理页的GPA查找第二映射关系,获取第二物理页的HAP,然后再根据第二物理页的HAP访问第二物理页。又因为第二物理页为保存跳板代码的物理页,因此可以进一步获取所述跳板代码。
S418、执行跳板代码,以将第一处理器对应的EPT由第二EPT切换为第一EPT。
同样,当本发明实施例提供的指令发送方法通过执行跳转代码将第一处理器对应的EPT由所述第二EPT切换为所述第一EPT时,在执行跳转代码将第一处理器对应的EPT由所述第二EPT切换为所述第一EPT之前,还需要配置所述第一物理页和所述第二物理页,并在第二EPT中构建所述第一映射关系和所述第二映射关系,因此本发明实施例提供的指令发送方法还包括:
配置所述第一物理页和所述第二物理页;以及在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
需说明的是,若通过执行跳转代码将第一处理器对应的EPT由所述第二EPT切换为所述第一EPT,则在通过执行跳转代码将第一处理器对应的EPT由所述第二EPT切换为所述第一EPT之前,已经配置了所述第一物理页和所述第二物理页,因此在通过执行跳转代码将第一处理器对应的EPT由所述第一EPT切换为所述第二EPT之前,仅需要在第二EPT中构建所述第一映射关系和所述第二映射关系,并与所述第一EPT公用所述第一物理页和所述第二物理页即可,无需重复进行所述第一物理页和所述第二物理页的配置。
S419、将第一处理器的寄存器的上下文还原为第二寄存器上下文。
通过上述S402(保存第二寄存器上下文)和步骤S419(将第一处理器的寄存器的上下文还原为第二寄存器上下文),本发明实施例可以在目标指令发送完成后快速恢复第一处理器执行客户机代码过程中的寄存器的上下文。
S420、开启第一处理器的本地中断。
通过关闭第一处理器的本地中断可以控制目标内容不再接收其它处理器发送的中断指令,或者接收其它处理器发送的中断指令后不执行中断操作,进而避免第一处理器在进行EPT切换过程中被中断,在完成目标指令的发送之后,开启第一处理器的本地中断可以保证客户机的正常运行。
在上述实施例的基础上,本发明实施例提供的指令发送方法还包括在执行跳板代码之后执行如下步骤:
对第二处理器进行安全检查;
若安全检查不通过,则终止所述第一处理器向所述第二处理器发送所述目标指令。
具体的,客户机操作系统及应用程序是运行在第一EPT上的,与发送目标指令相关的目标代码只能通过第二EPT访问到,因此当客户机发送目标指令时,需先通过第一EPT中提供的跳板代码切换到第二EPT,再执行发送目标指令相关的关键操作,而跳板代码肯定是跳板到指定代码处,因此在执行所述跳板代码之后再对接收目标指令的处理器做安全检查,可以进一步防止攻击者利用目标指令干扰系统中其它处理器,进而进一步提升系统的安全性。
进一步的,在上述实施例的基础上,本发明实施例提供的指令发送方法还包括:
在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读。
虽然上述实施例现实了第一处理器和目标代码的隔离,然而攻击者仍可能伪造跳板代码以实现目标指令的发送。其具体实现方式为:在第一处理器对应的EPT为第一EPT时,将CR3寄存器的值修改为第三物理页的GPA,并以第三物理页的GPA为基址构造跳板代码的页表,再将伪造的EPTP Switch指令的虚拟地址置于第四物理页的虚拟地址前,这样在切换到第二EPT之后,由于EPTP switch前后所有寄存器的值不变,在第二EPT中CR3的值也就指向了第三物理页,指令指针寄存器指向EPTP Switch指令的下一个虚拟地址,也就映射到了攻击者试图访问的第四物理页,进而执行第四物理页中的目标代码以发送目标指令。
如上所述,上述攻击方式要求可以在第一EPT中伪造一个可用于进行EPTP Switch的页表,该存储该页表的物理页的GPA必须等于第二EPT中第三物理页的GPA,并在第一EPT中这段该存储该页表的物理页的GPA可被修改。上述实施例中在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读,因此攻击者无法在第一EPT中伪造可用于进行EPTP Switch的页表,进而避免上述攻击方式对系统安全造成威胁。
通过同一发明构思,作为对上述方法的实现,本发明实施例还提供了一种目标指令发送装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的目标指令发送装置能够对应实现前述方法实施例中的全部内容。
图5为本发明实施例提供的目标指令发送装置的结构示意图,如图5所示,本实施例提供的目标指令发送装置500包括:
切换单元51,用于响应于所述指令发送装置的第一处理器向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;
获取单元52,用于根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;
执行单元53,用于执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,所述切换单元51,具体用于根据所述第一EPT获取跳板代码;执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
作为本发明实施例一种可选的实施方式,所述切换单元51,具体用于根据第一物理页的客户机物理地址GPA和所述第一EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的宿主机物理地址HPA的映射关系,所述第一页表包括第二物理页的客户机虚拟地址GVA与所述第二物理页的GPA的转换关系;根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;根据所述第二物理页的GPA和所述第一EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元52,具体用于根据第三物理页的GPA和所述第二EPT的第三映射关系访问所述第三物理页,获取第二页表;所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系;所述第二页表包括第四物理页的GVA与所述第四物理页的GPA的转换关系;根据所述第四物理页的GVA和所述第二页表获取所述第四物理页的GPA;根据所述第四物理页的GPA和所述第二EPT的第四映射关系访问所述第四物理页,获取所述目标代码;所述第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述切换单元51,还用于在所述执行单元执行所述目标代码之后,根据所述第二EPT获取跳板代码;执行所述跳板代码,以将所述EPT由所述第二EPT切换为所述第一EPT。
作为本发明实施例一种可选的实施方式,所述切换单元51,具体用于根据第一物理页的GPA和所述第二EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一页表包括第二物理页的GVA与所述第二物理页的GPA的转换关系;根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;根据所述第二物理页的GPA和所述第二EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
作为本发明实施例一种可选的实施方式,所述执行单元53,还用于在执行所述目标代码之前,根据第一GPA对栈指针寄存器ESP和基址指针寄存器EBP进行赋值,所述第一GPA为在所述EPT为所述第二EPT时,所述第一处理器的栈空间对应的GPA;在执行所述目标代码之后,根据第二GPA对所述ESP和所述EBP进行赋值,所述第二GPA为在所述EPT为所述第一EPT时,所述第一处理器的栈空间对应的GPA。
作为本发明实施例一种可选的实施方式,所述执行单元53,还用于保存第一寄存器上下文;所述第一寄存器上下文为根据所述第一GPA对所述ESP和所述EBP进行赋值之后,所述第一处理器的寄存器的上下文;在执行所述目标代码之后,将所述第一处理器的寄存器的上下文还原为所述第一寄存器上下文。
作为本发明实施例一种可选的实施方式,所述执行单元53,还用于保存第二寄存器上下文,所述第二寄存器上下文为将所述EPT由所述第一EPT切换为所述第二EPT时,所述第一处理器的寄存器的上下文;在将所述EPT由所述第二EPT切换为所述第一EPT之后,将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文。
作为本发明实施例一种可选的实施方式,所述执行单元53,还用于在保存所述第二寄存器上下文之前,关闭所述第一处理器的本地中断;在将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文之后,开启所述第一处理器的本地中断。
作为本发明实施例一种可选的实施方式,所述跳板代码包括:EPTP switch指令;所述切换单元,具体用于调用所述跳板代码中的所述EPTP switch指令。
作为本发明实施例一种可选的实施方式,所述切换单元51,还用于在执行所述跳板代码之后,对所述第二处理器进行安全检查;若安全检查不通过,则终止向所述第二处理器发送所述目标指令。
作为本发明实施例一种可选的实施方式,所述切换单元51,还用于在根据所述第一EPT获取跳板代码之前,配置所述第一物理页和所述第二物理页,并在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元52,还用于在根据所述第二EPT获取所述目标代码之前,配置所述第三物理页和所述第四物理页,并在所述第二EPT中构建所述第三映射关系和所述第四映射关系。
作为本发明实施例一种可选的实施方式,所述获取单元52,还用于在将所述EPT由第一EPT切换为第二EPT之前,在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读。
作为本发明实施例一种可选的实施方式,所述切换单元51,还用于在根据所述第二EPT获取跳板代码之前,配置所述第一物理页和所述第二物理页,并在所述第二EPT中构建所述第一映射关系和所述第二映射关系。
作为本发明实施例一种可选的实施方式,所述目标指令为处理器间中断IPI指令,所述目标代码为与发送所述IPI指令相关的代码。
本实施例提供的指令发送装置可以执行上述方法实施例提供的指令发送方法,其实现原理与技术效果类似,此处不再赘述。
通过同一发明构思,本发明实施例还提供了一种电子设备。图6为本发明实施例提供的电子设备的结构示意图,如图6所示,本实施例提供的电子设备包括:存储器61和处理器62,存储器61用于存储计算机程序;处理器62用于在调用计算机程序时执行上述实施例提供的指令发送方法的步骤。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述实施例提供的指令发送方法的步骤。
本领域技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (20)

1.一种指令发送方法,其特征在于,应用于第一处理器,所述方法包括:
响应于向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;
根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;
执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
2.根据权利要求1所述的方法,其特征在于,所述将EPT由第一EPT切换为第二EPT,包括:
根据所述第一EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第一EPT切换为所述第二EPT。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一EPT获取跳板代码,包括:
根据第一物理页的客户机物理地址GPA和所述第一EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的宿主机物理地址HPA的映射关系,所述第一页表包括第二物理页的客户机虚拟地址GVA与所述第二物理页的GPA的转换关系;
根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;
根据所述第二物理页的GPA和所述第一EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第二EPT获取所述目标代码,包括:
根据第三物理页的GPA和所述第二EPT的第三映射关系访问所述第三物理页,获取第二页表;所述第三映射关系为第三物理页的GPA与所述第三物理页的HPA的映射关系;所述第二页表包括第四物理页的GVA与所述第四物理页的GPA的转换关系;
根据所述第四物理页的GVA和所述第二页表获取所述第四物理页的GPA;
根据所述第四物理页的GPA和所述第二EPT的第四映射关系访问所述第四物理页,获取所述目标代码;所述第四映射关系为所述第四物理页的GPA与所述第四物理页的HPA的映射关系。
5.根据权利要求1所述的方法,其特征在于,在执行所述目标代码之后,所述方法还包括:
根据所述第二EPT获取跳板代码;
执行所述跳板代码,以将所述EPT由所述第二EPT切换为所述第一EPT。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第二EPT获取跳板代码,包括:
根据第一物理页的GPA和所述第二EPT中的第一映射关系访问所述第一物理页,获取第一页表;所述第一映射关系为第一物理页的GPA与所述第一物理页的HPA的映射关系,所述第一页表包括第二物理页的GVA与所述第二物理页的GPA的转换关系;
根据所述第二物理页的GVA和所述第一页表获取所述第二物理页的GPA;
根据所述第二物理页的GPA和所述第二EPT中的第二映射关系访问所述第二物理页,获取所述跳板代码,所述第二映射关系为所述第二物理页的GPA与所述第二物理页的HPA的映射关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行所述目标代码之前,根据第一GPA对栈指针寄存器ESP和基址指针寄存器EBP进行赋值,所述第一GPA为在所述EPT为所述第二EPT时,所述第一处理器的栈空间对应的GPA;
在执行所述目标代码之后,根据第二GPA对所述ESP和所述EBP进行赋值,所述第二GPA为在所述EPT为所述第一EPT时,所述第一处理器的栈空间对应的GPA。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
保存第一寄存器上下文;所述第一寄存器上下文为根据所述第一GPA对所述ESP和所述EBP进行赋值之后,所述第一处理器的寄存器的上下文;
在执行所述目标代码之后,将所述第一处理器的寄存器的上下文还原为所述第一寄存器上下文。
9.根据权利要求5所述的方法,其特征在于,所述方法还包括:
保存第二寄存器上下文,所述第二寄存器上下文为将所述EPT由所述第一EPT切换为所述第二EPT时,所述第一处理器的寄存器的上下文;
在将所述EPT由所述第二EPT切换为所述第一EPT之后,将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在保存所述第二寄存器上下文之前,关闭所述第一处理器的本地中断;
在将所述第一处理器的寄存器的上下文还原为所述第二寄存器上下文之后,开启所述第一处理器的本地中断。
11.根据权利要求2或5所述的方法,其特征在于,所述跳板代码包括:EPTP switch指令;
所述执行所述跳板代码包括:
调用所述跳板代码中的所述EPTP switch指令。
12.根据权利要求2所述的方法,其特征在于,在执行所述跳板代码之后,所述方法还包括:
对所述第二处理器进行安全检查;
若安全检查不通过,则终止向所述第二处理器发送所述目标指令。
13.根据权利要求3所述的方法,其特征在于,在根据所述第一EPT获取跳板代码之前,所述方法还包括:
配置所述第一物理页和所述第二物理页,并在所述第一EPT中构建所述第一映射关系和所述第二映射关系。
14.根据权利要求4所述的方法,其特征在于,在根据所述第二EPT获取所述目标代码之前,所述方法还包括:
配置所述第三物理页和所述第四物理页,并在所述第二EPT中构建所述第三映射关系和所述第四映射关系。
15.根据权利要求4所述的方法,其特征在于,在将所述EPT由第一EPT切换为第二EPT之前,所述方法还包括:
在所述第一EPT中写入所述第三物理页的GPA,并将所述第三物理页的GPA的属性设置为只读。
16.根据权利要求6所述的方法,其特征在于,在根据所述第二EPT获取跳板代码之前,所述方法还包括:
配置所述第一物理页和所述第二物理页,并在所述第二EPT中构建所述第一映射关系和所述第二映射关系。
17.根据权利要求1-10或12-16任一项所述的方法,其特征在于,所述目标指令为处理器间中断IPI指令,所述目标代码为与发送所述IPI指令相关的代码。
18.一种指令发送装置,其特征在于,包括:
切换单元,用于响应于所述指令发送装置的第一处理器向第二处理器发送目标指令的指令发送请求,将扩展页表EPT由第一EPT切换为第二EPT;
获取单元,用于根据所述第二EPT获取目标代码,所述目标代码为与发送所述目标指令相关的代码;
执行单元,用于执行所述目标代码,以使所述第一处理器向所述第二处理器发送所述目标指令。
19.一种电子设备,其特征在于,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行权利要求1-17任一项所述的指令发送方法。
20.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1-17任一项所述的指令发送方法。
CN202110379558.5A 2021-04-08 2021-04-08 一种指令发送方法及装置 Pending CN112989326A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110379558.5A CN112989326A (zh) 2021-04-08 2021-04-08 一种指令发送方法及装置
US18/283,700 US20240160464A1 (en) 2021-04-08 2022-03-11 Instruction sending method and apparatus
PCT/CN2022/080256 WO2022213769A1 (zh) 2021-04-08 2022-03-11 一种指令发送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110379558.5A CN112989326A (zh) 2021-04-08 2021-04-08 一种指令发送方法及装置

Publications (1)

Publication Number Publication Date
CN112989326A true CN112989326A (zh) 2021-06-18

Family

ID=76339526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110379558.5A Pending CN112989326A (zh) 2021-04-08 2021-04-08 一种指令发送方法及装置

Country Status (3)

Country Link
US (1) US20240160464A1 (zh)
CN (1) CN112989326A (zh)
WO (1) WO2022213769A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022213769A1 (zh) * 2021-04-08 2022-10-13 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178497A1 (en) * 2013-12-20 2015-06-25 Bitdefender IPR Management Ltd. Strongly Isolated Malware Scanning Using Secure Virtual Containers
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
US20160188354A1 (en) * 2014-12-24 2016-06-30 Michael Goldsmith Efficient enabling of extended page tables
CN106295385A (zh) * 2015-05-29 2017-01-04 华为技术有限公司 一种数据保护方法和装置
CN106970823A (zh) * 2017-02-24 2017-07-21 上海交通大学 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统
TW201734822A (zh) * 2016-01-15 2017-10-01 英特爾股份有限公司 虛擬機器之間的中斷
CN109933441A (zh) * 2019-02-28 2019-06-25 上海交通大学 微内核进程间通讯方法和系统
CN111753311A (zh) * 2020-08-28 2020-10-09 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置
WO2020252779A1 (en) * 2019-06-21 2020-12-24 Intel Corporation Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853259B2 (en) * 2017-12-29 2020-12-01 Red Hat, Inc. Exitless extended page table switching for nested hypervisors
CN112989326A (zh) * 2021-04-08 2021-06-18 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178497A1 (en) * 2013-12-20 2015-06-25 Bitdefender IPR Management Ltd. Strongly Isolated Malware Scanning Using Secure Virtual Containers
US20160188354A1 (en) * 2014-12-24 2016-06-30 Michael Goldsmith Efficient enabling of extended page tables
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN106295385A (zh) * 2015-05-29 2017-01-04 华为技术有限公司 一种数据保护方法和装置
TW201734822A (zh) * 2016-01-15 2017-10-01 英特爾股份有限公司 虛擬機器之間的中斷
CN106970823A (zh) * 2017-02-24 2017-07-21 上海交通大学 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统
CN109933441A (zh) * 2019-02-28 2019-06-25 上海交通大学 微内核进程间通讯方法和系统
WO2020252779A1 (en) * 2019-06-21 2020-12-24 Intel Corporation Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine
CN111753311A (zh) * 2020-08-28 2020-10-09 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
刘维杰;王丽娜;谈诚;徐来;: "基于VMFUNC的虚拟机自省触发机制", 计算机研究与发展, no. 10 *
李鼎基等: "基于跨虚拟机零下陷通信的加速器虚拟化框架", 软件学报, pages 1 *
王柏生等: "深度探索LINUX系统虚拟化 原理与实现", pages: 91 - 67 *
黄啸;邓良;孙浩;曾庆凯;: "基于硬件虚拟化的安全高效内核监控模型", 软件学报, no. 02, pages 2 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022213769A1 (zh) * 2021-04-08 2022-10-13 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Also Published As

Publication number Publication date
WO2022213769A1 (zh) 2022-10-13
US20240160464A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
US10002084B1 (en) Memory management in virtualized computing systems having processors with more than two hierarchical privilege levels
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US7467381B2 (en) Resource partitioning and direct access utilizing hardware support for virtualization
US10877793B2 (en) Extending the base address register by modifying the number of read-only bits associated with a device to be presented to a guest operating system
US10509729B2 (en) Address translation for scalable virtualization of input/output devices
EP2889777A2 (en) Modifying memory permissions in a secure processing environment
US20110167422A1 (en) Virtualization apparatus
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
JP2013515983A (ja) 仮想化環境においてi/o処理を行う方法および装置
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US11836091B2 (en) Secure memory access in a virtualized computing environment
US10102022B2 (en) System and method for configuring a virtual device
CN110058946B (zh) 设备虚拟化方法、装置、设备及存储介质
US10620985B2 (en) Transparent code patching using a hypervisor
Rossier Embeddedxen: A revisited architecture of the xen hypervisor to support arm-based embedded virtualization
US20170220466A1 (en) Sharing a guest physical address space among virtualized contexts
GB2607529A (en) Process-based virtualization system for executing secure application process
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US20170277632A1 (en) Virtual computer system control method and virtual computer system
WO2022213769A1 (zh) 一种指令发送方法及装置
US9558364B2 (en) Computing machine, access management method, and access management program
US20140208034A1 (en) System And Method for Efficient Paravirtualized OS Process Switching
US20230185593A1 (en) Virtual device translation for nested virtual machines
CN110383255B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220706

Address after: 100190 1309, 13th floor, building 4, Zijin Digital Park, Haidian District, Beijing

Applicant after: Beijing volcano Engine Technology Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.