Techniques for protecting virtual machine memory

By copying and locking the virtual machine monitor's translation mapping to secure storage, the vulnerability of the virtual machine monitor to attacks is resolved, thus achieving secure protection of the virtual machine storage and ensuring the security and stability of the host service device.

CN109117245BActive Publication Date: 2025-12-02INTEL CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201810645000.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-06-26
Filing Date
2018-06-21
Publication Date
2025-12-02
Estimated Expiration
2038-06-21

AI Technical Summary

Technical Problem

Virtual machine monitors on host service devices are vulnerable to malware attacks, which threatens the security of virtual machine storage. Existing technologies are insufficient to effectively protect virtual machine storage from malicious damage.

Method used

Virtual machine memory is protected by copying the translation map generated by the virtual machine monitor to secure storage and locking it to make it inaccessible. The security of the translation map is ensured by using the memory manager and secure storage to verify memory access requests.

Benefits of technology

Even if the virtual machine monitor is maliciously compromised, the translation mapping stored in secure storage will not be affected, ensuring the security and integrity of the virtual machine storage and preventing malicious attacks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN109117245B_ABST
    Figure CN109117245B_ABST
Patent Text Reader

Abstract

A method and a computing device for protecting virtual machine memory of a computing device are disclosed. The techniques for protecting virtual machine memory of a computing device include: instantiating a virtual machine (VM) on the computing device; establishing a virtual machine monitor (VMM) on the computing device for controlling the operation of the VM; secure memory; and a memory manager. The memory manager receives a memory access request from the VM, including a virtual linear address (LA), and performs a translation of the LA to a translated host physical address (HPA) of the computing device using one or more page tables associated with the VM and the VMM. The memory manager determines whether the secure translation mapping corresponding to the LA to the HPA is locked. If the mapping is locked, the memory manager verifies the translation based on a comparison between the translated HPA and the HPA translated using the secure translation mapping, and if the verification passes, executes the memory access request using the translated HPA.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] In a cloud environment, host service appliances are used to provide various cloud services to client devices. To increase efficiency and utilization, host service appliances can utilize virtual machines (VMs) to manage multiple services on the same device. Each VM provides a virtual "guest machine" or device for each managed service, making the managed service appear to be executed on a separate, dedicated device.

[0002] Virtual machines on a host server device can be managed by a Virtual Machine Monitor (VMM). A typical VMM is materialized as the physical computer hardware controlling the host server device (e.g., processor, memory, communication devices, disks, and CD-ROM drives) and as a software program that presents the illusion that the program is executing on a separate physical computer hardware. The virtual memory used by the program executing in the virtual machine can be mapped to the physical memory of the host server device in various ways. However, in some cases, the host server device may be vulnerable to malware, viruses, and other types of malware that attempt to compromise the functionality of the virtual machine monitor. A maliciously compromised virtual machine monitor can expose the virtual memory of virtual machines instantiated on the host server device to risk. Attached Figure Description

[0003] The concepts described herein are illustrated by way of example rather than limitation in the accompanying drawings. For the sake of simplicity and clarity, the elements illustrated in the drawings are not necessarily drawn to scale. Where deemed appropriate, reference numerals have been repeated among the various drawings to indicate corresponding or similar elements.

[0004] Figure 1 This is a simplified block diagram of at least one embodiment of a system for protecting virtual machine storage of a host service device;

[0005] Figure 2 It is possible to be Figure 1 A simplified block diagram of at least one embodiment of various environments established by the host service device;

[0006] Figure 3 It is possible to be Figure 1 A simplified block diagram of at least one embodiment of various environments established by the host service device;

[0007] Figure 4 It is possible to be Figure 1-3 A simplified block diagram of at least one embodiment of a method performed by a host service device for initializing a host security platform by storing a transformation map in a secure memory;

[0008] Figure 5 It is possible to be Figure 1-3A simplified block diagram of at least one embodiment of a method performed by a host service device of a system for accessing the memory of a host service device in response to receiving a memory access request from a virtual machine;

[0009] Figure 6 and Figure 7 It is possible to be Figure 1-3 A simplified block diagram of at least one additional embodiment of a method for accessing the memory of a host service device in response to receiving a memory access request from a virtual machine, performed by the host service device of the system; and

[0010] Figure 8 It is possible to be Figure 1-3 A simplified block diagram of at least one embodiment of a method performed by the host service device of a system for unlocking (multiple) security translation maps stored in the security memory of the host service device. Detailed Implementation

[0011] While the concepts of this disclosure are readily available in various modifications and alternatives, specific embodiments of this disclosure have been illustrated by way of example in the figures and will be described in detail herein. However, it should be understood that there is no intention to limit the concepts of this disclosure to the specific forms disclosed; rather, it is intended to cover all modifications, equivalents, and alternatives consistent with this disclosure and the appended claims.

[0012] References to "an embodiment," "embodiment," "exemplary embodiment," etc., in the specification indicate that the described embodiment may include a particular feature, structure, or characteristic; however, each embodiment may or may not include that particular feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. Additionally, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is believed that implementing such a feature, structure, or characteristic in conjunction with other embodiments, whether explicitly described or not, is within the knowledge of those skilled in the art. Furthermore, it should be understood that items included in the list in the form of "at least one of A, B, and C" may mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C). Similarly, items listed in the form of "at least one of A, B, or C" may mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).

[0013] In some cases, the disclosed embodiments may be implemented in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried or stored thereon on one or more transient or non-transient machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure (e.g., volatile or non-volatile memory, media disk, or other media device) for storing or transmitting information in a machine-readable form.

[0014] In the figures, some structural or methodological features may be shown in a particular arrangement and / or order. However, it should be understood that such a particular arrangement and / or order may not be necessary. Rather, in some embodiments, such features may be arranged in a different manner and / or order than shown in the illustrative figures. Furthermore, the inclusion of structural or methodological features in particular figures is not intended to imply that such features are required in all embodiments, and in some embodiments, such features may be omitted, or such features may be combined with other features.

[0015] Now for reference Figure 1 In an illustrative embodiment, a system 100 for protecting virtual machine memory includes a host service device 102 that can communicate with one or more client devices 104 via a network 106 to provide various cloud services or controlled services. In use, as described in more detail below, the host service device 102 configures its secure memory to protect the virtual machine memory of (multiple) virtual machines controlled by a virtual machine monitor of the host service device 102. As discussed in more detail below, when a virtual machine is instantiated, the virtual machine monitor assigns a physical address range (e.g., a guest physical address) to the instantiated virtual machine. In an illustrative embodiment, a virtual address-to-physical address translation mapping corresponding to the physical address range assigned to the virtual machine is stored in the secure memory of the host service device 102, making the secure translation mapping inaccessible to the virtual machine monitor. Thus, even if the virtual machine monitor is maliciously compromised or hacked, the secure translation mapping stored in the secure memory remains unaffected. Furthermore, subsequent memory address translations can be verified by comparing such memory translations with the secure memory mapping.

[0016] The host service device 102 can be embodied as any type of computing or computer device capable of performing the functions described herein, including but not limited to: computers, servers, rack servers, high-performance computing nodes, desktop computers, workstations, laptop computers, notebook computers, tablet computers, mobile computing devices, wearable computing devices, network devices, distributed computing systems, processor-based systems, and / or consumer electronics devices. Figure 1 As shown, host service device 102 illustratively includes a computing engine 120, an input / output (“I / O”) subsystem 126, a data storage 130, and a communication subsystem 128. In some embodiments, as discussed below, the computing engine 120 may include or be embodied as a processor 122 and an integrated or discrete memory 124. Additionally, in some embodiments, host service device 102 may also include one or more peripheral devices 132. It should be understood that in other embodiments, host service device 102 may include other or additional components, such as those typically found in server computers (e.g., various input / output devices). Furthermore, in some embodiments, one or more of the illustrative components may be incorporated into another component or otherwise form part of another component. For example, in some embodiments, memory 124 or a portion thereof may be incorporated into processor 122.

