IP Library Granted Patent US 9,141,807
Granted Patent B2
US 9,141,807 · App. 13/842,176 · Granted Sep 22, 2015

Security remediation

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 9,141,807
App. No.
13/842,176
Granted
Sep 22, 2015
Kind
B2
Abstract

A method is provided to remediate defects in first computer program code that can be used to configure a computer to produce code for use by the same or a different computer configured using second computer program code to use the produced code to produce output information, the method comprising: configuring a computer to perform static analysis of the first program to produce an information structure in a non-transitory computer readable storage device that associates a respective code statement of the first program code with a respective context, wherein the context associates a parser state with a potential defect in the produced code; identify a defect in the first computer program code that is associated with the respective code statement; and determining a remediation for the identified defect.

Claims (87)

1. A method to remediate a defect in first computer program code used to configure a first computer to produce code in response to a request from a different computer configured using second computer program code, to use the produced code to parse one or more contexts within the produced code, each context corresponding to one or more parser states and to generate output information, the method comprising:

configuring a computer to perform static analysis of the first computer program code that includes,

simulating the first computer configured, to produce, in a non-transitory computer readable storage device, at least a portion of the produced code that includes one or more contexts;

simulating the different computer configured, to identify one or more parser states that correspond to the one or more contexts in the at least a portion of the produced code;

producing a first information structure in a non-transitory computer readable storage device that associates a respective code statement of the first computer program code with at least one context that corresponds to at least one identified parser state; and

configuring a computer to perform a static analysis of the first computer program code that includes,

running multiple checkers to identify one or more defect types in the first computer program code;

producing a second information structure in a non-transitory computer readable storage device that associates the respective code statement of the first computer program code with the one or more identified defect types;

identifying a technology used by the first computer program code to represent the respective code statement; and

determining a remediation for an identified defect type that is associated by the second information structure with the respective code statement, based upon at least, the at least one context that is associated by the first information structure with the respective code statement, and the identified technology.

2. The method of claim 1 ,

wherein the identified one or more parser states are parser states that are expected to be reached in the course of the second computer program code causing the same or a different computer to parse the produced code.

3. The method of claim 1 further including:

providing a plurality of respective remediation obligation information structures in a non-transitory computer readable storage device that respectively associate defect types, parse states, technologies and remediations;

wherein determining a remediation includes determining a match between the identified defect type, the at least one context and the identified technology and respective defect types, parse states and technologies of the respective remediation obligation information structures.

4. The method of claim 3 ,

wherein determining a match includes determining a best match from among multiple possible matches.

5. The method of claim 1 further including:

providing in a non-transitory computer readable storage device, a third information structure that associates at least one parser state with one or more obligations;

wherein the third information structure includes a context hierarchy information structure in a computer readable storage device that indicates a hierarchy of parse states; further including:

providing a plurality of respective remediation obligation information structures in a computer readable storage device that respectively associate defect types, parse states, technologies and remediations;

wherein producing the second information structure that associates the respective code statement of the first computer program code with at least one context includes using the context hierarchy information structure to identify a parse state that corresponds to a parse state in one or more remediation obligation information structures; and

wherein determining a remediation includes determining a match between the identified defect type, the at least one context and the identified technology and respective defect types, parse states and technologies of the respective remediation obligation information structures.

6. The method of claim 3 further including:

providing a technology hierarchy information structure in a computer readable storage device that indicates a hierarchy of parse states;

providing a plurality of respective remediation obligation information structures in a computer readable storage device that respectively associate defect types, parse states, technologies and remediations;

wherein identifying the technology used to create the respective code statement includes using the technology hierarchy information structure to identify a technology that corresponds to a technology in one or more remediation obligation information structures; and

wherein determining a remediation includes determining a match between the identified defect type, the at least one context and the identified technology and respective defect types, parse states and technologies of the respective remediation obligation information structures.

7. The method of claim 1 further including:

using the first computer program to configure the computer to use the respective code statement to produce the at least a portion of the produced code.

8. The method of claim 1 further including:

providing in a non-transitory computer readable storage device, a third information structure that associates at least one parser state with one or more obligations;

wherein the first information structure in the non-transitory computer readable storage device associates each of multiple respective code statements of the first computer program code with respective contexts that each represents at least one identified parser state that is associated by the third information structure with one or more obligations.

9. The method of claim 1 ,

wherein the first computer program code configures the computer to operate as a web server.

10. The method of claim 1 ,

wherein the second computer program code configures the same or a different computer to operate as a browser.

11. The method of claim 1 ,

wherein the produced code includes HTML code.

12. The method of claim 1 ,

wherein the produced code includes one or more of code in the HTML, CSS and JavaScript languages.

13. The method of claim 1 ,

wherein the first computer program code configures the computer to operate as a web server;

wherein the second computer program code configures the same or a different computer to operate as a browser; and

wherein the produced code includes code that is consumed by the browser.

14. The method of claim 1 ,

wherein the first computer program code configures the computer to operate as a web server;

wherein the second computer program code configures the same or a different computer to operate as a browser; and

