IP Library Granted Patent US 12,406,015
Granted Patent B2
US 12,406,015 · App. 17/667,473 · Granted Sep 2, 2025

Correlating open source component matching results using different scanning techniques

Inventors: Douglas Albert Brown (Danvers, MA); Damon Alexander Weinstein (Arlington, MA); Jagat Prakashchandra Parekh (Andover, MA)
Assignee: Black Duck Software, Inc.
G06F16/9538G06F8/71G06F16/951G06F16/954
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,406,015
App. No.
17/667,473
Granted
Sep 2, 2025
Kind
B2
Abstract

A processing device receives a request to analyze the file hierarchy comprising the plurality of components and sends respective commands to a plurality of matching services. The processing device further receives respective individual results from the plurality of matching services, each of the respective individual results indicating a respective subset of the plurality of components, and correlates the respective individual results using external identifiers associated with the components of each respective subset to generate a unified set of results.

Claims (46)

1. A method comprising:

receiving, by a processing device, a request to analyze a file hierarchy comprising a plurality of components;

sending, by the processing device, respective commands to a plurality of matching services;

receiving, by the processing device, respective individual results from the plurality of matching services, each of the respective individual results indicating a respective subset of the plurality of components, wherein each of the plurality of matching services is to identify the respective subset of the plurality of components using a different respective scanning technique of a plurality of scanning techniques, the plurality of scanning techniques comprising (i) signature matching where cryptographic hashes are created for the plurality of components and compared to cryptographic hashes of known components in the respective subset, (ii) package manager matching using metadata stored by a host system package manager and indicating the respective subset of the plurality of components, (iii) binary matching using compiled binaries of the plurality of components to extract identifying information of the respective subset, and (iv) snippet matching where cryptographic hashes are created for snippets of characters in source code of the plurality of components and compared to cryptographic hashes of known components in the respective subset; and

correlating, by the processing device, the respective individual results using external identifiers associated with the components of each respective subset to generate a unified set of results, wherein the external identifiers each represent a respective individual file and comprise a plurality of fields arranged in a defined hierarchical format to uniquely identify the individual file, wherein each field of the plurality of fields comprises a broader categorical descriptor of the individual file than a successive field in the external identifier.

2. The method of claim 1 , further comprising:

providing, by the processing device, the unified set of results to a requestor that provided the request, wherein providing the unified set of results to the requestor comprises causing the unified set of results to be displayed in a user interface using a consistent normalized descriptor.

3. The method of claim 1 , wherein correlating the respective individual results using the external identifiers comprises removing duplicate entries from the respective individual results and disambiguating version discrepancies in the respective individual results.

4. The method of claim 1 , wherein correlating the respective individual results using the external identifiers comprises:

determining that multiple versions of one component are represented in the respective individual results; and

determining whether a full correlation between at least two external identifiers of the multiple versions is present.

5. The method of claim 4 , wherein correlating the respective individual results using the external identifiers further comprises:

responsive to the full correlation between the at least two external identifiers of the multiple versions being present, identifying a first version of the multiple versions to be included in the unified set of results.

6. The method of claim 5 , wherein correlating the respective individual results using the external identifiers further comprises:

responsive to the full correlation between the at least two external identifiers of the multiple versions not being present, identifying a second version of the multiple versions having a highest confidence score to be included in the unified set of results.

7. A system comprising:

a repository configured to store a file hierarchy comprising a plurality of components; and

a processing device, coupled to the repository and configured to perform operations comprising:

receiving a request to analyze the file hierarchy comprising the plurality of components;

sending respective commands to a plurality of matching services;

receiving respective individual results from the plurality of matching services, each of the respective individual results indicating a respective subset of the plurality of components, wherein each of the plurality of matching services is to identify the respective subset of the plurality of components using a different respective scanning technique of a plurality of scanning techniques, the plurality of scanning techniques comprising (i) signature matching where cryptographic hashes are created for the plurality of components and compared to cryptographic hashes of known components in the respective subset, (ii) package manager matching using metadata stored by a host system package manager and indicating the respective subset of the plurality of components, (iii) binary matching using compiled binaries of the plurality of components to extract identifying information of the respective subset, and (iv) snippet matching where cryptographic hashes are created for snippets of characters in source code of the plurality of components and compared to cryptographic hashes of known components in the respective subset; and

correlating the respective individual results using external identifiers associated with the components of each respective subset to generate a unified set of results, wherein the external identifiers each represent a respective individual file and comprise a plurality of fields arranged in a defined hierarchical format to uniquely identify the individual file, wherein each field of the plurality of fields comprises a broader categorical descriptor of the individual file than a successive field in the external identifier.

8. The system of claim 7 , wherein the processing device is configured to perform operations further comprising:

providing the unified set of results to a requestor that provided the request, wherein providing the unified set of results to the requestor comprises causing the unified set of results to be displayed in a user interface using a consistent normalized descriptor.

9. The system of claim 7 , wherein correlating the respective individual results using the external identifiers comprises removing duplicate entries from the respective individual results and disambiguating version discrepancies in the respective individual results, and wherein the plurality of fields in the external identifier comprises a project name field, a version identifier field, a revision identifier field, and an architecture identifier field.

10. The system of claim 7 , wherein correlating the respective individual results using the external identifiers comprises:

determining that multiple versions of one component are represented in the respective individual results; and

determining whether a full correlation between at least two external identifiers of the multiple versions is present.

11. The system of claim 10 , wherein correlating the respective individual results using the external identifiers further comprises:

responsive to the full correlation between the at least two external identifiers of the multiple versions being present, identifying a first version of the multiple versions to be included in the unified set of results.

12. The system of claim 11 , wherein correlating the respective individual results using the external identifiers further comprises:

responsive to the full correlation between the at least two external identifiers of the multiple versions not being present, identifying a second version of the multiple versions having a highest confidence score to be included in the unified set of results.

13. A non-transitory computer-readable storage medium storing instructions which, when executed, cause a processing device to perform operations comprising:

receiving, by the processing device, respective individual results from a plurality of matching services, each of the respective individual results indicating a respective subset of a plurality of components in a file hierarchy, wherein each of the plurality of matching services is to identify the respective subset of the plurality of components using a different respective scanning technique of a plurality of scanning techniques, the plurality of scanning techniques comprising (i) signature matching where cryptographic hashes are created for the plurality of components and compared to cryptographic hashes of known components in the respective subset, (ii) package manager matching using metadata stored by a host system package manager and indicating the respective subset of the plurality of components, (iii) binary matching using compiled binaries of the plurality of components to extract identifying information of the respective subset, and (iv) snippet matching where cryptographic hashes are created for snippets of characters in source code of the plurality of components and compared to cryptographic hashes of known components in the respective subset;

determining whether multiple versions of one component are represented in the respective individual results;

responsive to multiple versions of one component being represented, determining whether a full correlation between at least two external identifiers of the multiple versions is present; and

responsive to the full correlation between the at least two external identifiers of the multiple versions being present, identifying a first version of the multiple versions to be included in a unified set of results, wherein the external identifiers each represent a respective individual file and comprise a plurality of fields arranged in a defined hierarchical format to uniquely identify the individual file, wherein each field of the plurality of fields comprises a broader categorical descriptor of the individual file than a successive field in the external identifier.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions cause the processing device to perform operations further comprising:

removing duplicate entries from the respective individual results and disambiguating version discrepancies in the respective individual results.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions cause the processing device to perform operations further comprising:

responsive to the full correlation between the at least two external identifiers of the multiple versions not being present, identifying a second version of the multiple versions having a highest confidence score to be included in the unified set of results.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions cause the processing device to perform operations further comprising:

responsive to multiple versions of one component not being represented, including a single version of the one component in the unified set of results.

17. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions cause the processing device to perform operations further comprising:

receiving a request to analyze the file hierarchy comprising the plurality of components; and

sending respective commands to a plurality of matching services.

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 Aug 9, 2024
From: SOFTWARE INTEGRITY GROUP, INC.
To: BLACK DUCK SOFTWARE, INC.
Reel/Frame 068535/0318 →
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 Feb 9, 2022
From: BROWN, DOUGLAS ALBERT; WEINSTEIN, DAMON ALEXANDER; PAREKH, JAGAT PRAKASHCHANDRA
To: SYNOPSYS, INC.
Reel/Frame 058941/0436 →
Continuity (1)
Related Publication 20230252100A1 · Aug 10, 2023
References Cited (11)
US 9324070B1 · Bekmann · 2016 [cited by examiner]
US 10693900B2 · Zadeh · 2020 [cited by examiner]
US 10997126B1 · Bent · 2021 [cited by examiner]
US 20120078845A1 · Kasbekar · 2012 [cited by examiner]
US 20120110515A1 · Abramoff · 2012 [cited by examiner]
US 20150234848A1 · Weinstein · 2015 [cited by examiner]
US 20150234885A1 · Weinstein · 2015 [cited by examiner]
US 20150281355A1 · Maturana · 2015 [cited by examiner]
US 20180089278A1 · Bhattacharjee · 2018 [cited by examiner]
US 20200358617A1 · Baierlein · 2020 [cited by examiner]
US 20210174188A1 · Hewitt · 2021 [cited by examiner]
Cited By (1)
US 12,706,004