IP Library Granted Patent US 10,303,448
Granted Patent B2
US 10,303,448 · App. 15/595,683 · Granted May 28, 2019

Systems and methods for graph-based analysis of software

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 10,303,448
App. No.
15/595,683
Granted
May 28, 2019
Kind
B2
Abstract

Disclosed herein are methods, systems, and computer program products directed to a guidance engine. The guidance engine is configured to query a knowledge base for guidance with respect to a property of a software application. The guidance engine receives a responsive query from the knowledge base that is based on the property. The responsive query informs a user of the guidance engine how to address a vulnerability within the software application by performing a transform with respect to a property of the software application.

Claims (47)

1. A method, comprising:

receiving, by at least one computer processor, a graph-based query that specifies a portion of a graph for analysis and that is based on a relationship of a plurality of properties of a software application;

responsive to receiving the graph-based query:

programming, by the at least one computer processor, a first thread to analyze a first aspect of an identified problem in the software application via a first path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query;

programming, by the at least one computer processor, a second thread to analyze a second aspect of the identified problem in the software application via a second path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query; and

moderating, by the at least one computer processor, access to an information repository by the first thread and the second thread, wherein the moderating comprises updating the information repository and, based on at least one result from the first thread or the second thread, rejecting stale information retrieved by the first thread or the second thread from the information repository; and

sending, by the at least one computer processor, a response to the graph-based query based on the moderating.

2. The method of claim 1 , wherein the response comprises a transform with respect to a given property of the plurality of properties of the software application.

3. The method of claim 2 , wherein the transform comprises an in-line replacement of source code of the software application or a replacement of a function of the software application by reference to a new function.

4. The method of claim 1 , wherein the plurality of properties of the software application comprises an optional property in the graph-based query based on a determination that an optional relationship to the optional property is present within the software application.

5. The method of claim 1 , wherein the graph-based query comprises a relationship between a given property of the plurality of properties of the software application and an additional property of the plurality of properties of the software application, wherein the given property of the plurality of properties of the software application is located in a first notional domain, and wherein the additional property of the plurality of properties of the software application is located in a second notional domain.

6. The method of claim 1 , further comprising:

analyzing an event indicative of a vulnerability from the information repository; and

selecting a given property of the plurality of properties of the software application based on the vulnerability.

7. The method of claim 1 , further comprising:

updating the information repository based on the response to the graph-based query.

8. A system, comprising:

a memory coupled to at least one computer processor and configured to perform operations comprising:

receiving a graph-based query that specifies a portion of a graph for analysis and that is based on a relationship of a plurality of properties of a software application;

responsive to receiving the graph-based query:

programming a first thread to analyze a first aspect of an identified problem in the software application via a first path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query;

programming a second thread to analyze a second aspect of the identified problem in the software application via a second path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query; and

moderating access to an information repository by the first thread and the second thread, wherein the moderating comprises updating the information repository and, based on at least one result from the first thread or the second thread, rejecting stale information retrieved by the first thread or the second thread from the information repository; and

sending a response to the graph-based query based on the moderating.

9. The system of claim 8 , wherein the response comprises a transform with respect to a given property of the plurality of properties of the software application.

10. The system of claim 9 , wherein the transform comprises an in-line replacement of source code of the software application or a replacement of a function of the software application by reference to a new function.

11. The system of claim 8 , wherein the plurality of properties of the software application comprises an optional property in the graph-based query based on a determination that an optional relationship to the optional property is present within the software application.

12. The system of claim 8 , wherein the graph-based query comprises a relationship between a given property of the plurality of properties of the software application and an additional property of the plurality of properties of the software application, wherein the given property of the plurality of properties of the software application is located in a first notional domain, and wherein the additional property of the plurality of properties of the software application is located in a second notional domain.

13. The system of claim 8 , the operations further comprising:

analyzing an event indicative of a vulnerability from the information repository; and

selecting a given property of the plurality of properties of the software application based on the vulnerability.

14. The system of claim 8 , the operations further comprising:

updating the information repository based on the response to the graph-based query.

15. A non-transitory computer-readable storage device having instructions stored thereon that, when executed by at least one computing device, cause the at least one computing device to perform operations comprising:

receiving a graph-based query that specifies a portion of a graph for analysis and that is based on a relationship of a plurality of properties of a software application;

responsive to receiving the graph-based query:

programming a first thread to analyze a first aspect of an identified problem in the software application via a first path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query;

programming a second thread to analyze a second aspect of the identified problem in the software application via a second path traversal with respect to the graph, based at least in part on the portion of the graph specified in the graph-based query; and

moderating access to an information repository by the first thread and the second thread, wherein the moderating comprises updating the information repository and, based on at least one result from the first thread or the second thread, rejecting stale information retrieved by the first thread or the second thread from the information repository; and

sending a response to the graph-based query based on the moderating.

16. The non-transitory computer-readable storage device of claim 15 , wherein the response comprises a transform with respect to a given property of the plurality of properties of the software application.

17. The non-transitory computer-readable storage device of claim 16 , wherein the transform comprises an in-line replacement of source code of the software application or a replacement of a function of the software application by reference to a new function.

18. The non-transitory computer-readable storage device of claim 15 , wherein the plurality of properties of the software application comprises an optional property in the graph-based query based on a determination that an optional relationship to the optional property is present within the software application.

19. The non-transitory computer-readable storage device of claim 15 , wherein the graph-based query comprises a relationship between a given property of the plurality of properties of the software application and an additional property of the plurality of properties of the software application, wherein the given property of the plurality of properties of the software application is located in a first notional domain, and wherein the additional property of the plurality of properties of the software application is located in a second notional domain.

20. The non-transitory computer-readable storage device of claim 15 , the operations further comprising:

analyzing an event indicative of a vulnerability from the information repository; and

selecting a given property of the plurality of properties of the software application based on the vulnerability.

Assignments (4)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2017
From: STEVEN, JOHN; SCHMIDT, CHRIS; THAYER, JORDAN TYLER
To: SYNOPSYS, INC.
Reel/Frame 043188/0440 →
Cited By (8)
US 12,197,695 US 12,265,804 US 12,355,795 US 12,561,613 US 12,602,142 US 12,650,756 US 12,693,769 US 12,713,125