IP Library Granted Patent US 12,393,700
Granted Patent B1
US 12,393,700 · App. 19/069,793 · Granted Aug 19, 2025

Identifying an update of a code dependency to use based on risk and benefit trade-offs

Inventors: Georgios Apostolopoulos (San Jose, CA); Philip Hamer (Palo Alto, CA)
Assignee: Endor Labs Inc
G06F21/577G06F21/6218G06F21/552G06F21/565G06F21/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,393,700
App. No.
19/069,793
Granted
Aug 19, 2025
Kind
B1
Abstract

A computer-implemented method, a non-transitory computer-readable media, and a server for identifying an update of a code dependency to use based on risk and benefit trade-offs are described. In some implementations, a package is selected from a database and a set of dependencies associated with the package are determined. A set of upgrade candidates for a particular dependency is determined. For an upgrade candidate, issues associated with upgrading the package to use the upgrade candidate are determined, a state of a dependency graph associated with upgrading are determined, diamond dependencies in the dependency graph are determined, a number of vulnerabilities and a severity of the vulnerabilities addressed by upgrading to the upgrade candidate are determined, and a risk-benefit score associated with each upgrade candidate is determined. The upgrade candidates are prioritized based on the associated risk-benefit score to create prioritized upgrade candidates that are provided to a software developer.

Claims (91)

1. A computer-implemented method executed by one or more processors, the method comprising:

determining a set of dependencies associated with a package in a software project stored in a database, wherein individual dependencies of the set of dependencies are located in one or more of network accessible third-party libraries that include at least one open-source library;

determining a set of upgrade candidates for a particular dependency in the set of dependencies;

based on determining that a number of upgrade candidates in the set of upgrade candidates is greater than a predetermined threshold, selecting a subset of the upgrade candidates by selecting a predetermined number of versions of the upgrade candidates;

selecting an upgrade candidate in the subset of the upgrade candidates;

determining issues associated with upgrading the package to use the upgrade candidate;

emulating a state of a dependency graph associated with upgrading the package to use the upgrade candidate;

determining diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

determining a number of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a severity of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a risk-benefit score associated with each upgrade candidate in the subset of the upgrade candidates based at least in part on:

the issues associated with upgrading the package to use the upgrade candidate;

the diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

the number of vulnerabilities addressed by upgrading the package to use the upgrade candidate; and

the severity of the vulnerabilities addressed by upgrading the package to use the upgrade candidate;

prioritizing each of the upgrade candidates in the subset of the upgrade candidates based on the associated risk-benefit score to create a prioritized subset of the upgrade candidates; and

providing, on a display device, the prioritized subset of the upgrade candidates to a developer associated with the package.

2. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a number of breaking changes associated with upgrading the package to use the upgrade candidate.

3. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining an activity score indicating an amount of development activity associated with a third-party package in which the upgrade candidate is included.

4. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a security score indicating a number of security-related issues associated with a third-party package in which the upgrade candidate is included.

5. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a popularity score indicating an amount of usage received by a particular third-party package based at least in part on:

tracking source code management system metrics; and how many other packages have a dependency on the particular third-party package.

6. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a code quality score indicating how well a particular third-party package complies with best practices for code development.

7. The computer-implemented method of claim 1 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a number of licenses associated with the upgrade candidate.

8. A server comprising:

one or more processors; and

one or more non-transitory computer readable media storing instructions executable by the one or more processors to perform operations comprising:

determining a set of dependencies associated with a package in a software project stored in a database, wherein individual dependencies of the set of dependencies are located in one or more of network accessible third-party libraries that include at least one open-source library;

determining a set of upgrade candidates for a particular dependency in the set of dependencies;

based on determining that a number of upgrade candidates in the set of upgrade candidates is greater than a predetermined threshold, selecting a subset of the upgrade candidates by selecting a predetermined number of versions of the upgrade candidates;

selecting an upgrade candidate in the subset of the upgrade candidates;

determining issues associated with upgrading the package to use the upgrade candidate;

emulating a state of a dependency graph associated with upgrading the package to use the upgrade candidate;

determining diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

determining a number of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a severity of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a risk-benefit score associated with each upgrade candidate in the subset of the upgrade candidates based at least in part on:

the issues associated with upgrading the package to use the upgrade candidate;

the diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

the number of vulnerabilities addressed by upgrading the package to use the upgrade candidate; and

the severity of the vulnerabilities addressed by upgrading the package to use the upgrade candidate;

prioritizing each of the upgrade candidates in the subset of the upgrade candidates based on the associated risk-benefit score to create a prioritized subset of the upgrade candidates; and