[0017] The computing engine 120 may be embodied as any type of device or collection of devices capable of performing the various computing functions described herein. In some embodiments, the computing engine 120 may be embodied as a single device, such as an integrated circuit, embedded system, field-programmable array (FPGA), system-on-a-chip (SoC), or other integrated system or device. In some embodiments, the computing engine 120 includes or is embodied as a processor 122 and a memory 124. The processor 122 may be embodied as any type of processor capable of performing the functions described herein. For example, the processor 122 may be embodied as a single-core or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing / control circuitry. Similarly, the memory 124 may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, the memory 124 may store various data and software used during the operation of the host service device 102, such as operating systems, applications, programs, libraries, and drivers. Memory 124 is communicatively coupled to processor 122 via I / O subsystem 126, which may be embodied as circuitry and / or components for facilitating input / output operations with processor 122, memory 124, and other components of host service device 102. For example, I / O subsystem 126 may be embodied as or otherwise include a memory controller hub, input / output control hub, firmware devices, communication links (i.e., point-to-point links, bus links, lines, cables, light guides, printed circuit board traces, etc.) and / or other components and subsystems for facilitating input / output operations. In some embodiments, I / O subsystem 126 may be incorporated into computing engine 120 along with processor 122, memory 124, and other components of host service device 102.

[0018] The communication subsystem 128 can be embodied as any type of communication circuit, device, or combination thereof capable of enabling communication between the host service device 102 and other devices of the system 100 (e.g., client device 104 via network 106). For this purpose, the communication subsystem 128 can be configured to use any one or more communication technologies (e.g., wireless or wired communication) and associated protocols (e.g., Ethernet, etc.). This type of communication can be achieved through technologies such as WiMAX, LTE, and 5G.

[0019] Data storage 130 can be embodied as one or more devices of any type configured for short-term or long-term data storage, such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. As described in detail below, data storage 130 can store translation mappings.

[0020] In some embodiments, host service device 102 may include one or more peripheral devices 132. Peripheral devices 132 may include any number of additional peripheral or interface devices, such as other input / output devices, storage devices, etc. The specific devices included in peripheral devices 132 may depend on, for example, the type and / or configuration of the host service device 102, client device 104, and / or the services controlled by the host service device 102.

[0021] Each client device 104 may be embodied as any type of computing or computer device capable of communicating with the host service device 102 used to control the services and functions described herein, including but not limited to: computers, tablets, smartphones, laptops, notebooks, desktop computers, and ultrabooks. TM Intelligent devices, personal digital assistants, mobile internet devices, wearable computing devices, network devices, distributed computing systems, processor-based systems, consumer electronic devices, and / or other computing devices. Thus, each client device 104 may include components similar to those described above for host service device 102, such as processors, memory, and communication subsystems.

[0022] Network 106 can be embodied as any number of various wired and / or wireless networks capable of facilitating communication between mobile computing device 102 and remote service 104. For example, network 106 can be embodied as or otherwise include wired or wireless local area networks (LANs), wired or wireless wide area networks (WANs), cellular networks, and / or publicly accessible global networks such as the Internet. Thus, network 106 can include any number of additional devices to facilitate communication therebetween, such as additional computers, routers, and switches.

[0023] Now for reference Figure 2In use, host service device 102 can establish an environment 200 for protecting virtual machine memory instantiated on host service device 102. The illustrative environment 200 includes a virtual machine monitor (VMM) 202, one or more virtual machines (VMs) 204, a memory manager 206, secure storage 208, and a memory page fault detector 210. Some of the components of environment 200 can be embodied as hardware, firmware, software, or a combination thereof. Thus, in some embodiments, one or more of the components of environment 200 can be embodied as circuitry or a collection of electrical devices (e.g., memory manager circuitry 206, secure storage circuitry 208, memory page fault detector circuitry 210, etc.). It should be understood that in such embodiments, one or more of memory manager circuitry 206 and / or memory page fault detector circuitry 210 may form part of one or more of the following: computing engine 120, processor 122, I / O subsystem 126, communication subsystem 128, and / or other components of host service device 102. Additionally, in some embodiments, one or more of the illustrative components of environment 200 may form part of another component, and / or one or more of the illustrative components may be independent of each other. Furthermore, in some embodiments, one or more of the components of environment 200 may be embodied as virtualized hardware components or emulation architectures, which may be built and maintained by computing engine 120 or other components of host service device 102.

[0024] Virtual Machine Monitor (VMM) 202 is configured to instantiate virtual machines 204 on a host service device. In doing so, VMM 202 is configured to build VMM page tables to store local translation mappings between Guest Physical Addresses (GPAs) and Host Physical Addresses (HPAs) and to allocate guest physical address ranges to the virtual machines(s) 204 instantiated on host service device 102. For this purpose, VMM 202 includes a memory mapper 212 that generates guest physical address-to-host physical address mappings for the guest physical address ranges allocated to the virtual machines 204. In other words, VMM 202 allocates host physical address ranges to each virtual machine 204 by assigning guest physical address ranges mapped to corresponding host physical address ranges. To maintain tracking of virtual machines 204 with their assigned guest physical address ranges, the VMM page table further includes a Virtual Machine Control Structure (VMCS) identifier associated with each virtual machine 204, and generates a VMCS→GPA→HPA mapping 304 that will be stored in secure storage 208 as discussed in detail below. The VMCS identifier uniquely identifies each virtual machine 204 instantiated on the host service appliance 102.

[0025] As discussed above, in some cases, the virtual machine monitor 202 may be compromised or hacked, and attempts may be made to maliciously alter the generated translation mappings. To ensure that the host service device 102 is not maliciously compromised, the virtual memory of the virtual machine 204 is protected by copying the VMCS→GPA→HPA mapping 304 as a secure translation mapping to secure storage 208. Once the secure translation mapping from guest physical address to host physical address is stored in secure storage 208, the virtual machine monitor 202 cannot reallocate the host physical address that has been assigned to the virtual machine 204 through the assigned guest physical address range. Thus, the secure translation mapping from guest physical address to host physical address associated with the virtual machine 204 cannot be accessed or modified until the virtual machine 204 releases or unlocks the assigned guest physical address range. Therefore, only the virtual machine 204 can access the host physical address corresponding to the guest physical address range assigned to the virtual machine 204 from the host service device 102.

[0026] Each virtual machine (VM) 204 is configured to execute associated software or otherwise provide cloud or host services. Each VM 204 establishes a VM page table to store the mapping between the VM's virtual linear address (LA) and the guest physical address (GPA) within the guest physical address range provided by the virtual machine monitor 202. For this purpose, VM 204 includes a memory mapper 214 that generates an LA→GPA mapping 302 for translating virtual linear addresses into translated guest physical addresses.

[0027] Memory manager 206 is configured to manage memory requests from virtual machine 204 while providing security for the virtual memory of virtual machine 204. For this purpose, memory manager 206 includes a memory mapper security controller 216, a memory mapper aggregator 218, a memory mapper locker 220, and a memory mapper unlocker 222. In use, memory manager 206 is configured to receive memory access requests, including virtual linear addresses, from virtual machine 204. In response to such memory access requests, memory manager 206 uses the VM page table associated with the requesting virtual machine and the VMM page table associated with the virtual machine monitor to perform translation from the virtual linear address to the translated host physical address of host service device 102.

[0028] To provide security for the virtual memory of virtual machine 204, memory mapper security controller 216 is configured to verify the translation of virtual linear addresses to translated host physical addresses based on a comparison between the translated host physical address and the host physical address translated using a security translation map stored in secure memory 208. Memory mapper security controller 216 is further configured to control the storage of one or more security translation maps (e.g., such as...). Figure 3 Access to secure memory 208 is restricted to the locked VMCS→LA→GPA→HPA mapping 306, locked LA→GPA mapping 308, and / or locked VMCS→GPA→HPA mapping 310. As discussed above, once the translation mappings are copied to secure memory 208, secure translation mappings 306, 308, and 310 become inaccessible to virtual machine monitor 202 and virtual machine 204.

[0029] In some embodiments, memory mapper aggregator 218 is configured to aggregate LA→GPA mapping 302 generated by virtual machine 204 and VMCS→GPA→HPA mapping 304 generated by virtual machine monitor 202 to generate VMCS→LA→GPA→HPA mapping 306 (see [link to documentation]). Figure 3 As discussed above, the VMCS→LA→GPA→HPA mapping 306 is used to verify the translation of the virtual linear address of the virtual machine 204, which uses the VM page table associated with the virtual machine 204 and the VMM page table associated with the virtual machine monitor 202, to the translated host physical address of the host service device 102.

[0030] Alternatively, in some embodiments, the memory mapper security controller 216 may use a two-step process to verify the translated host physical address. First, the memory mapper security controller 216 may use locked LA→GPA mappings 308 stored in secure memory 208 to verify the translation from the virtual linear address of virtual machine 204 (using the VM page table associated with the requesting virtual machine 204) to the translated guest physical address. If the memory mapper security controller 216 determines that the translated guest physical address does not match the guest physical address translated using locked LA→GPA mappings 308, the memory mapper security controller 216 may generate a security error to perform security functions. However, if the first translation is verified, the memory mapper security controller 216 may use locked VMCS→GPA→HPA mappings 310 stored in secure memory 208 to verify the translation from the translated guest physical address to the translated host physical address using the VMM page table associated with virtual machine monitor 202. If the memory mapper security controller 216 determines that the translated host physical address does not match the host physical address translated using the locked VMCS→GPA→HPA mapping 310, the memory mapper security controller 216 may generate a security error to perform security functions. Thus, by verifying (multiple) secure translation mappings, the memory mapper security controller 216 can ensure that the virtual machine monitor 202 is not maliciously compromised.

[0031] Memory mapper locker 220 is configured to lock secure translation maps 306, 308, and 310 stored in secure memory 208. It should be understood that secure translation maps 306, 308, and 310 locked in secure memory 208 are inaccessible by virtual machine monitor 202 and virtual machine 204. In other words, VMCS→LA→GPA→HPA mapping 306, (multiple) LA→GPA mappings 308, and / or VMCS→GPA→HPA mapping 310 (see...) Figure 3 This is inaccessible to virtual machine monitor 202 and virtual machines(204). To lock secure translation maps 306, 308, and 310, memory mapper locker 220 may set status bits or flags or otherwise provide an indication associated with the locked secure translation maps 306, 308, and 310. In some embodiments, the mere presence of secure translation maps 306, 308, and 310 in secure memory 208 is an indication that the corresponding secure translation map 306, 308, and 310 has been locked.

[0032] The memory mapper unlocker 222 is further configured to release one or more translation maps from secure storage 208, making the unlocked translation maps accessible to virtual machine monitor 202 and / or one or more virtual machines 204. To this end, the memory mapper unlocker 222 removes the translation map requesting to be unlocked from secure storage 208. Therefore, it should be understood that the VMCS→LA→GPA→HPA mapping 306 and / or VMCS→GPA→HPA mapping 310 are only accessible to virtual machine monitor 202 until virtual machine 204 releases the host physical address range allocated to virtual machine 204 by virtual machine monitor 202.

[0033] Memory page fault detector 210 is configured to detect memory page faults that can occur during address translation using page tables associated with virtual machine 204 or virtual machine monitor 202. For example, memory page fault detector 210 can detect a memory page fault when the translated physical address (e.g., a translated guest physical address and / or a translated host physical address) is not present in the corresponding page table. For instance, when memory manager 206 translates a virtual linear address of virtual machine 204 to a translated guest physical address, memory page fault detector 210 determines whether the translated guest physical address exists in the VM page table associated with virtual machine 204. If the translated guest physical address does not exist in the VM page table, memory page fault detector 210 generates a memory page fault. Additionally, when memory manager 206 translates a translated guest physical address to a translated host physical address, memory page fault detector 210 determines whether the translated host physical address exists in the VMM page table associated with virtual machine monitor 202. If the translated host physical address does not exist in the VMM page table, the memory page fault detector 210 generates a memory page fault. In some embodiments, the memory page fault detector 210 may alert the user that the host service device 102 has been compromised.

[0034] Security storage 208 is configured to store secure translation maps in secure translation cache 224. As discussed above, secure translation maps include translation maps generated by virtual machine monitor 202 and one or more virtual machines 204. In some embodiments, as discussed in more detail below, the maps generated by virtual machine monitor 202 and one or more virtual machines 204 (i.e., VMCS→GPA→HPA map 304 and LA→GPA map 302, respectively) can be aggregated into a single VMCS→LA→GPA→HPA map 306. Accordingly, as Figure 3As shown, the secure memory 208 may store VMCS→LA→GPA→HPA mappings 306. In other embodiments, the secure memory 208 may separately store VMCS→GPA→HPA mappings 310 and one or more LA→GPA mappings 308 for each virtual machine 204.

[0035] Now for reference Figure 4 In use, host service device 102 can execute method 400 for initializing the host security platform of host service device 102. As discussed above, memory mapper security controller 216 stores and locks the security translation map in secure memory 208, making the security translation map inaccessible by virtual machine monitor 202 and virtual machine 204. Method 400 begins at block 402, where the memory mapper security controller 216 of host service device 102 determines whether to initialize the host security platform of host service device 102. If the memory mapper security controller 216 determines that initialization of the host security platform is not expected, method 400 loops back to block 402 to continue determining whether to initialize the host security platform. However, if the memory mapper security controller 216 determines that the host security platform should be initialized, method 400 proceeds to block 404.

[0036] In block 404, the memory mapper security controller 216 reserves a secure memory region for storing the host physical address space of secure translations. To this end, in block 406, the memory mapper security controller 216 establishes a secure translation cache (STC) 224 in secure memory 208. In block 408, the memory mapper security controller 216 ensures that the secure translation cache 224 is inaccessible by virtual machine(s)204 and virtual machine monitor(s)202. For example, in some embodiments, the memory mapper security controller 216 may ensure that the host physical address space of the secure translation cache 224 cannot be mapped by virtual machine monitor(s)202 or virtual machine(s). In some embodiments, the secure memory region may be established in a secure container or other security provision.

[0037] In box 410, the memory mapper security controller 216 initializes the virtual machine monitor 202. To do this, in box 412, the memory mapper security manager 216 establishes a VMM page table that stores the mapping between guest physical addresses (GPAs) and host physical addresses (HPAs).

[0038] In box 414, virtual machine monitor 202 determines whether to instantiate a new virtual machine (VM). If virtual machine monitor 202 determines that a new virtual machine 204 should not be instantiated, method 400 loops back to box 414 to continue determining whether to instantiate a new virtual machine 204. However, if virtual machine monitor 202 determines that a new virtual machine 204 should be instantiated, method 400 proceeds to box 416.

[0039] In box 416, virtual machine monitor 202 allocates host memory to a new virtual machine 204. To this end, in box 418, virtual machine monitor 202 allocates a guest physical address range to the new virtual machine 204. In box 420, virtual machine monitor 202 updates its VMCS→GPA→HPA mapping 304 using the new allocation of the guest physical address range to the new virtual machine 204. To this end, virtual machine monitor 202 generates a guest physical address to host physical address mapping for the guest physical address range allocated to the new virtual machine 204. Virtual machine monitor 202 updates the VMCS→GPA→HPA mapping 304 using the new mapping of the allocated guest physical address range for the new virtual machine 204 and the Virtual Machine Control Structure (VMCS) identifier associated with the new virtual machine 204. As discussed above, the Virtual Machine Control Structure identifier uniquely identifies the corresponding virtual machine.

