IP Library Granted Patent US 7,284,274
Granted Patent B1
US 7,284,274 · App. 10/050,764 · Granted Oct 16, 2007

System and method for identifying and eliminating vulnerabilities in computer software applications

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,284,274
App. No.
10/050,764
Granted
Oct 16, 2007
Kind
B1
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.

Claims (29)

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.

2. The method of claim 1 , further comprising:

performing a dynamic analysis of the set of exploitable software vulnerabilities to identify one or more false positives in the set of exploitable software vulnerabilities; and

discarding the one or more false positives from the set of exploitable software vulnerabilities.

3. The method of claim 2 , wherein performing the dynamic analysis comprises executing the set of potential exploitable software vulnerabilities with a maximal number of testing configurations.

4. The method of claim 1 , wherein the vulnerability knowledge database is expandable.

5. The method of claim 1 , wherein the set of exploitable software vulnerabilities comprises one or more of a security vulnerability, a safety vulnerability, or a reliability vulnerability.

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.

7. The system of claim 6 , further comprising a third dynamic analysis tool that performs a dynamic analysis of the set of exploitable software vulnerabilities to identify one or more false positives in the set of exploitable software vulnerabilities, wherein the one or more false positives are discarded from the set of exploitable software vulnerabilities.

8. The system of claim 7 , wherein the third dynamic analysis tool executes the set of potential exploitable software vulnerabilities with a maximal number of testing configurations.

9. The system of claim 6 , wherein the vulnerability knowledge database is expandable.

10. The system of claim 9 , further comprising a user interface that enables a user to enter an additional known software vulnerability to the vulnerability knowledge database.

11. The system of claim 6 , wherein the set of exploitable software vulnerabilities comprises one or more of a security vulnerability, a safety vulnerability, or a reliability vulnerability.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2017
From: CIGITAL, INC.
To: SYNOPSYS, INC.
Reel/Frame 043083/0490 →
RELEASE OF SECURITY INTEREST Recorded Jan 11, 2017
From: SUNTRUST BANK
To: CIGITAL, INC.
Reel/Frame 040950/0357 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME FROM CIGITAL TO CIGITAL, INC. PREVIOUSLY RECORDED ON REEL 012742 FRAME 0951. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 29, 2016
From: WALLS, THOMAS J.; SHAH, VIREN; GHOSH, ANUP K.
To: CIGITAL, INC.
Reel/Frame 040968/0195 →
SECURITY INTEREST Recorded Sep 22, 2014
From: CIGITAL, INC.
To: SUNTRUST BANK
Reel/Frame 033788/0914 →