providing, on a display device, the prioritized subset of the upgrade candidates to a developer associated with the package.

9. The server of claim 8 , the operations further comprising:

determining a recommended global upgrade candidate for individual dependencies in a global set of dependencies across multiple projects, wherein each individual projects of the multiple projects includes one or more packages; and

determining a set of global upgrade candidates for the multiple projects.

10. The server of claim 9 , wherein determining the set of global upgrade candidates for the multiple projects comprises:

performing a global computation to identify the recommended global upgrade candidate for the individual dependencies in the global set of dependencies across the multiple projects.

11. The server of claim 9 , wherein determining the set of global upgrade candidates for the multiple projects comprises:

determining the set of global upgrade candidates having a lowest cumulative risk-benefit score.

12. The server of claim 8 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises any combination of one or more of:

determining a number of breaking changes associated with upgrading the package to use the upgrade candidate; and/or

determining an activity score indicating an amount of development activity associated with a third-party package in which the upgrade candidate is included; and/or

determining a security score indicating a number of security-related issues associated with the third-party package in which the upgrade candidate is included; and/or

determining a popularity score indicating an amount of usage received by a particular third-party package based at least in part on:

tracking source code management system metrics; and how many other packages have a dependency on the particular third-party package.

13. The server of claim 8 , wherein determining the set of dependencies associated with the package comprises: ignoring test dependencies.

14. The server of claim 8 , wherein determining the set of dependencies associated with the package comprises: ignoring unused dependencies.

15. One or more non-transitory computer readable media capable of storing instructions executable by one or more processors to perform operations comprising:

determining a set of dependencies associated with a package in a software project stored on a database, wherein individual dependencies of the set of dependencies are located in one or more of network accessible third-party libraries that include at least one open-source library;

determining a set of upgrade candidates for a particular dependency in the set of dependencies;

based on determining that a number of upgrade candidates in the set of upgrade candidates is greater than a predetermined threshold, selecting a subset of the upgrade candidates by selecting a predetermined number of versions of the upgrade candidates;

selecting an upgrade candidate in the subset of the upgrade candidates;

determining issues associated with upgrading the package to use the upgrade candidate;

emulating a state of a dependency graph associated with upgrading the package to use the upgrade candidate;

determining diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

determining a number of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a severity of vulnerabilities addressed by upgrading the package to use the upgrade candidate;

determining a risk-benefit score associated with each upgrade candidate in the subset of the upgrade candidates based at least in part on:

the issues associated with upgrading the package to use the upgrade candidate;

the diamond dependencies in the dependency graph associated with upgrading the package to use the upgrade candidate;

the number of vulnerabilities addressed by upgrading the package to use the upgrade candidate; and

the severity of the vulnerabilities addressed by upgrading the package to use the upgrade candidate;

prioritizing each of the upgrade candidates in the subset of the upgrade candidates based on the associated risk-benefit score to create a prioritized subset of the upgrade candidates; and

providing, on a display device, the prioritized subset of the upgrade candidates to a developer associated with the package.

16. The one or more non-transitory computer readable media of claim 15 , the operations further comprising:

determining a recommended upgrade candidate for individual dependencies in a set of project dependencies across multiple projects, wherein individual projects of the multiple projects include one or more packages.

17. The one or more non-transitory computer readable media of claim 16 , the operations further comprising:

determining a set of global upgrade candidates for the multiple projects in the set of project dependencies.

18. The one or more non-transitory computer readable media of claim 17 , wherein determining the set of global upgrade candidates for the multiple projects comprises:

determining the set of global upgrade candidates with a lowest cumulative risk-benefit score.

19. The one or more non-transitory computer readable media of claim 16 , the operations further comprising:

performing a global computation to identify a recommended global upgrade candidate for the individual dependencies in the set of project dependencies across the multiple projects.

20. The one or more non-transitory computer readable media of claim 15 , wherein determining the issues associated with upgrading the package to use the upgrade candidate comprises:

