IP Library Granted Patent US 7,971,193
Granted Patent B2
US 7,971,193 · App. 11/486,552 · Granted Jun 28, 2011

Methods for performining cross module context-sensitive security analysis

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 7,971,193
App. No.
11/486,552
Granted
Jun 28, 2011
Kind
B2
Abstract

A computer-implemented method for detecting program bugs in source code of a computer program that includes a plurality of source modules, each of the plurality of source modules including at least a set of subroutines, is provided. The method includes performing summary collection on subroutines of the plurality of source modules. Performing the summary collection includes collecting first data pertaining to at least untrusted data in each of the subroutines of the plurality of source modules. The method also includes storing the first data in a set of intermediate files. The method further includes performing interprocedural analysis on the set of intermediate files. The interprocedural analysis is configured to identify at least first untrusted data in a given subroutine of the subroutines of the plurality of source modules and to map a data flow tracking the first untrusted data across at least two of the plurality of source modules.

Claims (36)

1. A computer-implemented method for detecting program bugs in source code of a computer program that includes a plurality of source modules, each of said plurality of source modules including at least a set of subroutines, comprising:

performing summary collection on subroutines of said plurality of source modules, said performing said summary collection including collecting first data pertaining to at least untrusted data in each of said subroutines of said plurality of source modules, said summary collection including building at least one assignment graph from said first data and building at least one transfer function from said assignment graph;

storing said first data in a set of intermediate files; and

performing interprocedural analysis on said set of intermediate files, said interprocedural analysis being configured to identify at least first untrusted data in a given subroutine of said subroutines of said plurality of source modules and to map a data flow tracking said first untrusted data across at least two of said plurality of source modules.

2. The computer-implemented method of claim 1 wherein said first data further pertains to critical references in said each of said subroutines of said plurality of source modules.

3. The computer-implemented method of claim 1 wherein said performing said interprocedural analysis includes building at least one call graph for modeling relationships between subroutines of said plurality of source modules.

4. The computer-implemented method of claim 1 wherein said performing said interprocedural analysis includes performing backward propagation on a given subroutine of said set of subroutines, said given subroutine representing a subroutine that contains at least one untrusted data.

5. The computer-implemented method of claim 1 wherein said performing said interprocedural analysis includes performing forward propagation on a given subroutine of said set of subroutine, said given subroutine representing a subroutine that contains at least one untrusted data.

6. The computer-implemented method of claim 1 further including producing warnings with static stack traces responsive to said performing said interprocedural analysis.

7. The computer-implemented method of claim 1 further including storing said first data in a database for security analysis by another application program.

8. The computer-implemented method of claim 1 wherein at least one of said performing said summary collection and said performing said interprocedural analysis is embedded in a compiler.

9. An article of manufacture comprising a non-transitory tangible computer-readable storage medium encoded with computer-readable program code configured to detect program bugs in source code of a computer program that includes a plurality of source modules, each of said plurality of source modules including at least a set of subroutines, said program code including:

computer readable code for performing summary collection on subroutines of said plurality of source modules, said performing said summary collection including collecting first data pertaining to at least untrusted data in each of said subroutines of said plurality of source modules, said summary collection including building at least one assignment graph from said first data and building at least one transfer function from said assignment graph;

computer readable code for storing said first data in a set of intermediate files; and

computer readable code for performing interprocedural analysis on said set of intermediate files, said interprocedural analysis being configured to identify at least first untrusted data in a given subroutine of said subroutines of said plurality of source modules and to map a data flow tracking said first untrusted data across at least two of said plurality of source modules.

10. The article of manufacture of claim 9 wherein said first data further pertains to critical references in said each of said subroutines of said plurality of source modules.

11. The article of manufacture of claim 9 wherein said computer readable code for performing said interprocedural analysis includes computer readable code for building at least one call graph for modeling relationships between said subroutines of said plurality of source modules.

12. The article of manufacture of claim 9 wherein said computer readable code for performing said interprocedural analysis includes computer readable code for performing backward propagation on a given subroutine of said set of subroutine, said given subroutine representing a subroutine that contains at least one untrusted data.

13. The article of manufacture of claim 9 wherein said computer readable code for performing said interprocedural analysis includes computer readable code for performing forward propagation on a given subroutine of said set of subroutine, said given subroutine representing a subroutine that contains at least one untrusted data.

14. The article of manufacture of claim 9 further including computer readable code for producing warnings with static stack traces responsive to said performing said interprocedural analysis.

15. The article of manufacture of claim 9 further including computer readable code for storing said first data in a database for security analysis by another application program.

16. A computer system comprising:

a processor set including at least one processor; and

non-transitory tangible computer-readable storage media encoded with a compiler configured to, when executed by said processor set,

detect program bugs in source code of a computer program that includes a plurality of source modules, each of said plurality of source modules including at least a set of subroutines,

perform a summary collection including collecting first data pertaining to at least untrusted data in each of said subroutines of said plurality of source modules, said summary collection including building at least one assignment graph from said first data and building at least one transfer function from said assignment graph,

store said first data in a set of intermediate files, and

perform an interprocedural analysis on said set of intermediate files, said interprocedural analysis being configured to identify at least first untrusted data in a given subroutine of said subroutines of said plurality of source modules and to map a data flow tracking said first untrusted data across at least two of said plurality of source modules.

17. The computer system of claim 16 wherein said interprocedural analysis includes performing backward propagation on a given subroutine of said set of subroutine, said given subroutine representing a subroutine that contains at least one untrusted data.

18. The computer system of claim 16 wherein said interprocedural analysis includes performing forward propagation on a given subroutine of said set of subroutine, said given subroutine representing a subroutine that contains at least one untrusted data.

19. A method comprising:

a computer system compiling source code into machine code so as to define program having modules each of which includes one or more subroutines;

during said compiling, said computer system collecting summary subroutine data regarding said subroutines, said summary collecting including

applying criteria for identifying untrusted data and critical references to each of said subroutines so as to identify any untrusted data and any critical references respectively associated with said subroutines, and

for each combination of subroutine and untrusted data, formulating a respective transfer function;

said computer system determining from said summary subroutine data a relation between a critical reference associated with one of said modules and untrusted data having another of said modules as a source.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 058897/0262 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →