IP Library › Granted Patent US 12,164,647
Granted Patent B2
US 12,164,647 · App. 17/560,133 · Granted Dec 10, 2024

Model-based upgrade recommendations using software dependencies

Inventor: Nicholas John Allen (Westlake, AU)
Assignee: Oracle International Corporation
G06F21/577G06F8/433G06F8/65G06F8/71G06F21/70
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 12,164,647
App. No.
17/560,133
Granted
Dec 10, 2024
Kind
B2
Abstract

A method may include obtaining, for an application, application dependency specifications, identifying vulnerable components using the application dependency specifications and a list of known vulnerable components, selecting, for a vulnerable component, candidate dependency specifications each specifying a version ID for a component, selecting, for a candidate dependency specification, an upgraded version ID for a component, verifying, using an application dependency graph generated from the application dependency specifications, that upgrading the candidate dependency specification to the upgraded version ID removes a dependency on the vulnerable component, and recommending, for the application, an upgrade solution including upgrading the candidate dependency specification to the upgraded version ID.

Claims (93)

1. A method comprising:

obtaining, for an application, a plurality of application dependency specifications;

identifying, using the plurality of application dependency specifications and a list of known vulnerable components, a plurality of vulnerable components;

selecting, for a first vulnerable component of the plurality of vulnerable components, a first plurality of candidate dependency specifications each specifying a version ID for a component;

selecting, for a first candidate dependency specification of the first plurality of candidate dependency specifications, a first upgraded version ID for a first component;

verifying, using an application dependency graph generated from the plurality of application dependency specifications, that upgrading the first candidate dependency specification to the first upgraded version ID removes a first dependency on the first vulnerable component; and

recommending, for the application, an upgrade solution comprising upgrading the first candidate dependency specification to the first upgraded version ID.

2. The method of claim 1 , wherein selecting the first upgraded version ID for the first candidate dependency specification comprises:

obtaining a series of version IDs subsequent to a current version ID specified in the first candidate dependency specification;

generating a series of candidate version dependency graphs corresponding to the series of version IDs; and

determining, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a first subsequent version ID of the series of version IDs removes the first dependency on the first vulnerable component.

3. The method of claim 2 , further comprising:

determining, using the application dependency graph, that upgrading the first candidate dependency specification to the first subsequent version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components; and

determining, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a second subsequent version ID of the series of version IDs removes the second dependency on the second vulnerable component.

4. The method of claim 1 , further comprising:

selecting, for a second vulnerable component of the plurality of vulnerable components, a second plurality of candidate dependency specifications;

selecting a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications; and

verifying, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes a second dependency on the second vulnerable component.

5. The method of claim 1 , further comprising:

determining, using the application dependency graph, that upgrading the first candidate dependency specification to the first upgraded version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components;

selecting, for the second vulnerable component, a second plurality of candidate dependency specifications;

selecting a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications; and

verifying, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes the second dependency on the second vulnerable component.

6. The method of claim 5 , wherein the upgrade solution further comprises upgrading the second candidate dependency specification to the second upgraded version ID, the method further comprising:

generating an output file comprising the first upgraded version ID for the first candidate dependency specification and the second upgraded version ID for the second candidate dependency specification.

7. The method of claim 1 , further comprising:

determining, using the application dependency graph, that upgrading the first candidate dependency specification to the first upgraded version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components;

selecting, for the second vulnerable component, a second plurality of candidate dependency specifications;

failing, using the application dependency graph, to identify a candidate dependency specification in the second plurality of candidate dependency specifications that removes the second dependency on the second vulnerable component; and

issuing an alert indicating that the application comprises a dependency on the second vulnerable component.

8. A system comprising:

a repository configured to store:

a plurality of application dependency specifications, and

a list of known vulnerable components;

a computer processor; and

an upgrade manager executing on the computer processor and configured to:

obtain, for an application, the plurality of application dependency specifications,

identify, using the plurality of application dependency specifications and the list of known vulnerable components, a plurality of vulnerable components,

select, for a first vulnerable component of the plurality of vulnerable components, a first plurality of candidate dependency specifications each specifying a version ID for a component,

select, for a first candidate dependency specification of the first plurality of candidate dependency specifications, a first upgraded version ID for a first component,

verify, using an application dependency graph generated from the plurality of application dependency specifications, that upgrading the first candidate dependency specification to the first upgraded version ID removes a first dependency on the first vulnerable component, and

recommend, for the application, an upgrade solution comprising upgrading the first candidate dependency specification to the first upgraded version ID.

9. The system of claim 8 , wherein the upgrade manager is further configured to select the first upgraded version ID for the first candidate dependency specification by:

obtaining a series of version IDs subsequent to a current version ID specified in the first candidate dependency specification,

generating a series of candidate version dependency graphs corresponding to the series of version IDs, and

