IP Library Granted Patent US 8,949,797
Granted Patent B2
US 8,949,797 · App. 12/761,952 · Granted Feb 3, 2015

Optimizing performance of integrity monitoring

Inventors: Najwa Aaraj (Jdeidet-El-Metn, LB); Mihai Christodorescu (Briarcliff Manor, NY); Dimitrios Pendarakis (Westport, CT); Reiner Sailer (Scarsdale, NY); Douglas L. Schales (Armonk, NY)
Assignee: International Business Machines Corporation
G06F21/566G06F21/554G06F21/563
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,949,797
App. No.
12/761,952
Granted
Feb 3, 2015
Kind
B2
Abstract

A system, method and computer program product for verifying integrity of a running application program on a computing device. The method comprises: determining entry points into an application programs processing space that impact proper execution impact program integrity; mapping data elements reachable from the determined entry points into a memory space of a host system where the application to verify is running; run-time monitoring, in the memory space, potential modification of the data elements in a manner potentially breaching program integrity; and initiating a response to the potential modification. The run-time monitoring detects when a data transaction, e.g., a write event, reaches a malicious agent's entry point, a corresponding memory hook is triggered and control is passed to a security agent running outside the monitored system. This agent requests the values of the data elements, and determines if invariants that have been previously computed hold true or not under the set of retrieved data values.

Claims (90)

1. A computer-implemented method for verifying integrity of a running application program on a computing device, said method comprising:

determining entry points into an application programs processing space that potentially impact data elements of said running application;

mapping the data elements reachable from said determined entry points into a memory space of a host system where the application program to verify is running;

monitoring, during run-time, said memory space to verify that any modification to a data element does not breach a program state;

analyzing the data elements for determining a presence of overlap in security guarantees, the presence of the overlap in the security guarantees indicating data dependency between the data elements;

selecting one or more data elements having no data dependency between each other in said security guarantees;

monitoring, for said security guarantees, the selected data elements having no data dependency between each other: and

initiating a response to one or more of said modification to one or more of the monitored selected data elements when said one or more modification breaches said program state.

2. The computer-implemented method of claim 1 , wherein said monitoring comprises checking potential updates to a target data structure relevant for a proper execution of said application program.

3. The computer-implemented method of claim 1 , wherein said monitoring comprises checking potential updates to a target data structure relevant for preserving semantic integrity of said program state.

4. The computer-implemented method of claim 3 , wherein said determining entry points into an application programs processing space comprises:

performing, prior to running said application program to be monitored, a static analysis of the application program's code; and

automatically constructing, based on said static analysis, a set of program state invariants of said application, wherein said run-time monitoring includes enforcing said invariants over contents of data structures being updated.

5. The computer-implemented method of claim 4 , wherein said determining of a program's entry points to a memory space comprises:

running said application and a module that adds additional functionality to said application in a sandbox environment; and,

collecting behavior traces for said application program to detect said module's entry points in said host memory space.

6. The computer-implemented method of claim 5 , wherein said module is an untrusted plug-in or malware module.

7. The computer-implemented method of claim 4 , wherein said static analysis comprises:

constructing a system dependence graph (SDG) from said program code of the application program based on an entry point;

computing backward slices in the SDG, starting from said entry point, a backward slice having one or more program variables that affect, directly or indirectly, the value of a target data variable; and,

automatically constructing said program state invariants from said backward slices.

8. The computer-implemented method of claim 1 , further comprising:

analyzing a set of potential monitoring points for overhead under different workloads of interest;

determining a performance penalty incurred by continuously monitoring all data dependencies; and,

deriving a balanced monitoring profile using semantic-dependency information and performance penalty values.

9. The computer-implemented method of claim 1 , wherein said host machine is a virtual machine (VM) executing as guest in a host device, said run-time monitoring validating semantic integrity of memory configurations in the guest VM.

10. A computer-implemented method for run-time software monitoring comprising: pre-determining data structures that affect the semantics of a program state of a program to be monitored;

constructing a semantic-integrity profile based on a code of an application program, said profile comprising constraints that hold true at particular states for semantic integrity to be preserved;

performing run-time monitoring of said program to determine when the program enters said particular program state;

checking invariants and determining if one or more constraints are not satisfied indicating semantic integrity breach of said program;

analyzing data elements in said monitored program for determining a presence of overlap in security guarantees, said presence of said overlap in said security guarantees indicating data dependency between said data elements;

selecting one or more data elements having no data dependency between each other in said security guarantees;

monitoring, for said security guarantees, said selected data elements having no data dependency between each other; and

raising an alert in response to a modification to one or more of said monitored selected data elements when said modification breaches said particular program state.

11. The method of claim 10 , wherein said constructing a semantic-integrity profile comprises:

performing, prior to running said application program to be monitored, a static analysis of the application program's code; and

automatically constructing, based on said static analysis, a set of program state invariants of said application, wherein said run-time monitoring includes enforcing said invariants over contents of data structures being updated.

12. The method of claim 11 , wherein said static analysis comprises:

running said application and a module that adds additional functionality to said application in a sandbox environment; and,