[0040] In box 422, virtual machine monitor 202 initiates a new virtual machine 204. In box 424, the new virtual machine 204 generates an LA→GPA mapping 302 for the guest physical address range allocated to it by virtual machine monitor 202. To this end, in box 426, the new virtual machine 204 establishes a VM page table that stores the virtual linear address to guest physical address translation mapping associated with the new virtual machine 204.

[0041] In block 428, the memory mapper security controller 216 determines whether to lock the translation mappings (i.e., VMCS→GPA→HPA mapping 304 and LA→GPA mapping 302). If the memory mapper security controller 216 determines not to lock the translation mappings, method 400 loops back to block 414 to continue determining whether to instantiate a new virtual machine 204. However, if the memory mapper security controller 216 determines to lock the translation mappings, method 400 proceeds to block 430.

[0042] In box 430, the new virtual machine 204 requests a lock on the translation mapping. In box 432, in response to receiving the lock request from the new virtual machine 204, the memory mapper security controller 216 copies the translation mapping to secure storage 208. To do this, the memory mapper security controller 216 copies the LA→GPA mapping 302 of the new virtual machine 204 and the VMCS→GPA→HPA mapping 304 of the virtual machine monitor 202 to secure storage 208.

[0043] In an illustrative embodiment, the memory mapper aggregator 218 of the memory mapper security controller 216 may aggregate the LA→GPA mapping 302 of the instantiated virtual machine(s)(s) 204 and the VMCS→GPA→HPA mapping 304 of the virtual machine monitor(s) 202 into a VMCS→LA→GPA→HPA mapping 306, and store the aggregated mapping 306 in secure memory 208. It should be understood that the VMCS→LA→GPA→HPA mapping 306 is locked in secure memory 208 and is inaccessible to the virtual machine monitor(s) 202 or the virtual machine(s) 204(s).

[0044] As discussed above and in Figure 3 As shown, in some embodiments, the LA→GPA mapping 302 and the VMCS→GPA→HPA mapping 304 can be copied and stored separately in secure memory 208. In such embodiments, once the translation mappings 302, 304 are copied in secure memory 208, the memory mapper security controller 216 locks the translation mappings 308, 310, making the locked LA→GPA mapping 308 and the locked VMCS→GPA→HPA mapping 310 inaccessible to the virtual machine monitor 202 or (multiple) virtual machines 204. In such embodiments, the LA→GPA mapping 302 of the VM page table is initially identical to the locked LA→GPA mapping 308 stored in secure memory 208, and the VMCS→GPA→HPA mapping 304 of the VMM page table is initially identical to the locked VMCS→GPA→HPA mapping 310 stored in secure memory 208. However, the virtual machine monitor 202 can be maliciously compromised, and attempts can be made to alter the translation mappings. Therefore, any inconsistency between the page table and the security translation mapping stored in the security memory 208 may lead to a security error, as described in more detail below, which may indicate that the host service device 102 has been compromised.

[0045] Now for reference Figure 5 In use, the host service device 102 can execute method 500 for accessing the host physical memory of the host service device in response to receiving a memory access request from the virtual machine 204. (As described above...) Figure 4As described, for example, method 500 may be executed after the host security platform of host service device 102 is initialized. Method 500 begins at block 502, where host service device 102 determines whether a memory access request from virtual machine 204 has already been received by memory manager 206. If not, method 500 loops back to block 502 to continue waiting for a memory access request to be received from virtual machine 204. However, if host service device 102 determines that a memory access request has already been received, method 500 proceeds to block 504. In block 504, host service device 102 receives the virtual linear address (LA), access type, and VMCS ID (i.e., VM identifier) ​​associated with the requesting memory access from virtual machine 204.

[0046] In block 506, host service device 102 uses the VM page table associated with the requesting virtual machine 204 and the VMM page table associated with the virtual machine monitor 202 to translate the virtual linear address of the memory access request into a corresponding host physical address. For this purpose, in some embodiments, host service device 102 uses the VM page table to translate the virtual linear address of the memory access request into a translated guest physical address, and uses the VMM page table to further translate the translated guest physical address into a host physical address. During the translation process, host service device 102 determines whether the requested virtual linear address is mapped in the VM page table of the requesting virtual machine 204, and whether the translated guest physical address is mapped in the VMM page table. If host service device 102 determines that the virtual linear address of the memory access request does not exist in the VM page table and / or the translated guest physical address does not exist in the VMM page table, host service device 102 raises a memory page fault in block 508, and method 500 proceeds to block 510. In box 510, host service device 102 invokes a memory page fault handler that can execute one or more error handlers.

[0047] However, if host service device 102 determines that there is no memory page fault, method 500 proceeds to block 512. In block 512, host service device 102 determines whether the virtual linear address to host physical address translation mapping is locked. To do this, in block 514, host service device 102 may compare the VMCS identifier of the requesting virtual machine 204 with (e.g., VMCS→LA→GPA→HPA mapping 306) stored in secure memory 208 to determine whether the virtual linear address is currently stored in secure memory 208. In block 516, if host service device 102 determines that the translation mapping is not locked, method 500 jumps forward to block 524, in which host service device 102 uses the translated host physical address to perform the requested memory access.

[0048] However, if host service device 102 determines that the translation mapping is locked, method 500 proceeds to block 518. In block 518, host service device 102 verifies the translation from virtual linear address to host physical address. To do this, in block 520, host service device 102 compares the page table translation from virtual linear address to host physical address with the VMCS→LA→GPA→HPA mapping 306 stored in secure storage 208, based on the VMCS identifier of the requesting virtual machine 204. In some embodiments, host service device 102 may compare the translated host physical address obtained using the VM and VMM page tables with the host physical address translated using the VMCS→LA→GPA→HPA mapping 306. Alternatively or additionally, in some embodiments, all VM and VMM page tables may be compared with the VMCS→LA→GPA→HPA mapping 306 to verify the translation.

[0049] In block 522, host service device 102 determines whether VMCS→LA→GPA→HPA mapping 306 matches the VM and VMM page tables. For example, host service device 102 may determine whether the translated host physical address is the same as the host physical address translated using VMCS→LA→GPA→HPA mapping 306. If host service device 102 determines that the translated host physical address is the same as the host physical address translated using VMCS→LA→GPA→HPA mapping 306, then method 500 proceeds to block 524, in which host service device 102 uses the translated host physical address to perform the requested memory access.

[0050] Alternatively or additionally, in some embodiments as mentioned above, host service device 102 may determine whether all VM and VMM page tables match the VMCS→LA→GPA→HPA mapping 306 stored in secure memory 208. If host service device 102 determines that all VM and VMM page tables are identical to the VMCS→LA→GPA→HPA mapping 306, then method 500 proceeds to block 524, in which host service device 102 uses the translated host physical address to perform the requested memory access.

[0051] However, if host service device 102 determines that the translated host physical address is different from the host physical address translated using VMCS→LA→GPA→HPA mapping 306, or that VMCS→LA→GPA→HPA mapping 306 is different from the VM and VMM page tables, then method 500 proceeds to block 526 to generate a security error. In doing so, in some embodiments, in block 528, host service device 102 may perform a security function. For example, host service device 102 may alert the user that host service device 102 has been compromised.

[0052] Now for reference Figure 6 and Figure 7 In use, the host service device 102 can execute an alternative method 600 for accessing the host service device's memory in response to a memory access request received from the virtual machine 204. As described above... Figure 4 As described, for example, method 600 may be executed after the host security platform of host service device 102 is initialized. Method 600 begins at block 602, where host service device 102 determines whether a memory access request has been received. If not, method 600 loops back to block 602 to continue waiting for a memory access request from virtual machine 204. However, if host service device 102 determines that a memory access request has been received, method 600 proceeds to block 604. In block 604, host service device 102 receives the virtual linear address (LA), access type, and VMCSID (i.e., VM identifier) ​​associated with the requesting memory access from virtual machine 204.

