System and method for identifying and eliminating vulnerabilities in computer software applications
First Claim
Patent Images
1. A method for certifying software applications, said method comprising:
- (a) creating a vulnerability knowledge database comprising one or more classes of known software vulnerabilities;
(b) applying a code parser to the software application to create an abstract syntax tree;
(c) comparing the abstract syntax tree and the classes of known software vulnerabilities to identify a set of potential exploitable software vulnerabilities;
(d) performing a static analysis of the source code, wherein the static analysis is a flow sensitive analysis of a list of constraints, wherein a constraint is a formal assertion describing how a program, function or procedure would affect a state of the software application if the software application were executed, and wherein the results of the static analysis comprise a set of exploitable software vulnerabilities;
(e) performing a first dynamic analysis of the software, wherein the first dynamic analysis comprises a set of tests to achieve code coverage;
(f) performing a second dynamic analysis of the software, wherein the second dynamic analysis comprises injecting faults into the software while being executed;
(g) performing any two of said analysis steps in a pipelined manner; and
(h) using the results of steps (a)-(g) as a basis for certifying the software application.
5 Assignments
0 Petitions
Accused Products
Abstract
A system and method for certifying software for essential and security-critical systems. The system and method provide a methodology and corresponding analysis engines increase the level of confidence that common vulnerabilities are not present in a particular application. A pipeline system consisting of independent modules which involve increasingly complex analysis is disclosed. The pipeline approach allows the user to reduce computation time by focusing resources on only those code segments which were not eliminated previously in the pipeline.
-
Citations
11 Claims
-
1. A method for certifying software applications, said method comprising:
-
(a) creating a vulnerability knowledge database comprising one or more classes of known software vulnerabilities; (b) applying a code parser to the software application to create an abstract syntax tree; (c) comparing the abstract syntax tree and the classes of known software vulnerabilities to identify a set of potential exploitable software vulnerabilities; (d) performing a static analysis of the source code, wherein the static analysis is a flow sensitive analysis of a list of constraints, wherein a constraint is a formal assertion describing how a program, function or procedure would affect a state of the software application if the software application were executed, and wherein the results of the static analysis comprise a set of exploitable software vulnerabilities; (e) performing a first dynamic analysis of the software, wherein the first dynamic analysis comprises a set of tests to achieve code coverage; (f) performing a second dynamic analysis of the software, wherein the second dynamic analysis comprises injecting faults into the software while being executed; (g) performing any two of said analysis steps in a pipelined manner; and (h) using the results of steps (a)-(g) as a basis for certifying the software application. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A system for certifying a software applications, the system comprising:
-
a vulnerability knowledge database comprising one or more classes of known software vulnerabilities; a code parser that creates an abstract syntax tree from the software application; a vulnerability code analyzer that compares the abstract syntax tree the classes of known software vulnerabilities to identify a set of potential exploitable software vulnerabilities; a static analysis tool that performs a static analysis of the source code, wherein the static analysis is flow sensitive analysis of a list of constraints, wherein a constraint is a formal assertion describing how a program, function or procedure would affect a state of the software application if the software application were executed, and wherein the results of the static analysis comprise a set of exploitable software vulnerabilities; a first dynamic analysis tool that comprises a set of tests to achieve code coverage; and a second dynamic analysis tool that operable to inject faults into the software while being executed, wherein any two of said tools are accessed in a pipelined manner, and wherein results generated by the system are used as a basis for certifying the software application. - View Dependent Claims (7, 8, 9, 10, 11)
-
Specification