IP Library Granted Patent US 12,602,490
Granted Patent B2
US 12,602,490 · App. 19/270,079 · Granted Apr 14, 2026

Automated back-propagation of a fix using a reproducible build, test, and validation process to create a patched artifact

Inventors: Henrik Plate (Valbonne, FR); Sebastian Cai (Palo Alto, CA); Dimitrios Styliadis (San Jose, CA); Alexandre Wilhelm (Kilauea, HI)
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,602,490
App. No.
19/270,079
Filed
Jul 15, 2025
Granted
Apr 14, 2026
Kind
B2
Art Unit
2497
USPC
726/25
Abstract

In some implementations, a computing device determines that project code in a development system references an older version of a component in a third-party library, determines that the older version of the component has a vulnerability, determines that a newer version of the component in the third-party library addresses the vulnerability, determines code changes associated with the fix commit, determines a subset of the code changes associated with the fix commit that addresses the vulnerability, creates a patch based on the subset of the code changes associated with the fix commit, applies the patch to the older version of the component to create a patched component, validates the patch, and based on successfully validating the patch, builds the patched component and uploads the patched component and information associated with the patch to a registry to enable a software developer to download the patched component.

Claims (112)

1 . A computer-implemented method comprising:

determining, by one or more processors, that project code in a development system references an older version of a component in a third-party library;

determining, by the one or more processors, that the older version of the component has a vulnerability;

determining, by the one or more processors, that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining, by the one or more processors, code changes associated with the fix commit;

determining, by the one or more processors, a subset of the code changes associated with the fix commit that addresses the vulnerability;

submitting, by the one or more processors through a communication network, a pull request to create a branch in a developer platform;

creating, in the branch by the one or more processors, a patch based on the subset of the code changes associated with the fix commit;

applying, in the branch by the one or more processors, the patch to the older version of the component to create a patched component;

validating, in the branch, the patch by the one or more processors; and

based on successfully validating the patch, uploading, by the one or more processors, the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

2 . The computer-implemented method of claim 1 , wherein validating the patch by the one or more processors comprises:

executing a set of test cases on a first build that includes the older version of the component to create first test results;

determining that the first test results indicate that the set of test cases exploited the vulnerability in the older version of the component;

executing the set of test cases on a second build that includes the patched component to create second test results; and

determining that the second test results indicate that the set of test cases did not exploit the vulnerability in the patched component.

3 . The computer-implemented method of claim 2 , further comprising:

initiating a process to create the first build using a build file comprising build rules and build options;

based on the process to create the first build failing, modifying the build file to create a modified build file; and

re-initiating the process to create the first build using the modified build file.

4 . The computer-implemented method of claim 1 , further comprising:

providing sufficient details in the information associated with the patch to enable the software developer to reproducibly build the patch.

5 . The computer-implemented method of claim 1 , further comprising:

performing change impact analysis on the patched component; and

determining, based on the change impact analysis, that the patched component does not introduce a breaking change.

6 . The computer-implemented method of claim 1 , wherein the information associated with the patch comprises:

information identifying the older version of the component in the third-party library;

information identifying the vulnerability;

information identifying files used;

information related to a build file;

information related to build options;

one or more configuration details; or

any combination thereof.

7 . 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 that project code in a development system references an older version of a component in a third-party library;

determining that the older version of the component has a vulnerability;

determining that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining code changes associated with the fix commit;

determining a subset of the code changes associated with the fix commit that addresses the vulnerability;

submitting, via a communication network, a pull request to create a branch in a developer platform;

creating, in the branch, a patch based on the subset of the code changes associated with the fix commit;

applying, in the branch, the patch to the older version of the component to create a patched component;

validating, in the branch, the patch; and

based on successfully validating the patch, building and uploading the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

8 . The server of claim 7 , wherein validating the patch comprises:

executing a set of test cases on a first build that includes the older version of the component to create first test results;

determining that the first test results indicate that the set of test cases exploited the vulnerability in the older version of the component;

executing the set of test cases on a second build that includes the patched component to create second test results; and

determining that the second test results indicate that the set of test cases did not exploit the vulnerability in the patched component.

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