[0053] In box 606, host service device 102 uses the VM page table associated with the requesting virtual machine 204 to translate the virtual linear address of the memory access request into the corresponding guest physical address. During the translation process, host service device 102 determines whether the requested virtual linear address is mapped in the VM page table. If host service device 102 determines that the virtual linear address of the memory access request is not mapped in the VM page table, host service device 102 raises a memory page fault in box 608, and method 600 proceeds to box 610. In box 610, host service device 102 invokes the memory page fault handler to handle the page fault, and method 600 loops back to box 602 to monitor for subsequent memory access requests.

[0054] However, if host service device 102 determines that there is no memory page fault, method 600 proceeds to block 612. In block 612, host service device 102 determines whether the virtual linear address to guest physical address translation is locked. To this end, in block 614, host service device 102 may compare the linear address and / or VMCS identifier of the requesting virtual machine 204 with the locked LA→GPA mapping 308 stored in secure memory 208 to determine whether the virtual linear address is currently stored in secure memory 208. In block 616, if host service device 102 determines that the translation is not locked, method 600 jumps forward to... Figure 7 Box 628 further translates the converted guest physical address into a host physical address, as discussed below.

[0055] However, if host service device 102 determines that the translation is locked, method 600 proceeds to block 618. In block 618, host service device 102 verifies the translation from virtual linear address to guest physical address. To do this, in block 620, host service device 102 compares the VM page table translation from virtual linear address to guest physical address with the locked LA→GPA mapping 308, based on the VMCS of the requesting virtual machine 204 or based on the virtual linear address itself. For example, host service device 102 may compare the translated guest physical address with the guest physical address translated using a secure translation mapping from virtual linear address to guest physical address (i.e., the LA→GPA mapping 308 stored in secure memory 208). Alternatively or additionally, in some embodiments, host service device 102 may compare the entire VM page table with the LA→GPA mapping 308 stored in secure memory 208 to verify the translation.

[0056] In block 622, if host service device 102 determines that the locked LA→GPA mapping 308 is different from the VM page table, method 600 proceeds to block 624 to generate a security error. In some embodiments, in block 626, in response to determining that verification has failed, host service device 102 may perform a security function. For example, in some embodiments, host service device 102 may alert the user that host service device 102 has been compromised.

[0057] However, if host service device 102 determines that the locked LA→GPA mapping 308 matches the VM page table, then method 600 jumps forward to... Figure 7 Box 628. In box 628, host service device 102 uses the VMM page table to translate the guest physical address to a host physical address. During the translation process, host service device 102 determines whether the translated guest physical address is mapped in the VMM page table. If host service device 102 determines that the translated guest physical address is not mapped in the VMM page table, host service device 102 raises a memory page fault in box 630, and method 600 proceeds to box 632. In box 632, host service device 102 invokes the memory page fault handler to handle the page fault, and method 600 then loops back to box 602 to monitor subsequent memory access requests.

[0058] However, if host service device 102 determines that there is no memory page fault, method 600 proceeds to block 634. In block 634, host service device 102 determines whether the translation from guest physical address to host physical address is locked. To do this, in block 636, host service device 102 compares the VMCS identifier of the requesting virtual machine 204 with the locked VMCS→GPA→HPA mapping 310 stored in secure storage 208 to determine whether the translated guest physical address is currently stored in secure storage 208.

[0059] In box 638, if host service device 102 determines that the translation is not locked, method 600 jumps forward to box 646 to perform the requested memory access using the translated host physical address. Then, method 600 loops back to box 602 to monitor for subsequent memory access requests.

[0060] However, if host service device 102 determines that the translation is locked, method 600 proceeds to block 640. In block 640, host service device 102 verifies the translated guest physical address to host physical address translation. To do this, in block 642, host service device 102 compares the guest physical address to host physical address VMM page table translation with the locked VMCS→GPA→HPA mapping 310 based on the VMCS of the requesting virtual machine 204. For example, host service device 102 may compare the translated host physical address with the host physical address translated using the secure guest physical address to host physical address translation mapping (i.e., the VMCS→GPA→HPA mapping 310 stored in secure memory 208). Alternatively or additionally, in some embodiments, host service device 102 may compare the entire VMM page table with the VMCS→GPA→HPA mapping 310 stored in secure memory 208 to verify the translation.

[0061] In block 644, if host service device 102 determines that the locked VMCS→GPA→HPA mapping 310 is different from the VMM page table, method 600 proceeds to block 648 to generate a security error. Therefore, in some embodiments, in block 650, host service device 102 may perform a security function. For example, in some embodiments, host service device 102 may alert the user that host service device 102 has been compromised.

[0062] However, if host service device 102 determines that the locked VMCS→GPA→HPA mapping 310 matches the VMM page table, method 600 jumps forward to box 646 to perform the requested memory access using the translated host physical address. Method 600 then loops back to box 602 to monitor for subsequent memory access requests.

[0063] Now for reference Figure 8 In use, the host service device 102 can execute method 800 for unlocking one or more security translation maps stored in security storage 208 in response to receiving an unlock request from virtual machine 204. (As described above...) Figure 4As described, for example, method 800 may be executed after the host security platform of host service device 102 is initialized. Method 800 begins at block 802, in which host service device 102 determines whether to unlock one or more security translation maps stored in security memory 208. If host service device 102 determines that an unlock request has not yet been received, method 800 loops back to block 802 to continue waiting for an unlock request from virtual machine 204. However, if host service device 102 determines that an unlock request has been received, method 800 proceeds to block 804. In block 804, host service device 102 receives the virtual linear address range to be unlocked from requesting virtual machine 204 in response to receiving the unlock request.

[0064] In block 806, host service device 102 releases the LA→GPA→HPA address hierarchy by removing any security translation mappings associated with the requesting virtual machine 204 from secure storage 208. To do this, in block 808, host service device 102 determines the LA→GPA→HPA address hierarchy based on the virtual linear address range to be unlocked, which is associated with the requesting virtual machine 204. In block 810, host service device 102 removes the LA→GPA→HPA address hierarchy from secure storage 208. For example, host service device 102 removes the security translation mappings from secure storage 208 corresponding to the virtual linear address ranges to host physical addresses.

[0065] Example

[0066] Illustrative examples of the techniques disclosed herein are provided below. Embodiments of these techniques may include any one or more of the examples described below, and any combination thereof.

[0067] Example 1 includes a computing device for protecting virtual machine memory of a computing device, the computing device including: secure memory; and a memory manager for (i) receiving a memory access request including a virtual linear address from a virtual machine instantiated on the computing device by a virtual machine monitor of the computing device, (ii) performing a translation of the virtual linear address to a translated host physical address of the computing device using page tables associated with the requesting virtual machine and page tables associated with the virtual machine monitor, (iii) determining whether a secure translation mapping corresponding to the virtual linear address to a host physical address is locked, wherein the secure translation mapping is stored in secure memory, (iv) verifying the translation based on a comparison of the translated host physical address and the host physical address translated using the secure translation mapping in response to the determination that the secure translation mapping is locked, and (v) executing the memory access request using the translated host physical address in response to the verification of the translation.

[0068] Example 2 includes the subject of Example 1, and wherein the secure translation mapping includes a secure translation mapping from a virtual linear address to a guest physical address, and wherein performing the translation includes performing a first translation from a virtual linear address to a translated guest physical address using a page table associated with the requesting virtual machine; determining whether the secure translation mapping is locked includes determining whether the secure translation mapping from a virtual linear address to a guest physical address is locked; and verifying the translation includes verifying the first translation based on a comparison between the translated guest physical address and the guest physical address translated using the secure translation mapping from a virtual linear address to a guest physical address.

