IP Library Granted Patent US 9,398,019
Granted Patent B2
US 9,398,019 · App. 14/500,779 · Granted Jul 19, 2016

Verifying caller authorization using secret data embedded in code

Inventor: Rakesh Agarwal (Palo Alto, CA)
Assignee: VMware, Inc.
H04L63/102G06F9/45558G06F2009/45587
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 9,398,019
App. No.
14/500,779
Granted
Jul 19, 2016
Kind
B2
Abstract

In a computer system operable at more than one privilege level, confidential code is securely customized to use secret data to establish a code protection domain without disclosing the secret data to a managing operating system. In operation, a security module executes at a higher privilege level than both the managing operating system and the confidential code. After the managing operating system loads the executable of the confidential code, the security module injects the secret data directly into an authorization instruction and a verification instruction included in the confidential code and then sets both the authorization instruction and the verification instruction as executable-only. As the confidential code executes at the assigned privilege level, the authorization instruction and the verification instruction use the secret data to distinguish between unauthorized and authorized execution of the confidential code.

Claims (44)

1. A method of creating a code protection domain in a computer system, wherein the method executes at a first privilege level and comprising:

suspending a guest operating system that executes confidential code included in the code protection domain at a second privilege level that is less secure than the first privilege level, wherein the confidential code includes an authorization instruction that contains a first placeholder and a verification instruction that contains a second placeholder;

replacing both the first placeholder and the second placeholder with a security key;

setting both the authorization instruction and the verification instruction to be execute-only; and

unsuspending the guest operating system,

wherein, upon executing, the authorization instruction sets the value of a register to the security key and the verification instruction compares the value of the register to the security key, and

wherein setting the verification instruction to be execute-only comprises setting a page table entry that controls access to the verification instruction such that read access is disabled, write access is disabled, and execution access is enabled.

2. The method of claim 1 , wherein the confidential code interprets the results of the verification instruction as a trigger to branch execution of the confidential code.

3. The method of claim 1 , wherein the authorization instruction is included in a well-defined entry point to the code protection domain.

4. The method of claim 1 , wherein the first placeholder is equal to the second placeholder.

5. The method of claim 1 , wherein the second placeholder is an immediate operand used directly by the verification instruction and is not a memory address.

6. The method of claim 1 , wherein replacing the second placeholder comprises:

identifying a fixup location based on an executable and linkable file that includes the confidential code; and

overwriting the placeholder at the fixup location with the confidential value.

7. A computer system, comprising:

a hardware processor configured with

a guest operating system that executes confidential code included in a code protection domain at a first privilege level, wherein the confidential code includes an authorization instruction that contains a first placeholder and a verification instruction that contains a second placeholder; and

a guest integrity module that operates at a second privilege level that is more secure than the first privilege level and executes a program that securely injects data in the computer system, the program comprising:

suspending the guest operating system,

replacing both the first placeholder and the second placeholder with a security key,

setting both the authorization instruction and the verification instruction to be execute-only, and

unsuspending the guest operating system,

wherein, upon executing, the authorization instruction sets the value of a register to the security key and the verification instruction compares the value of the register to the security key, and

wherein setting the verification instruction to be execute-only comprises setting a page table entry that controls access to the verification instruction such that read access is disabled, write access is disabled, and execution access is enabled.

8. The computer system of claim 7 , wherein the confidential code interprets the results of the verification instruction as a trigger to branch execution of the confidential code.

9. The computer system of claim 7 , wherein the authorization instruction is included in a well-defined entry point to the code protection domain.

10. The computer system of claim 7 , wherein the first placeholder is equal to the second placeholder.

11. The computer system of claim 7 , wherein the second placeholder is an immediate operand used directly by the verification instruction and is not a memory address.

12. The computer system of claim 7 , wherein replacing the second placeholder comprises:

identifying a fixup location based on an executable and linkable format file that includes the confidential code; and

overwriting the placeholder at the fixup location with the confidential value.

13. A non-transitory computer-readable storage medium comprising instructions, which when executed at a first privilege level in a computer system operable in a plurality of privilege levels, causes the computer system to carry out the steps of:

suspending a guest operating system that executes confidential code included in a code protection domain at a second privilege level that is less secure than the first privilege level, wherein the confidential code includes an authorization instruction that contains a first placeholder and a verification instruction that contains a second placeholder;

replacing both the first placeholder and the second placeholder with a security key;

setting both the authorization instruction and the verification instruction to be execute-only; and

unsuspending the guest operating system,

wherein, upon executing, the authorization instruction sets the value of a register to the security key and the verification instruction compares the value of the register to the security key, and

wherein setting the verification instruction to be execute-only comprises setting a page table entry that controls access to the verification instruction such that read access is disabled, write access is disabled, and execution access is enabled.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the confidential code interprets the results of the verification instruction as a trigger to branch execution of the confidential code.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the authorization instruction is included in a well-defined entry point to the code protection domain.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the second placeholder is an immediate operand used directly by the verification instruction and is not a memory address.

17. The non-transitory computer-readable storage medium of claim 13 , wherein replacing the second placeholder comprises:

identifying a fixup location based on an executable and linkable file that includes the confidential code; and

overwriting the placeholder at the fixup location with the confidential value.

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 Sep 29, 2014
From: AGARWAL, RAKESH
To: VMWARE, INC.
Reel/Frame 033844/0580 →
Continuity (2)
Provisional Application 62034461 · Aug 7, 2014
Related Publication 20160044041A1 · Feb 11, 2016