determining, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a first subsequent version ID of the series of version IDs removes the first dependency on the first vulnerable component.

10. The system of claim 9 , wherein the upgrade manager is further configured to:

determine, using the application dependency graph, that upgrading the first candidate dependency specification to the first subsequent version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components, and

determine, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a second subsequent version ID of the series of version IDs removes the second dependency on the second vulnerable component.

11. The system of claim 8 , wherein the upgrade manager is further configured to:

select, for a second vulnerable component of the plurality of vulnerable components, a second plurality of candidate dependency specifications,

select a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications, and

verify, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes a second dependency on the second vulnerable component.

12. The system of claim 8 , wherein the upgrade manager is further configured to:

determine, using the application dependency graph, that upgrading the first candidate dependency specification to the first upgraded version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components,

select, for the second vulnerable component, a second plurality of candidate dependency specifications,

select a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications, and

verify, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes the second dependency on the second vulnerable component.

13. The system of claim 12 , wherein the upgrade solution further comprises upgrading the second candidate dependency specification to the second upgraded version ID, and wherein the upgrade manager is further configured to:

generate an output file comprising the first upgraded version ID for the first candidate dependency specification and the second upgraded version ID for the second candidate dependency specification.

14. The system of claim 8 , wherein the upgrade manager is further configured to:

determine, using the application dependency graph, that upgrading the first candidate dependency specification to the first upgraded version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components,

select, for the second vulnerable component, a second plurality of candidate dependency specifications,

fail, using the application dependency graph, to identify a candidate dependency specification in the second plurality of candidate dependency specifications that removes the second dependency on the second vulnerable component, and

issue an alert indicating that the application comprises a dependency on the second vulnerable component.

15. A method, comprising:

obtaining, for an application, a plurality of application dependency specifications;

sending the plurality of application dependency specifications to an upgrade manager configured to perform:

identifying, using the plurality of application dependency specifications and a list of known vulnerable components, a plurality of vulnerable components,

selecting, for a first vulnerable component of the plurality of vulnerable components, a first plurality of candidate dependency specifications each specifying a version ID for a component,

selecting, for a first candidate dependency specification of the first plurality of candidate dependency specifications, a first upgraded version ID for a first component,

verifying, using an application dependency graph generated from the plurality of application dependency specifications, that upgrading the first candidate dependency specification to the first upgraded version ID removes a first dependency on the first vulnerable component,

recommending, for the application, an upgrade solution comprising upgrading the first candidate dependency specification to the first upgraded version ID, and

transmitting the upgrade solution; and

receiving, from the upgrade manager, the upgrade solution.

16. The method of claim 15 , wherein selecting the first upgraded version ID for the first candidate dependency specification comprises:

obtaining a series of version IDs subsequent to a current version ID specified in the first candidate dependency specification;

generating a series of candidate version dependency graphs corresponding to the series of version IDs; and

determining, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a first subsequent version ID of the series of version IDs removes the first dependency on the first vulnerable component.

17. The method of claim 16 , wherein the upgrade manager is further configured to perform:

determining, using the application dependency graph, that upgrading the first candidate dependency specification to the first subsequent version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components; and

determining, using the series of candidate version dependency graphs, that upgrading the first candidate dependency specification to a second subsequent version ID of the series of version IDs removes the second dependency on the second vulnerable component.

18. The method of claim 15 , wherein the upgrade manager is further configured to perform:

selecting, for a second vulnerable component of the plurality of vulnerable components, a second plurality of candidate dependency specifications;

selecting a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications; and

verifying, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes a second dependency on the second vulnerable component.

19. The method of claim 15 , wherein the upgrade manager is further configured to perform:

determining, using the application dependency graph, that upgrading the first candidate dependency specification to the first upgraded version ID introduces a second dependency on a second vulnerable component of the plurality of vulnerable components;

selecting, for the second vulnerable component, a second plurality of candidate dependency specifications;

selecting a second upgraded version ID of a second candidate dependency specification of the second plurality of candidate dependency specifications; and

verifying, using the application dependency graph, that upgrading the second candidate dependency specification to the second upgraded version ID removes the second dependency on the second vulnerable component.

20. The method of claim 19 , wherein the upgrade solution further comprises upgrading the second candidate dependency specification to the second upgraded version ID, and wherein the upgrade manager is further configured to perform:

generating an output file comprising the first upgraded version ID for the first candidate dependency specification and the second upgraded version ID for the second candidate dependency specification.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2024
From: ALLEN, NICHOLAS JOHN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 068941/0390 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2023
From: ALLEN, NICHOLAS JOHN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 064190/0427 →
Continuity (1)
Related Publication 20230195901A1 · Jun 22, 2023
Cited By (3)
US 12,361,141 US 12,361,142 US 12,393,700