IP Library Granted Patent US 9,792,200
Granted Patent B2
US 9,792,200 · App. 15/057,812 · Granted Oct 17, 2017

Assessing vulnerability impact using call graphs

Inventors: Henrik Plate (Valbonne, FR); Serena Ponta (Antibes, FR); Antonino Sabetta (Mouans Sartoux, FR)
Assignee: SAP SE
G06F11/3636G06F11/3624G06F21/577
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,792,200
App. No.
15/057,812
Granted
Oct 17, 2017
Kind
B2
Abstract

Implementations are directed to enhancing assessment of one or more known vulnerabilities inside one or more third-party libraries used within an application program that interacts with the one or more third-party libraries. In some examples, actions include receiving a complete call graph that is provided by static source code analysis (SSCA) of the application program and any third-party libraries used by the application, receiving one or more stack traces that are provided based on dynamic source code analysis (DSCA) during execution of the application program, processing the complete call graph, the one or more stack traces, and vulnerable function data to provide one or more combined call graphs, the vulnerable function data identifying one or more vulnerable functions included in the one or more third-party libraries, each combined call graph being specific to a respective vulnerable function, and providing a graphical representation of each combined call graph.

Claims (47)

1. A computer-implemented method for enhancing assessment of one or more known vulnerabilities inside one or more third-party libraries used within an application program that interacts with the one or more third-party libraries, the method being executed using one or more processors and comprising:

receiving, by the one or more processors, a complete call graph that is provided by static source code analysis (SSCA) of the application program and any third-party libraries used by the application;

receiving, by the one or more processors, one or more stack traces that are provided based on dynamic source code analysis (DSCA) during execution of the application program;

processing, by the one or more processors, the complete call graph, the one or more stack traces, and vulnerable function data to provide one or more combined call graphs, the vulnerable function data identifying one or more vulnerable functions included in the one or more third-party libraries, each combined call graph being specific to a respective vulnerable function, the processing comprising:

determining a unique identifier assigned to a vulnerable function from the vulnerable function data;

providing a sub-call graph based on the unique identifier at least in part by searching from a node representing the vulnerable function backward within the complete call graph to identify one or more nodes representing functions of one or more of the third-party libraries and the application program to provide a sub-set of nodes from the complete call graph, the sub-set of nodes and relations between nodes defining the sub-call graph;

identifying a stack trace associated with the unique identifier; and

merging the stack trace with the sub-call graph to provide a combined call graph for the vulnerable function; and

providing, by the one or more processors, a graphical representation of each combined call graph.

2. The method of claim 1 , wherein each combined call graph comprises nodes and edges between nodes, at least one edge representing at least a portion of a stack trace and connecting a node representing a vulnerable function with a node representing a function.

3. The method of claim 2 , wherein at least one node of the combined call graph represents one of a function, a package, and a file.

4. The method of claim 1 , wherein each combined call graph comprises one or more annotations, at least one annotation indicating a name of one of a respective function and a respective package.

5. The method of claim 4 , wherein at least one annotation indicates a metric determined for one of a respective function and a respective package.

6. The method of claim 1 , further comprising:

providing at least one metric based on information from one or more of SSCA and DSCA; and

processing the metric based on a policy to selectively trigger an action provided in the policy.

7. A non-transitory computer-readable storage medium coupled to one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations for enhancing assessment of vulnerability of an application program based on call graphs, the operations comprising:

receiving a complete call graph that is provided by static source code analysis (SSCA) of the application program and any third-party libraries used by the application;

receiving one or more stack traces that are provided based on dynamic source code analysis (DSCA) during execution of the application program;

processing the complete call graph, the one or more stack traces, and vulnerable function data to provide one or more combined call graphs, the vulnerable function data identifying one or more vulnerable functions included in the one or more third-party libraries, each combined call graph being specific to a respective vulnerable function, the processing comprising:

determining a unique identifier assigned to a vulnerable function from the vulnerable function data;

providing a sub-call graph based on the unique identifier at least in part by searching from a node representing the vulnerable function backward within the complete call graph to identify one or more nodes representing functions of one or more of the third-party libraries and the application program to provide a sub-set of nodes from the complete call graph, the sub-set of nodes and relations between nodes defining the sub-call graph;

identifying a stack trace associated with the unique identifier; and merging the stack trace with the sub-call graph to provide a combined call graph for the vulnerable function; and

providing a graphical representation of each combined call graph.

8. The computer-readable storage medium of claim 7 , wherein each combined call graph comprises nodes and edges between nodes, at least one edge representing at least a portion of a stack trace and connecting a node representing a vulnerable function with a node representing a function.

9. The computer-readable storage medium of claim 8 , wherein at least one node of the combined call graph represents one of a function, a package, and a file.

10. The computer-readable storage medium of claim 7 , wherein each combined call graph comprises one or more annotations, at least one annotation indicating a name of one of a respective function and a respective package.

11. The computer-readable storage medium of claim 10 , wherein at least one annotation indicates a metric determined for one of a respective function and a respective package.

12. The computer-readable storage medium of claim 7 , wherein operations further comprise:

providing at least one metric based on information from one or more of SSCA and DSCA; and

processing the metric based on a policy to selectively trigger an action provided in the policy.

13. A system, comprising:

a computing device; and

a computer-readable storage device coupled to the computing device and having instructions stored thereon which, when executed by the computing device, cause the computing device to perform operations for enhancing assessment of vulnerability of an application program based on call graphs, the operations comprising:

receiving a complete call graph that is provided by static source code analysis (SSCA) of the application program and any third-party libraries used by the application;

receiving one or more stack traces that are provided based on dynamic source code analysis (DSCA) during execution of the application program;

processing the complete call graph, the one or more stack traces, and vulnerable function data to provide one or more combined call graphs, the vulnerable function data identifying one or more vulnerable functions included in the one or more third-party libraries, each combined call graph being specific to a respective vulnerable function, the processing comprising:

determining a unique identifier assigned to a vulnerable function from the vulnerable function data;

providing a sub-call graph based on the unique identifier at least in part by searching from a node representing the vulnerable function backward within the complete call graph to identify one or more nodes representing functions of one or more of the third-party libraries and the application program to provide a sub-set of nodes from the complete call graph, the sub-set of nodes and relations between nodes defining the subcall graph;

identifying a stack trace associated with the unique identifier; and merging the stack trace with the sub-call graph to provide a combined call graph for the vulnerable function; and

providing a graphical representation of each combined call graph.

14. The system of claim 13 , wherein each combined call graph comprises nodes and edges between nodes, at least one edge representing at least a portion of a stack trace and connecting a node representing a vulnerable function with a node representing a function.

15. The system of claim 14 , wherein at least one node of the combined call graph represents one of a function, a package, and a file.

16. The system of claim 13 , wherein each combined call graph comprises one or more annotations, at least one annotation indicating a name of one of a respective function and a respective package.

17. The system of claim 13 , wherein operations further comprise:

providing at least one metric based on information from one or more of SSCA and DSCA; and

processing the metric based on a policy to selectively trigger an action provided in the policy.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2016
From: PLATE, HENRIK; PONTA, SERENA; SABETTA, ANTONINO
To: SAP SE
Reel/Frame 037972/0068 →
Continuity (1)
Related Publication 20170255544A1 · Sep 7, 2017