wherein the produced code includes code used by the browser to generate a user interface screen display.

15. The method of claim 1 ,

wherein the identified technology used by the first computer program code to produce the respective code statement includes a domain specific language.

16. The method of claim 1 ,

wherein the identified technology used by the first computer program code to produce the respective code statement includes an application programming interface.

17. The method of claim 1 ,

wherein the identified technology used by the first computer program code to produce the respective code statement includes at least one of JAVA, JSP, EL, Hibernate and Hibernate query Language.

18. The method of claim 1 ,

wherein the at least one context includes at least one of JS String, SQL string, SQL keyword, HTML attribute, CSS string, and URI.

19. The method of claim 1 further including;

providing in a computer readable storage device a code fix for the determined remediation.

20. The method of claim 1 further including;

providing in a computer readable storage device one or more templates to indicate a code fix for the determined remediation.

21. The method of claim 1 further including:

providing in a non-transitory computer readable storage device, a third information structure that associates at least one parser state with one or more obligations;

wherein producing the second information structure in a non-transitory computer readable storage device that associates a respective code statement of the first computer program code with at least one context that corresponds to at least one identified parser state that is associated by the third information structure with one or more obligations.

22. The method of claim 1 ,

wherein identifying a technology used by the first computer program code to represent the respective code statement includes configuring a computer to run a static analysis that includes running a checker to identify a technology used by the first computer program code to represent the respective code statement.

23. An article of manufacture that includes a non-transitory computer readable storage device that includes first computer program code to configure a first computer to perform a process to produce code in response to a request from a different computer configured using second computer program code, to use the produced code to parse one or more contexts within the produced code, each context corresponding to one or more parser states and to generate output information, the process including:

configuring a computer to perform static analysis of the first computer program code that includes,

simulating the first computer configured, to produce, in a non-transitory computer readable storage device, at least a portion of the produced code that includes one or more contexts;

simulating the different computer configured, to identify one or more parser states that correspond to the one or more contexts in the at least a portion of the produced code;

producing a first information structure in a non-transitory computer readable storage device that associates a respective code statement of the first computer program code with at least one context that corresponds to at least one identified parser state; and

configuring a computer to perform a static analysis of the first computer program code that includes,

running multiple checkers to identify one or more defect types in the first computer program code;

producing a second information structure in a non-transitory computer readable storage device that associates the respective code statement of the first computer program code with the one or more identified defect types;

identifying a technology used by the first computer program code to represent the respective code statement; and

determining a remediation for an identified defect type that is associated by the second information structure with the respective code statement, based upon at least, the at least one context that is associated by the first information structure with the respective code statement, and the identified technology.

24. A method to remediate a defect in first computer program code used to configure a web server to produce code for use by a browser, in response to a request from the browser, the method comprising:

configuring a computer to perform static analysis to simulate the web server to produce at least a portion of the produced code, the produced code having one or more contexts, and to simulate the browser identifying one or more parser states that correspond to the one or more contexts in the at least a portion of the produced code and to associate a code statement of the first computer program code with at least one context that corresponds to at least one identified parser state;

configuring a computer to perform static analysis that includes running multiple checkers to identify one or more defect types in the first computer program code and to associate the code statement with at least one identified defect type;

identifying a technology used by the first computer program code to represent the code statement; and

selecting a remediation for the at least one identified defect types based upon the at least one context and the defect type associated with the code statement and upon the identified technology used to represent the code statement.

25. A system for use to remediate a defect in first computer program code used to configure a web server to produce code for use by a browser, in response to a request from the browser, the system comprising:

a computer configured to,

perform static analysis to simulate the web server to produce at least a portion of the produced code, the produced code having one or more contexts, and to simulate the browser identifying one or more parser states that correspond to the one or more contexts in the at least a portion of the produced code and to associate a code statement of the first computer program code with at least one context that corresponds to at least one identified parser state;

perform static analysis that includes running multiple checkers to identify one or more defect types in the first computer program code and to associate the code statement with at least one identified defect type;

identify a technology used by the first computer program code to represent the code statement; and

select a remediation for the at least one identified defect types based upon the at least one context and the defect type associated with the code statement and upon the identified technology used to represent the code statement.

Assignments (6)
SECURITY INTEREST Recorded Sep 30, 2024
From: BLACK DUCK SOFTWARE, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 069083/0149 →
CHANGE OF NAME Recorded Jul 30, 2024
From: SOFTWARE INTEGRITY GROUP, INC.
To: BLACK DUCK SOFTWARE, INC.
Reel/Frame 068191/0490 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2024
From: SYNOPSYS, INC.
To: SOFTWARE INTEGRITY GROUP, INC.
Reel/Frame 066664/0821 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 034514 FRAME: 0496. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 3, 2015
From: COVERITY, INC
To: SYNOPSYS, INC
Reel/Frame 035121/0570 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2014
From: COVERITY, INC
To: SYNOPSIS, INC
Reel/Frame 034514/0496 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2013
From: CHOU, ANDY C; PASSKI, JON; GAUCHER, ROMAIN
To: COVERITY, INC.
Reel/Frame 030864/0235 →