determining a code quality score indicating how well a particular third-party package complies with best practices for code development.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2025
From: APOSTOLOPOULOS, GEORGIOS; HAMER, PHILIP
To: ENDOR LABS INC
Reel/Frame 070397/0202 →
Continuity (4)
Continuation 18951189 · Nov 18, 2024
Continuation 18740976 · Jun 12, 2024
Provisional Application 63680135 · Aug 7, 2024
Provisional Application 63552793 · Feb 13, 2024
References Cited (54)
US 7359865B1 · Connor et al. · 2008 [cited by applicant]
US 9064134B1 · Agarwal · 2015 [cited by applicant]
US 9880832B2 · Plate et al. · 2018 [cited by applicant]
US 10108975B1 · Benner · 2018 [cited by examiner]
US 10437702B2 · Kalech et al. · 2019 [cited by applicant]
US 10754951B1 · Tang et al. · 2020 [cited by applicant]
US 11204690B1 · Hoberman et al. · 2021 [cited by applicant]
US 11586436B1 · Jennings · 2023 [cited by examiner]
US 12164647B2 · Allen · 2024 [cited by applicant]
US 20080052137A1 · Ziade et al. · 2008 [cited by applicant]
US 20080201705A1 · Wookey · 2008 [cited by examiner]
US 20100185686A1 · Weigert et al. · 2010 [cited by applicant]
US 20100241469A1 · Weigert · 2010 [cited by applicant]
US 20100242028A1 · Weigert · 2010 [cited by applicant]
US 20110246982A1 · Wookey · 2011 [cited by applicant]
US 20130083030A1 · Fukuda · 2013 [cited by examiner]
US 20160099963A1 · Mahaffey et al. · 2016 [cited by applicant]
US 20180197123A1 · Parimelazhagan et al. · 2018 [cited by applicant]
US 20180239898A1 · Haerterich et al. · 2018 [cited by applicant]
US 20180373507A1 · Mizrahi et al. · 2018 [cited by applicant]
US 20190138717A1 · Ben-Shalom et al. · 2019 [cited by applicant]
US 20200073781A1 · Falko · 2020 [cited by examiner]
US 20200175174A1 · Bakalli et al. · 2020 [cited by applicant]
US 20210056209A1 · Fox et al. · 2021 [cited by applicant]
US 20210075814A1 · Bulut · 2021 [cited by examiner]
US 20210149667A1 · Watson · 2021 [cited by examiner]
US 20210173621A1 · Fender · 2021 [cited by examiner]
US 20210182391A1 · Plate · 2021 [cited by applicant]
US 20210360083A1 · Duggal · 2021 [cited by examiner]
US 20220222351A1 · Levin · 2022 [cited by examiner]
US 20220383995A1 · O'Rourke · 2022 [cited by examiner]
US 20230004653A1 · Shiraishi et al. · 2023 [cited by applicant]
US 20230061121A1 · Tosevska · 2023 [cited by examiner]
US 20230195901A1 · Allen · 2023 [cited by examiner]
US 20230305827A1 · Dai · 2023 [cited by examiner]
US 20240241963A1 · Wareus et al. · 2024 [cited by applicant]
CN 111190641A · 2020 [cited by examiner]
CN 112083945A · 2020 [cited by examiner]
CN 112699377A · 2021 [cited by applicant]
CN 117235608A · 2023 [cited by applicant]
CN 117235608B · 2023 [cited by applicant]
CN 117556432A · 2024 [cited by examiner]
CN 117667102A · 2024 [cited by applicant]
CN 117668327A · 2024 [cited by applicant]
JP 2011053966A · 2011 [cited by examiner]
WO 2022222625A1 · 2022 [cited by applicant]
Riivo Kikas, Georgios Gousios, Marlon Dumas, and Dietmar Pfahl (Structure and Evolution of Package Dependency Networks) pp. 11; Published on IEEE Jul. 3, 2017. [cited by examiner]
V. Benjamin Livshits and Monica S. Lam (Finding Security Vulnerabilities in Java Applications with Static Analysis) pp. 16; Published in (Year: 2005). [cited by examiner]
Antonino Sabetta, Michele Bezzi, A Practical Approach to the Automatic Classification of Security-Relevant Commits, Nov. 11, 2018, 7 pages. [cited by applicant]
Daan Hommersom, Antonino Sabetta, Automated Mapping of Vulnerability Advisories onto their Fix Commits in Open Source Repositories, Mar. 24, 2021, 28 pages. [cited by applicant]
Mehdi et al., “Frankenstein: fast and lightweight call graph generation for software builds”, Aug. 30, 2023, 47 pages. [cited by applicant]
Mehdi Keshani, “Scalable Call Graph Constructor for Maven”, Mar. 28, 2021, 3 pages. [cited by applicant]
Stephan Neuhaus, Thomas Zimmermann, Christian Holler and Andreas Zeller (Predicting Vulnerable Software Components); pp. 12; Published on Oct. 29-Nov. 2, 2007 12 pages. [cited by applicant]
Wenlin Xu, Tong Li, Jinsong Wang, and Yahui Tang (Detecting vulnerable software functions via text and dependency features); pp. 11; Published online: Jan. 7, 2023 11 pages. [cited by applicant]
Cited By (1)
US 12,547,731