IP Library › Granted Patent US 11,500,787
Granted Patent B2
US 11,500,787 · App. 16/519,616 · Granted Nov 15, 2022

Enforcing code integrity using a trusted computing base

Inventors: Michael Wei (Santa Clara, CA); Nadav Amit (Mountain View, CA)
Assignee: VMware, Inc.
G06F12/1441G06F9/45545G06F9/45558G06F12/0882G06F21/126G06F21/54G06F2009/45583G06F2009/45587G06F2221/034
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,500,787
App. No.
16/519,616
Granted
Nov 15, 2022
Kind
B2
Abstract

One or more kernel-modifying procedures are stored in a trusted computing base (TCB) when bringing up a guest operating system (OS) on a virtual machine (VM) on a virtualization platform. When the guest OS invokes an OS-level kernel-modifying procedure, a call is made to the hypervisor. If the hypervisor determines the TCB to be valid, the kernel-modifying procedure in the TCB that corresponds to the OS-level kernel-modifying procedure is invoked so that the kernel code can be modified.

Claims (41)

1. A method comprising:

invoking an operating system procedure that is directed to modifying memory locations in an operating system memory, the memory locations storing kernel code of an operating system (OS);

in response to invoking the OS procedure, validating content of at least a portion of a protected memory that stores program code comprising a kernel-modifying procedure, wherein program code of the OS procedure is stored outside of the protected memory, and wherein the validating comprises comparing the content with a digital signature associated with the at least the portion of the protected memory; and

in response to a determination that the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure is deemed to be valid, causing the kernel-modifying procedure to execute, wherein execution of the kernel-modifying procedure includes executing the program code to cause modifying of the kernel code stored in the memory locations in the OS memory.

2. The method of claim 1 , further comprising storing the program code comprising the kernel-modifying procedure in the protected memory based on bringing up of the OS.

3. The method of claim 1 , wherein the kernel-modifying procedure is one procedure among a plurality of procedures that modify the kernel code.

4. The method of claim 1 , wherein an address space of the kernel code is separate from an address space of the protected memory.

5. The method of claim 1 , wherein the kernel code and the protected memory are on different computer systems.

6. The method of claim 1 , wherein write operations on OS memory pages that contain the kernel code are disabled during initialization of the OS, the method further comprising:

enabling write operations on the OS memory pages prior to causing the kernel-modifying procedure to execute; and

disabling write operations on the OS memory pages subsequent to execution of the kernel-modifying procedure.

7. The method of claim 1 , further comprising receiving a system call and in response to receiving the system call, invoking the OS procedure.

8. The method of claim 1 , wherein the OS is a guest OS of a virtual machine, wherein the validating includes:

the guest OS invoking a hypervisor procedure in a hypervisor that instantiated the virtual machine; and

the hypervisor procedure validating the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure.

9. The method of claim 8 , wherein causing the kernel-modifying procedure to execute includes the hypervisor procedure invoking the kernel-modifying procedure.

10. A non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by a computer device, cause the computer device to:

invoke an operating system procedure that is directed to modifying memory locations in an operating system memory, the memory locations storing kernel code of an operating system (OS);

in response to invoking the OS procedure, validating content of at least a portion of a protected memory that stores program code comprising a kernel-modifying procedure, wherein program code of the OS procedure is stored outside of the protected memory, and wherein the validating comprises comparing the content with a digital signature associated with the at least the portion of the protected memory; and

in response to a determination that the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure is deemed to be valid, causing the kernel-modifying procedure to execute, wherein execution of the kernel-modifying procedure includes executing the program code to cause modifying of the kernel code stored in the memory locations in the OS memory.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to store the program code comprising the kernel-modifying procedure in the protected memory based on bringing up of the OS.

12. The non-transitory computer-readable storage medium of claim 10 , wherein an address space of the kernel code is separate from an address space of the protected memory.

13. The non-transitory computer-readable storage medium of claim 9 , wherein the kernel code and the protected memory are on different computer systems.

14. The non-transitory computer-readable storage medium of claim 9 , wherein write operations on OS memory pages that contain the kernel code are disabled during initialization of the OS, wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to:

enable write operations on the OS memory pages prior to causing the kernel-modifying procedure to execute; and

disable write operations on the OS memory pages subsequent to execution of the kernel-modifying procedure.

15. The non-transitory computer-readable storage medium of claim 10 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to operate as a hypervisor to instantiate a virtual machine (VM) and bring up the OS as a guest OS on the VM, wherein the validating includes:

the guest OS invoking a hypervisor procedure in a hypervisor that instantiated the virtual machine; and

the hypervisor procedure validating the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure.

16. The non-transitory computer-readable storage medium of claim 15 , wherein causing the kernel-modifying procedure to execute includes the hypervisor procedure invoking the kernel-modifying procedure.

17. An apparatus comprising:

one or more computer processors; and

a computer-readable storage medium comprising instructions for controlling the one or more computer processors to be operable to:

invoke an operating system procedure that is directed to modifying memory locations in an operating system memory, the memory locations storing kernel code of an operating system (OS);

in response to invoking the OS procedure, validating content of at least a portion of a protected memory that stores program code comprising a kernel-modifying procedure, wherein program code of the OS procedure is stored outside of the protected memory, and wherein the validating comprises comparing the content with a digital signature associated with the at least the portion of the protected memory; and

in response to a determination that the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure is deemed to be valid, causing the kernel-modifying procedure to execute, wherein execution of the kernel-modifying procedure includes executing the program code to cause modifying of the kernel code stored in the memory locations in the OS memory.

18. The apparatus of claim 17 , wherein the computer-readable storage medium further comprises instructions for controlling the one or more computer processors to be operable to store the program code comprising the kernel-modifying procedure in the protected memory based on bringing up of the OS.

19. The apparatus of claim 17 , wherein an address space of the kernel code is separate from an address space of the protected memory.

20. The apparatus of claim 17 , wherein the apparatus is a host machine that supports virtual machines, wherein the computer-readable storage medium further comprises instructions for controlling the one or more computer processors to operate as a hypervisor to instantiate a VM and bring up the OS as a guest OS on the VM, wherein the validating includes:

the guest OS invoking a hypervisor procedure in a hypervisor that instantiated the virtual machine; and

the hypervisor procedure validating the content of the at least the portion of the protected memory that stores the program code comprising the kernel-modifying procedure.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2022
From: WEI, MICHAEL; AMIT, NADAV
To: VMWARE INC.
Reel/Frame 060702/0239 →
Continuity (1)
Related Publication 20210026785A1 · Jan 28, 2021
Cited By (2)
US 12,219,057 US 12,608,479