[0069] Example 3 includes the subject of any of Examples 1 and 2, wherein the memory manager is further configured to generate a security error in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0070] Example 4 includes the subject of any one of Examples 1-3, and wherein generating a security error includes performing a security function in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0071] Example 5 includes the subject of any of Examples 1-4, and wherein the secure translation mapping includes a secure translation mapping from guest physical address to host physical address, and wherein: performing the translation includes performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor in response to verification of the first translation; determining whether the secure translation mapping is locked includes determining whether the secure translation mapping from guest physical address to host physical address is locked; and verifying the translation includes verifying the second translation based on a comparison between the translated host physical address and the host physical address translated using the secure translation mapping from guest physical address to host physical address.

[0072] Example 6 includes the subject of any one of Examples 1-5, wherein the memory manager is further configured to generate a security error in response to a determination that the translated host physical address does not match the host physical address translated using the security translation mapping from guest physical address to host physical address.

[0073] Example 7 includes the subject of any one of Examples 1-6, and wherein generating a security error includes performing security functions in response to a determination that the translated host physical address does not match the host physical address translated using a security translation mapping from guest physical address to host physical address.

[0074] Example 8 includes the subject of any of Examples 1-7, and wherein determining whether a secure translation mapping is locked includes determining whether the translation from a virtual linear address to a host physical address corresponding to a virtual linear address is currently stored in secure memory.

[0075] Example 9 includes the subject of any of Examples 1-8, and wherein the verification of the translation includes using a secure translation mapping to translate a virtual linear address to a host physical address for a virtual machine-based identifier.

[0076] Example 10 includes the subject of any of Examples 1-9, wherein the memory manager is further configured to generate a security error in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0077] Example 11 includes the subject of any of Examples 1-10, and wherein generating a security error includes performing security functions in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0078] Example 12 includes the subject of any one of Examples 1-11, and wherein the virtual machine monitor is further configured to assign a guest physical address range to a virtual machine and generate a first mapping from guest physical address to host physical address for the virtual machine; the virtual machine is further configured to generate a second mapping from virtual linear address to guest physical address; and the memory manager is further configured to aggregate the first and second mappings to form a third mapping from virtual linear address to guest physical address to host physical address and store the third mapping as a secure translation mapping in secure memory.

[0079] Example 13 includes the subject of any of Examples 1-12, and wherein the third mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0080] Example 14 includes the subject of any one of Examples 1-13, and wherein the virtual machine monitor is further configured to assign a guest physical address range to a virtual machine and generate a first mapping of guest physical address to host physical address for the virtual machine; the virtual machine is further configured to generate a second mapping of virtual linear address to guest physical address; and the memory manager is further configured to store the first mapping and the second mapping as secure translation mappings in secure memory.

[0081] Example 15 includes the subject of any one of Examples 1-14, and wherein the first mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0082] Example 16 includes the subject of any of Examples 1-15, and wherein the memory manager is further configured to: receive from the virtual machine a linear address range to be unlocked; and remove from secure memory the mapping of the virtual linear address to the host physical address corresponding to the virtual linear address.

[0083] Example 17 includes the subject of any one of Examples 1-16, and wherein removing the mapping from a virtual linear address to a host physical address includes determining an address hierarchy structure indicating the mapping from a linear address to a guest physical address to a host physical address based on the range of linear addresses to be unlocked, and removing the mapping from a virtual linear address to a host physical address includes removing the address hierarchy structure from secure memory.

[0084] Example 18 includes a method for protecting virtual machine memory of a computing device, the method comprising: receiving a memory access request including a virtual linear address from a virtual machine instantiated on the computing device; performing a translation of the virtual linear address to a translated host physical address of the computing device using a page table associated with the requesting virtual machine and a page table associated with a virtual machine monitor established on the computing device; determining whether a secure translation mapping corresponding to the virtual linear address to the host physical address is locked, wherein the secure translation mapping is stored in secure memory of the computing device; verifying the translation based on a comparison of the translated host physical address with a host physical address translated using the secure translation mapping in response to the determination that the secure translation mapping is locked; and executing the memory access request using the translated host physical address in response to the verification of the translation.

[0085] Example 19 includes the subject of Example 18, and wherein the secure translation mapping includes a secure translation mapping from a virtual linear address to a guest physical address, and wherein performing the translation includes performing a first translation from a virtual linear address to a translated guest physical address using a page table associated with the requesting virtual machine, determining whether the secure translation mapping is locked includes determining whether the secure translation mapping from a virtual linear address to a guest physical address is locked; and verifying the translation includes verifying the first translation based on a comparison between the translated guest physical address and the guest physical address translated using the secure translation mapping from a virtual linear address to a guest physical address.

[0086] Example 20 includes the subject matter of any one of Examples 18 and 19, wherein it further includes: generating a security error by a computing device in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0087] Example 21 includes the subject of any one of Examples 18-20, and wherein generating a security error includes the computing device performing a security function in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0088] Example 22 includes the subject matter of any one of Examples 18-21, and wherein the secure translation mapping includes a secure translation mapping from guest physical address to host physical address, and wherein: performing the translation includes performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor in response to verification of the first translation; determining whether the secure translation mapping is locked includes determining whether the secure translation mapping from guest physical address to host physical address is locked; and verifying the translation includes verifying the second translation based on a comparison between the translated host physical address and the host physical address translated using the secure translation mapping from guest physical address to host physical address.

[0089] Example 23 includes the subject matter of any one of Examples 18-22, and further includes: a computing device generating a security error in response to a determination that the translated host physical address does not match the host physical address translated using a security translation mapping from guest physical address to host physical address.

[0090] Example 24 includes the subject of any one of Examples 18-23, and wherein generating a security error includes the computing device performing a security function in response to a determination that the translated host physical address does not match the host physical address translated using a security translation mapping from guest physical address to host physical address.

[0091] Example 25 includes the subject of any of Examples 18-24, and wherein determining whether a secure translation mapping is locked includes determining whether the translation from a virtual linear address to a host physical address corresponding to a virtual linear address is currently stored in secure memory.

[0092] Example 26 includes the subject of any of Examples 18-25, and wherein verifying the translation involves using a secure translation mapping to translate a virtual linear address to a host physical address based on the virtual machine's identifier.

[0093] Example 27 includes the subject matter of any one of Examples 18-26, and further includes: a computing device generating a security error in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0094] Example 28 includes the subject of any of Examples 18-27, and wherein generating a security error includes the computing device performing a security function in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0095] Example 29 includes the subject matter of any one of Examples 18-28, and further includes: assigning a guest physical address range to a virtual machine by a virtual machine monitor; generating a first mapping from guest physical address to host physical address for the virtual machine by the virtual machine monitor; generating a second mapping from virtual linear address to guest physical address by the virtual machine; aggregating the first mapping and the second mapping by a computing device to form a third mapping from virtual linear address to guest physical address to host physical address; and storing the third mapping as a secure translation mapping in secure memory by the computing device.

[0096] Example 30 includes the subject of any of Examples 18-29, and wherein the third mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0097] Example 31 includes the subject matter of any one of Examples 18-30, and further includes: assigning a guest physical address range to a virtual machine by a virtual machine monitor; generating a first mapping from guest physical address to host physical address for the virtual machine by the virtual machine monitor; generating a second mapping from virtual linear address to guest physical address by the virtual machine; and storing the first and second mappings as secure translation mappings in secure memory by a computing device.

[0098] Example 32 includes the subject of any of Examples 18-31, and wherein the first mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0099] Example 33 includes the subject of any of Examples 18-32, and further includes: receiving from a virtual machine a linear address range to be unlocked; and removing from secure storage the mapping of the virtual linear address to the host physical address corresponding to the virtual linear address.

