IP Library Granted Patent US 8,656,497
Granted Patent B2
US 8,656,497 · App. 13/078,470 · Granted Feb 18, 2014

Constraint injection system for immunizing software programs against vulnerabilities and attacks

Inventors: Saman P. Amarasinghe (Waltham, MA); Bharath Chandramohan (Santa Clara, CA); Charles Renert (Palo Alto, CA); Derek L. Bruening (Troy, NY); Vladimir Kiriansky (Los Altos, CA); Timothy Garnett (Boston, MA); Sandy Wilbourn (Palo Alto, CA); Warren Wu (Los Altos, CA)
Assignee: VMware, Inc.
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 8,656,497
App. No.
13/078,470
Granted
Feb 18, 2014
Kind
B2
Abstract

A constraint is inserted into a program to address a vulnerability of the program to attacks. The constraint includes a segment of code that determines when the program has been asked to execute a “corner case” which does not occur in normal operations. The constraint code can access a library of detector and remediator functions to detect various attacks and remediate against them. Optionally, the detector can be employed without the remediator for analysis. The context of the program can be saved and restored if necessary to continue operating after remediation is performed. The constraints can include descriptors, along with machine instructions or byte code, which indicate how the constraints are to be used.

Claims (55)

1. A non-transitory machine readable storage medium non-transiently storing computer instructions for immunizing a computer program against vulnerabilities and attacks at runtime, the computer instructions comprising:

a node manager in communication with a central management console and configured to dynamically load a constraint library into a computer program while the computer program is running, the constraint library containing a constraint;

a managed program execution engine configured to:

determine insertion point information for the computer program that is associated with the constraint, wherein different constraints in the constraint library are associated with different insertion point information;

analyze the computer program to determine an insertion point to insert constraint code associated with the constraint based on the insertion point information; and

insert the constraint code associated with the constraint into the computer program while the computer program is running, the constraint code associated with machine instructions that correct a flaw of the computer program, the flaw being a security vulnerability or a bug;

a constraint management engine in communication with the node manager and the managed program execution engine, the constraint management engine being configured to dynamically turn the constraint of the loaded constraint library on or off as the computer program is running, in response to user input; and

a gateway in communication with the constraint management engine configured to receive a communication from the constraint management engine indicating whether the constraint is turned on or off, wherein the gateway receives a call from the constraint code and determines whether the machine instructions that correct the flaw of the computer program should be called based on whether the constraint is turned on or off.

2. The non-transitory machine readable storage medium of claim 1 , wherein when the constraint is off, machine instructions that correct the flow of the computer program are not called and when the constraint is on, machine instructions that correct the flaw of the computer program are called.

3. The non-transitory machine readable storage medium of claim 1 , wherein the constraint library is loaded into the computer program and dynamically turned on without restarting of the computer program.

4. The non-transitory machine readable storage medium of claim 1 , wherein the constraint code is inserted in computer program instructions of the computer program that reside in a memory of a computer system executing the computer program.

5. The non-transitory machine readable storage medium of claim 1 , wherein the managed program execution engine manages a code cache, wherein a code fragment of the computer program is modified to insert one or more instructions of the constraint code to call the constraint in the dynamically loaded library.

6. The non-transitory machine readable storage medium of claim 5 , wherein a user input specifies a location to insert the one or more instructions of the constraint code in the code fragment.

7. The non-transitory machine readable storage medium of claim 1 , wherein the dynamically loaded constraint library is loaded into constraint library storage, wherein the constraint is called from the constraint library in the constraint library storage when the constraint is turned on.

8. The non-transitory machine readable storage medium of claim 1 , wherein:

the library is loaded in an off state, and

the library is turned on allowing the constraint to be called from the constraint code inserted in the computer program.

9. The non-transitory machine readable storage medium of claim 1 , wherein the constraint management engine is configured to:

call a detector function in the library without calling a remediator function in the library when the constraint has been dynamically switched to a detection mode, and

call a detector function in the library and a remediator function in the library when the constraint has been dynamically switched to a remediation mode.

10. A method for immunizing a computer program against vulnerabilities and attacks at runtime, the method comprising:

dynamically loading a constraint library into a computer program while the computer program is running, the constraint library containing a constraint;

determining insertion point information for the computer program that is associated with the constraint, wherein different constraints in the constraint library are associated with different insertion point information;

analyzing the computer program to determine an insertion point to insert constraint code associated with the constraint based on the insertion point information;

inserting the constraint code associated with the constraint into the computer program while the computer program is running, the constraint code associated with machine instructions that correct a flaw of the computer program, the flaw being a security vulnerability or a bug;

dynamically turning the constraint of the loaded constraint library on or off as the computer program is running, in response to user input; and

receiving a call from the constraint code and determining whether the machine instructions that correct the flaw of the computer program should be called based on whether the constraint is turned on or off.

11. The method of claim 10 , wherein when the constraint is off, machine instructions that correct the flow of the computer program are not called and when the constraint is on, machine instructions that correct the flaw of the computer program are called.

12. The method of claim 10 , wherein the constraint library is loaded into the computer program and dynamically turned on without restarting of the computer program.

13. The method of claim 10 , wherein the constraint code is inserted in computer program instructions of the computer program that reside in a memory of a computer system executing the computer program.

14. The method of claim 10 , wherein inserting comprises:

loading a code fragment of the computer program into a code cache; and

modifying the code fragment to insert one or more instructions of the constraint code to call the constraint of the dynamically loaded library.

15. The method of claim 14 , wherein a user input specifies a location to insert the one or more instructions of the constraint code in the code fragment.

16. The method of claim 10 , wherein the dynamically loaded constraint library is loaded into constraint library storage, wherein the constraint is called from the constraint library in the constraint library storage when the constraint is turned on.

17. The method of claim 10 , wherein:

the library is loaded in an off state, and

the library is turned on allowing the constraint to be called from the constraint code inserted in the computer program.

18. The method of claim 10 , further comprising:

calling a detector function in the library without calling a remediator function in the library when the constraint has been dynamically switched to a detection mode, and

calling a detector function in the library and a remediator function in the library when the constraint has been dynamically switched to a remediation mode.

19. An apparatus configured to immunize a computer program against vulnerabilities and attacks at runtime, the apparatus comprising:

one or more computer processors; and

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

dynamically load a constraint library into a computer program while the computer program is running, the constraint library containing a constraint;

determine insertion point information for the computer program that is associated with the constraint, wherein different constraints in the constraint library are associated with different insertion point information;

analyze the computer program to determine an insertion point to insert constraint code associated with the constraint based on the insertion point information;

insert the constraint code associated with the constraint into the computer program while the computer program is running, the constraint code associated with machine instructions that correct a flaw of the computer program, the flaw being a security vulnerability or a bug;

dynamically turn the constraint of the loaded constraint library on or off as the computer program is running, in response to user input; and

receive a call from the constraint code and determining whether the machine instructions that correct the flaw of the computer program should be called based on whether the constraint is turned on or off.

20. The apparatus of claim 19 , wherein when the constraint is off, machine instructions that correct the flow of the computer program are not called and when the constraint is on, machine instructions that correct the flaw of the computer program are called.

21. A non-transitory machine readable storage medium non-transiently storing computer instructions for immunizing a computer program against vulnerabilities and attacks at runtime, the computer instructions comprising:

a node manager in communication with a central management console and configured to dynamically load a constraint library into a computer program while the computer program is running, the constraint library containing a constraint;

a managed program execution engine configured to insert constraint code associated with the constraint of the loaded library into the computer program while the computer program is running, the constraint code associated with machine instructions that correct a flaw of the computer program, the flaw being a security vulnerability or a bug; and

a constraint management engine in communication with the node manager and the managed program execution engine, the constraint management engine being configured to dynamically switch the constraint of the loaded constraint library between a detection mode that detects the flaw, but does not remediate the flaw, and a remediation mode that detects and remediates the flaw as the computer program is running when it is determined that the machine instructions that correct the flaw of the computer program should be called based on whether the constraint is turned on or off, in response to user input.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
Continuity (3)
Continuation 11422547 · Jun 6, 2006
Provisional Application 60688099 · Jun 7, 2005
Related Publication 20110185433A1 · Jul 28, 2011