initiating a process to create the first build using a build file comprising build rules and build options;

based on the process to create the first build failing, modifying the build file to create a modified build file; and

re-initiating the process to create the first build using the modified build file.

10 . The server of claim 7 , the operations further comprising:

providing sufficient details in the information associated with the patch to enable the software developer to reproducibly build the patch.

11 . The server of claim 7 , wherein validating the patch comprises:

executing a set of test cases on a first build that includes the older version of the component to create first test results;

determining that the first test results indicate that the set of test cases exploited the vulnerability in the older version of the component;

executing the set of test cases on a second build that includes the patched component to create second test results;

determining that the second test results indicate that the set of test cases exploited the vulnerability in the patched component;

modifying the patch to create a modified patch;

executing the set of test cases on a third build that includes the modified patch to create third test results; and

determining that the third test results indicate that the set of test cases did not exploit the vulnerability in the modified patch.

12 . The server of claim 7 , wherein the information associated with the patch comprises:

information identifying the older version of the component in the third-party library;

information identifying the vulnerability;

information identifying files used;

information related to a build file;

information related to build options;

one or more configuration details; or

any combination thereof.

13 . The server of claim 7 , the operations further comprising:

performing change impact analysis on the patched component;

determining, based on the change impact analysis, that the patch introduces a breaking change;

modifying the patch to create a modified patch; and

performing the change impact analysis using the modified patch.

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

determining that project code in a development system references an older version of a component in a third-party library;

determining that the older version of the component has a vulnerability;

determining that a newer version of the component in the third-party library has a fix commit that addresses the vulnerability;

determining code changes associated with the fix commit;

determining a subset of the code changes associated with the fix commit that addresses the vulnerability;

submitting, through a communication network, a pull request to create a branch in a developer platform;

creating, in the branch, a patch based on the subset of the code changes associated with the fix commit;

applying, in the branch, the patch to the older version of the component to create a patched component;

validating, in the branch, the patch; and

based on successfully validating the patch, building and uploading the patched component and information associated with the patch to a registry to enable a software developer to download and use the patched component.

15 . The one or more non-transitory computer readable media of claim 14 , wherein validating the patch comprises:

executing a set of test cases on a first build that includes the older version of the component to create first test results;

determining that the first test results indicate that the set of test cases exploited the vulnerability in the older version of the component;

executing the set of test cases on a second build that includes the patched component to create second test results; and

determining that the second test results indicate that the set of test cases did not exploit the vulnerability in the patched component.

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

initiating a process to create the first build using a build file comprising build rules and build options;

based on the process to create the first build failing, modifying the build file to create a modified build file; and

re-initiating the process to create the first build using the modified build file.

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

providing sufficient details in the information associated with the patch to enable the software developer to reproducibly build the patch.

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

performing change impact analysis on the patched component; and

determining, based on the change impact analysis, that the patched component does not introduce a breaking change.

19 . The one or more non-transitory computer readable media of claim 14 ,

wherein the information associated with the patch comprises:

information identifying the older version of the component in the third-party library;

information identifying the vulnerability;

information identifying files used;

information related to a build file;

information related to build options;

one or more configuration details; or