[0100] Example 34 includes the subject of any of Examples 18-33, and wherein removing the mapping of virtual linear addresses to host physical addresses includes determining an address hierarchy structure that indicates the mapping of linear addresses to guest physical addresses to host physical addresses based on the range of virtual linear addresses to be unlocked, and removing the mapping of virtual linear addresses to host physical addresses includes removing the address hierarchy structure from secure memory.

[0101] Example 35 includes one or more computer-readable media, including a plurality of instructions stored thereon that, when executed, cause a computing device to perform any of the methods in Examples 18-34.

[0102] Example 36 includes a computing device for protecting virtual machine memory of a computing device, the computing device comprising: means for receiving a memory access request including a virtual linear address from a virtual machine instantiated on the computing device; means for performing a translation of the virtual linear address to a translated host physical address of the computing device using a page table associated with the requesting virtual machine and a page table associated with a virtual machine monitor established on the computing device; means for determining whether a secure translation mapping corresponding to the virtual linear address to the host physical address is locked, wherein the secure translation mapping is stored in secure memory of the computing device; means for verifying the translation based on a comparison of the translated host physical address and the host physical address translated using the secure translation mapping in response to the determination that the secure translation mapping is locked; and means for performing the memory access request using the translated host physical address in response to the verification of the translation.

[0103] Example 37 includes the subject matter of Example 36, and wherein the secure translation mapping includes a secure translation mapping from a virtual linear address to a guest physical address, and wherein: the means for performing the translation includes means for performing a first translation from a virtual linear address to a translated guest physical address using a page table associated with the requesting virtual machine; the means for determining whether the secure translation mapping is locked includes means for determining whether the secure translation mapping from a virtual linear address to a guest physical address is locked; and the means for verifying the translation includes means for verifying the first translation based on a comparison between the translated guest physical address and the guest physical address translated using the secure translation mapping from a virtual linear address to a guest physical address.

[0104] Example 38 includes the subject matter of any one of Examples 36 and 37, and further includes: means for generating a security error in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0105] Example 39 includes the subject of any one of Examples 36-38, and wherein the means for generating a security error includes means for performing a security function in response to a determination that the translated guest physical address does not match the guest physical address translated using a security translation mapping from virtual linear address to guest physical address.

[0106] Example 40 includes the subject matter of any one of Examples 36-39, and wherein the secure translation mapping includes a secure translation mapping from guest physical address to host physical address, and wherein: the means for performing the translation includes means for performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor in response to verification of the first translation; the means for determining whether the secure translation mapping is locked includes means for determining whether the secure translation mapping from guest physical address to host physical address is locked; and the means for verifying the translation includes means for verifying the second translation based on a comparison of the translated host physical address with the host physical address translated using the secure translation mapping from guest physical address to host physical address.

[0107] Example 41 includes the subject matter of any one of Examples 36-40, and further includes: means for generating a security error in response to a determination that the translated host physical address does not match the host physical address translated using a security translation mapping from guest physical address to host physical address.

[0108] Example 42 includes the subject matter of any one of Examples 36-41, and wherein the means for generating a security error includes means for performing a security function in response to a determination that the translated host physical address does not match the host physical address translated using a security translation mapping from guest physical address to host physical address.

[0109] Example 43 includes the subject matter of any of Examples 36-42, and wherein the means for determining whether a secure translation mapping is locked includes means for determining whether a translation from a virtual linear address to a host physical address corresponding to a virtual linear address is currently stored in secure memory.

[0110] Example 44 includes the subject of any of Examples 36-43, and wherein the means for verifying the translation includes means for using a secure translation mapping to translate a virtual linear address to a host physical address based on a virtual machine identifier.

[0111] Example 45 includes the subject matter of any one of Examples 36-44, and further includes: means for generating a security error in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0112] Example 46 includes the subject matter of any one of Examples 36-45, and wherein the means for generating a security error includes means for performing a security function in response to a determination that the translated host physical address does not match the host physical address translated using security translation.

[0113] Example 47 includes the subject matter of any one of Examples 36-46, and further includes: means for allocating a guest physical address range to a virtual machine; means for generating a first mapping from guest physical address to host physical address for the virtual machine; means for generating a second mapping from virtual linear address to guest physical address; means for aggregating the first and second mappings to form a third mapping from virtual linear address to guest physical address to host physical address; and means for storing the third mapping as a secure translation mapping in secure memory.

[0114] Example 48 includes the subject of any of Examples 36-47, and wherein the third mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0115] Example 49 includes the subject matter of any one of Examples 36-48, and further includes: means for allocating a guest physical address range to a virtual machine; means for generating a first mapping from guest physical address to host physical address for the virtual machine; means for generating a second mapping from virtual linear address to guest physical address; and means for storing the first mapping and the second mapping as secure translation mappings in secure memory.

[0116] Example 50 includes the subject of any of Examples 36-49, and wherein the first mapping is indexed based on the identifier of each virtual machine instantiated on the computing device.

[0117] Example 51 includes the subject matter of any one of Examples 36-50, and further includes: means for receiving a linear address range to be unlocked from a virtual machine; and means for removing a mapping from a virtual linear address to a host physical address corresponding to a virtual linear address from secure storage.

[0118] Example 52 includes the subject matter of any of Examples 36-51, and wherein the means for removing the mapping of a virtual linear address to a host physical address includes means for determining an address hierarchy structure indicating the mapping of the linear address to the guest physical address to the host physical address based on the range of virtual linear addresses to be unlocked, wherein removing the mapping of the virtual linear address to the host physical address includes removing the address hierarchy structure from secure memory.

Claims

1. A computing device for protecting a virtual machine memory of the computing device, the computing device comprising: Secure storage; as well as A memory manager is configured to: (i) receive a memory access request including a virtual linear address from a virtual machine instantiated on the computing device by a virtual machine monitor of the computing device; (ii) perform a translation of the virtual linear address to a translated host physical address of the computing device using a page table associated with the requesting virtual machine and a page table associated with the virtual machine monitor; (iii) determine whether a secure translation mapping corresponding to the virtual linear address to the host physical address is locked, wherein the secure translation mapping is stored in the secure memory; (iv) verify the translation based on a comparison of the translated host physical address and the host physical address translated using the secure translation mapping in response to the determination that the secure translation mapping is locked; and (v) execute the memory access request using the translated host physical address in response to the verification of the translation.

2. The computing device as claimed in claim 1, wherein, The secure translation mapping includes a secure translation mapping from a virtual linear address to a guest machine physical address, and wherein: Performing the translation includes using a page table associated with the requesting virtual machine to perform a first translation from the virtual linear address to the translated guest machine physical address. The determination of whether the secure translation mapping is locked includes determining whether the secure translation mapping from the virtual linear address to the guest machine's physical address is locked; and Verifying the conversion includes verifying the first conversion by comparing the converted guest physical address with the guest physical address converted using the secure translation mapping from the virtual linear address to the guest physical address.

3. The computing device as claimed in claim 2, wherein, The memory manager is further configured to generate a security error in response to a determination that the translated guest physical address does not match the guest physical address translated using the security translation mapping from the virtual linear address to the guest physical address.

4. The computing device as claimed in claim 2, wherein, The secure translation mapping includes a secure translation mapping from guest machine physical address to host machine physical address, and wherein: Performing the translation includes, in response to verification of the first translation, performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor. The determination of whether the secure translation mapping is locked includes determining whether the secure translation mapping from the guest machine physical address to the host physical address is locked; and Verifying the conversion includes verifying the second conversion based on a comparison between the converted host physical address and the host physical address converted using the secure translation mapping from guest physical address to host physical address.

5. The computing device as claimed in claim 1, wherein, Determining whether the secure translation mapping is locked includes determining whether the translation from the virtual linear address to the host physical address corresponding to the virtual linear address is currently stored in the secure memory.