collecting behavior traces for said application program to detect said module's entry points in said host memory space.

13. The method of claim 12 , wherein said module is an untrusted plug-in or malware module.

14. The method of claim 11 , wherein said static analysis comprises:

constructing a system dependence graph (SDG) from said program code of the application program based on an entry point;

computing backward slices in the SDG, starting from said entry point, a backward slice having one or more program variables that affect, directly or indirectly, the value of a target data variable; and,

automatically constructing said program state invariants from said backward slices.

15. A run-time software monitoring system comprising:

a memory;

a processor in communication with said memory, wherein the system is configured for performing a method comprising:

pre-determining data structures that affect the semantics of a program state of a program to be monitored;

constructing a semantic-integrity profile based on a code of an application program, said profile comprising constraints that hold true at particular states for semantic integrity to be preserved;

performing run-time monitoring of said program to determine when the program enters said particular program state;

checking invariants and determining if one or more constraints are not satisfied indicating semantic integrity breach of said program;

analyzing data elements in said monitored program for determining a presence of overlap in security guarantees, said presence of said overlap in said security guarantees indicating data dependency between said data elements;

selecting one or more data elements having no data dependency between each other in said security guarantees;

monitoring, for said security guarantees, said selected data elements having no data dependency between each other; and

raising an alert in response to a modification to one or more of said monitored selected data elements when said modification breaches said particular program state.

16. The system of claim 15 , wherein said run-time monitoring comprises checking potential updates to a target data structure relevant for a proper execution of said application program.

17. The system of claim 15 , wherein said monitoring comprises checking potential updates to a target data structure relevant for preserving semantic integrity of said program state.

18. The system of claim 17 , wherein said pre-determining data structures that affect the semantics of a program state comprises:

performing, prior to running said application program to be monitored, a static analysis of the application program's code; and

automatically constructing, based on said static analysis, a set of program state invariants of said application, wherein said run-time monitoring includes enforcing said invariants over contents of data structures being updated.

19. The system of claim 18 , wherein said pre-determining data structures that affect the semantics of a program state comprises:

running said application and a module that adds additional functionality to said application in a sandbox environment; and,

collecting behavior traces for said application program to detect said module's entry points in said host memory space.

20. The system of claim 19 , wherein said module is an untrusted plug-in or malware module.

21. The system of claim 18 , wherein said static analysis comprises:

constructing a system dependence graph (SDG) from said program code of the application program based on an entry point;

computing backward slices in the SDG, starting from said entry point, a backward slice having one or more program variables that affect, directly or indirectly, the value of a target data variable; and,

automatically constructing said program state invariants from said backward slices.

22. The system of claim 15 , further comprising:

analyzing a set of potential monitoring points for overhead under different workloads of interest;

determining a performance penalty incurred by continuously monitoring all data dependencies; and,

deriving a balanced monitoring profile using semantic-dependency information and performance penalty values.

23. A computer program product for run-time software monitoring, the computer program product comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising:

computer readable program code when being run, causing a computer to pre-determine data structures that affect the semantics of a program state of a program to be monitored;

computer readable program code when being run, causing the computer to construct a semantic-integrity profile from the source code or compiled binary code of the core component, said profile comprising constraints that hold true at particular states for semantic integrity to be preserved;

computer readable program code when being run, causing the computer to perform run-time monitoring of said program to determine when the program enters said particular program state;

computer readable program code when being run, causing the computer to check invariants and determine if one or more constraints are not satisfied indicating semantic integrity breach of said program; and,

computer readable program code when being run, causing the computer to analyze data elements in the monitored program for determining a presence of overlap in security guarantees, the overlap in the security guarantee indicating data dependency between said data elements;

computer readable program code when being run, causing the computer to select, for said monitoring, one or more data elements having no data dependency between each other in said security guarantees;

computer readable program code when being run, causing the computer to monitor, for said security guarantees, said selected data elements having no data dependency between each other; and

computer readable program code when being run, causing the computer to raise an alert in response to determining that a modification to one or more of said monitored selected data elements does not satisfy said one or more constraints.

24. The computer program product of claim 23 , wherein said code for constructing a semantic-integrity profile comprises:

computer readable program code configured to perform, prior to running said application program to be monitored, a static analysis of the application program's code; and

computer readable program code configured to automatically construct, based on said static analysis, a set of program state invariants of said application, wherein said run-time monitoring includes enforcing said invariants over contents of data structures being updated.

25. The computer program product of claim 24 , wherein said performing a static analysis comprises:

running said application and a module that adds additional functionality to said application in a sandbox environment; and,

collecting behavior traces for said application program to detect said module's entry points in said host memory space.

26. The computer program product of claim 25 , wherein said module is an untrusted plug-in or malware module.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2010
From: AARAJ, NAJWA; CHRISTODORESCU, MIHAI; PENDARAKIS, DIMITRIOS; SAILER, REINER; SCHALES, DOUGLAS L.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 024248/0001 →
Continuity (1)
Related Publication 20110258610A1 · Oct 20, 2011