any combination thereof.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2025
From: PLATE, HENRIK; CAI, SEBASTIAN; STYLIADIS, DIMITRIOS; WILHELM, ALEXANDRE
To: ENDOR LABS INC
Reel/Frame 072584/0568 →
Continuity (9)
Continuation 19020659 · Jan 14, 2025
Continuation 18951189 · Nov 18, 2024
Continuation 18740976 · Jun 12, 2024
Provisional Application 63680135 · Aug 7, 2024
Provisional Application 63552793 · Feb 13, 2024
Provisional Application 63472561 · Jun 12, 2023
Provisional Application 63472562 · Jun 12, 2023
Provisional Application 63472557 · Jun 12, 2023
Related Publication 20250348596A1 · Nov 13, 2025
References Cited (54)
US 8627327B2 · Dunshea et al. · 2014 [cited by applicant]
US 9064134B1 · Agarwal · 2015 [cited by examiner]
US 10108975B1 · Benner et al. · 2018 [cited by applicant]
US 10917415B2 · Chen · 2021 [cited by applicant]
US 11204690B1 · Hoberman · 2021 [cited by examiner]
US 11544050B1 · Ankit · 2023 [cited by examiner]
US 11586436B1 · Jennings · 2023 [cited by applicant]
US 11930013B1 · Zhang et al. · 2024 [cited by applicant]
US 20020097253A1 · Charisius et al. · 2002 [cited by applicant]
US 20050055565A1 · Fournet et al. · 2005 [cited by applicant]
US 20060282479A1 · Johnson · 2006 [cited by examiner]
US 20060282480A1 · Johnson · 2006 [cited by examiner]
US 20060288054A1 · Johnson · 2006 [cited by examiner]
US 20060288055A1 · Johnson · 2006 [cited by examiner]
US 20110055153A1 · Hashimoto · 2011 [cited by examiner]
US 20130083030A1 · Fukuda et al. · 2013 [cited by applicant]
US 20140013315A1 · Genevski et al. · 2014 [cited by applicant]
US 20140201573A1 · Huang · 2014 [cited by examiner]
US 20140289697A1 · Wenda · 2014 [cited by examiner]
US 20150169320A1 · Ahmed et al. · 2015 [cited by applicant]
US 20160259636A1 · Plate · 2016 [cited by examiner]
US 20170206123A1 · Kirkpatrick · 2017 [cited by applicant]
US 20170286099A1 · Wilkinson · 2017 [cited by applicant]
US 20180018459A1 · Zhang et al. · 2018 [cited by applicant]
US 20180239898A1 · Haerterich · 2018 [cited by examiner]
US 20190272378A1 · Hirvimies · 2019 [cited by examiner]
US 20200053175A1 · Bodman et al. · 2020 [cited by applicant]
US 20200073781A1 · Falko · 2020 [cited by applicant]
US 20210149667A1 · Watson et al. · 2021 [cited by applicant]
US 20210173621A1 · Fender et al. · 2021 [cited by applicant]
US 20210182391A1 · Plate · 2021 [cited by examiner]
US 20210281597A1 · Guiroux et al. · 2021 [cited by applicant]
US 20220222351A1 · Levin et al. · 2022 [cited by applicant]
US 20220383995A1 · O'Rourke et al. · 2022 [cited by applicant]
US 20230195901A1 · Allen · 2023 [cited by applicant]
US 20230305827A1 · Dai et al. · 2023 [cited by applicant]
US 20240169069A1 · Panicker · 2024 [cited by examiner]
US 20240241963A1 · Wareus · 2024 [cited by examiner]
US 20240370570A1 · Betthauser et al. · 2024 [cited by applicant]
US 20240411881A1 · Aday et al. · 2024 [cited by applicant]
CA 2900312A1 · 2014 [cited by applicant]
CN 104321782A · 2015 [cited by applicant]
CN 112083945A · 2020 [cited by applicant]
CN 113377431A · 2021 [cited by examiner]
CN 116842522A · 2023 [cited by applicant]
CN 117556432A · 2024 [cited by applicant]
CN 118467790A · 2024 [cited by applicant]
JP 2011053966A · 2011 [cited by applicant]
Stephan Neuhaus, Thomas Zimmermann, Christian Holler and Andreas Zeller; (Predicting Vulnerable Software Components); p. 12; Published in Oct. 29-Nov. 2, 2007. [cited by examiner]
Barthelemy Dagenais et al., SemDiff: Analysis and Recommendation Support for API Evolution, 2009 [retrieved Aug. 8, 2025], 2009 IEEE 31st International Conference on Software Engineering, pp. 599-602, downloaded from :h… [cited by applicant]
Istvan-Attila Csaszar and Radu Razvan Slavescu (Interactive call graph generation for software projects); pp. 8; Published on IEEE in Nov. 26 (Year: 2020). [cited by applicant]
Mehdi Keshani (Scalable Call Graph Constructor for Maven); pp. 3; Published in Mar. 28, 2021. [cited by applicant]
Mehdi Keshani, Georgios Gousios and Sebastian Proksch (Frankenstein: fast and lightweight call graph generation for softwarebuilds); pp. 47; Published in Nov. 16, 2023. [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 applicant]