6. The computing device as claimed in claim 1, wherein, Verifying the conversion includes using the secure translation mapping based on the identifier of the virtual machine to translate the virtual linear address into a host physical address.

7. The computing device of claim 1, wherein: The virtual machine monitor is further configured to allocate a guest physical address range to the virtual machine and generate a first mapping from the guest physical address to the host physical address for the virtual machine. The virtual machine is further used to generate a second mapping from virtual linear addresses to guest machine physical addresses; and The memory manager is further configured to aggregate the first mapping and the second mapping to form a third mapping from virtual linear address to guest physical address to host physical address, and store the third mapping as the secure translation mapping in the secure memory.

8. The computing device of claim 1, wherein: The virtual machine monitor is further configured to allocate a guest physical address range to the virtual machine and generate a first mapping from the guest physical address to the host physical address for the virtual machine. The virtual machine is further used to generate a second mapping from virtual linear addresses to guest machine physical addresses; and The memory manager is further configured to store the first mapping and the second mapping as the secure translation mapping in the secure memory.

9. The computing device as claimed in claim 1, wherein, The memory manager is further used for: Receive the linear address range to be unlocked from the virtual machine; and Remove the mapping from the virtual linear address to the host physical address corresponding to the virtual linear address from the secure storage.

10. A method for protecting virtual machine memory of a computing device, the method comprising: Receive a memory access request, including a virtual linear address, from a virtual machine instantiated on the computing device; The computing device uses the page table associated with the requesting virtual machine and the page table associated with the virtual machine monitor established on the computing device to perform the translation of the virtual linear address to the translated host physical address of the computing device. The computing device determines whether the secure translation mapping from the virtual linear address to the host physical address corresponding to the virtual linear address is locked, wherein the secure translation mapping is stored in the secure memory of the computing device; The computing device verifies the translation based on a comparison between the translated host physical address and the host physical address translated using the security translation map, in response to a determination that the security translation map is locked. as well as In response to the verification of the translation, the computing device executes the memory access request using the translated host physical address.

11. The method of claim 10, wherein, The secure translation mapping includes a secure translation mapping from a virtual linear address to a guest machine physical address, and wherein: Performing the translation includes using a page table associated with the requesting virtual machine to perform a first translation from the virtual linear address to the translated guest physical address. Determining whether the security translation mapping is locked includes determining whether the security translation mapping from the virtual linear address to the guest machine's physical address is locked; and Verifying the conversion includes verifying the first conversion by comparing the converted guest physical address with the guest physical address converted using the secure translation mapping from the virtual linear address to the guest physical address.

12. The method of claim 11, wherein, The method further includes: the computing device generating a security error in response to a determination that the converted guest physical address does not match the guest physical address converted using the security translation mapping from the virtual linear address to the guest physical address.

13. The method of claim 11, wherein, The secure translation mapping includes a secure translation mapping from guest machine physical address to host machine physical address, and wherein: Performing the translation includes, in response to verification of the first translation, performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor. Determining whether the secure translation mapping is locked includes determining whether the secure translation mapping from the guest machine physical address to the host physical address is locked; and Verifying the conversion includes verifying the second conversion by comparing the converted host physical address with the host physical address converted using the secure translation mapping from guest physical address to host physical address.

14. The method of claim 10, wherein, Verifying the translation involves using the secure translation mapping based on the virtual machine's identifier to translate the virtual linear address into a host physical address.

15. The method of claim 10, wherein, The method further includes: The virtual machine monitor assigns the guest machine's physical address range to the virtual machine; The virtual machine monitor generates a first mapping from the guest physical address to the host physical address for the virtual machine; The virtual machine generates a second mapping from virtual linear addresses to guest machine physical addresses; The computing device aggregates the first and second mappings to form a third mapping from virtual linear address to guest physical address to host physical address; and The computing device stores the third mapping as a secure translation mapping in the secure memory.

16. The method of claim 10, wherein, The method further includes: The virtual machine monitor assigns the guest machine's physical address range to the virtual machine; The virtual machine monitor generates a first mapping from the guest physical address to the host physical address for the virtual machine; The virtual machine generates a second mapping from virtual linear addresses to guest machine physical addresses; and The computing device stores the first mapping and the second mapping as secure transformation mappings in the secure memory.

17. The method of claim 10, wherein, The method further includes: Receive the linear address range to be unlocked from the virtual machine; and Remove the mapping from the virtual linear address to the host physical address corresponding to the virtual linear address from the secure storage.

18. A computing device for protecting a virtual machine memory of the computing device, the computing device comprising: A means for receiving a memory access request, including a virtual linear address, from a virtual machine instantiated on the computing device; A means for performing a translation of a virtual linear address into a translated host physical address of the computing device using a page table associated with a requested virtual machine and a page table associated with a virtual machine monitor established on the computing device. A means for determining whether a secure translation mapping from a virtual linear address to a host physical address corresponding to the virtual linear address is locked, wherein the secure translation mapping is stored in the secure memory of the computing device; A means for verifying the translation based on a comparison between the translated host physical address and the host physical address translated using the security translation map in response to the determination that the security translation map is locked. as well as A means for performing the memory access request using the translated host physical address in response to verification of the translation.

19. The computing device of claim 18, wherein, The secure translation mapping includes a secure translation mapping from a virtual linear address to a guest machine physical address, and wherein: The means for performing the translation includes means for performing a first translation from the virtual linear address to the translated guest machine physical address using a page table associated with the requesting virtual machine. The means for determining whether the secure translation mapping is locked includes means for determining whether the secure translation mapping from the virtual linear address to the guest machine physical address is locked; and The means for verifying the conversion includes means for verifying the first conversion based on a comparison between the converted guest physical address and the guest physical address converted using the secure translation mapping from the virtual linear address to the guest physical address.

20. The computing device of claim 19, wherein, The computing device further includes means for generating a security error in response to a determination that the translated guest physical address does not match the guest physical address converted using the security translation mapping from the virtual linear address to the guest physical address.

21. The computing device of claim 19, wherein, The secure translation mapping includes a secure translation mapping from guest machine physical address to host machine physical address, and wherein: The means for performing the translation includes means for performing a second translation from the translated guest physical address to the translated host physical address using a page table associated with the virtual machine monitor in response to verification of the first translation. The means for determining whether the secure translation mapping is locked includes means for determining whether the secure translation mapping from the guest machine physical address to the host physical address is locked; and The means for verifying the conversion includes means for verifying the second conversion based on a comparison between the converted host physical address and the host physical address converted using the secure translation mapping from guest physical address to host physical address.

22. The computing device of claim 18, wherein, The means for verifying the conversion includes means for using the secure translation mapping to convert the virtual linear address to a host physical address based on the identifier of the virtual machine.

23. The computing device of claim 18, wherein, The computing device further includes: A means for assigning guest machine physical address ranges to the virtual machine; A means for generating a first mapping from guest physical address to host physical address for the virtual machine; A device for generating a second mapping from virtual linear addresses to guest machine physical addresses; A means for aggregating the first mapping and the second mapping to form a third mapping from virtual linear address to guest physical address to host physical address; and A means for storing the third mapping as a secure translation mapping in the secure memory.

24. The computing device of claim 18, wherein, The computing device further includes: A means for assigning guest machine physical address ranges to the virtual machine; A means for generating a first mapping from guest physical address to host physical address for the virtual machine; A means for generating a second mapping from virtual linear addresses to guest machine physical addresses; and A means for storing the first mapping and the second mapping as secure transformation mappings in the secure memory.

25. The computing device of claim 18, wherein, The computing device further includes: A means for receiving from the virtual machine the linear address range to be unlocked; and A means for removing from the secure memory the mapping of the virtual linear address to the host physical address corresponding to the virtual linear address.

Citation Information

Patent Citations

  • Validating virtual address translation

    CN105320612A

  • Method and apparatus for supporting immutable memory

    US20080040565A1