IP Library › Granted Patent US 12,333,020
Granted Patent B2
US 12,333,020 · App. 17/745,689 · Granted Jun 17, 2025

Systems and processes for creating software bill of materials for large distributed builds

Inventors: Frank Joseph Bussell (Issaquah, WA); Henry James Lyons (Seattle, WA); Nicholas Allan Schwerzler (Sammamish, WA); Sencer Nuri Yeralan (Seattle, WA); Dale Russel Rolf (Renton, WA); Minh Trong Tran (Bellevue, WA); David John Janson (Kirkland, WA); Thomas George Yaryan (Seattle, WA); Ian James McCarty (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F21/577G06F2221/033
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,333,020
App. No.
17/745,689
Granted
Jun 17, 2025
Kind
B2
Abstract

Systems are provided for generating, modifying and using SBOMs for facilitating risk assessment and threat mitigation for corresponding programs, and particularly for large programming builds. The creation and modification of the SBOMs includes processes for omitting declarations referenced in chunk SBOMs of program chunks incorporated into a final programming build associated with a build SBOM, but which are not actually utilized by the final programming build, as well as processes for adding new declarations for code segments that are not declared in the related chunk SBOMs, even though the code segments are utilized by the final programming build. Systems are also configured to use SBOMs in combination with configuration restriction records to assess and resolve threat events in a manner that can prevent unnecessary remedial actions for threat events that appear to be relevant to one or more files or dependencies incorporated into a program.

Claims (40)

1. A method for creating an SBOM (software bill of materials) for a programming build, wherein the programming build is composed of a plurality of program chunks, each of the program chunks being composed of a unique set of files that are stored within a plurality of files in a monolithic repository, each program chunk of the plurality of program chunks being associated with a corresponding program chunk SBOM that includes file declarations for the unique set of files that are incorporated into the corresponding program chunk and dependency declarations associated with one or more of the files, the method comprising:

identifying a programming build to generate a build SBOM for, the programming build comprising a particular configuration build that utilizes at least one or more files from each program chunk of a set of program chunks;

identifying a program chunk SBOM corresponding to each program chunk of the set of program chunks, each program chunk SBOM comprising declarations of files and dependencies associated with files included within each corresponding program chunk;

verifying each program chunk of the set of program chunks based at least in part on a strong identifier of the corresponding program chunk SBOM associated with said each program chunk;

examining evidence associated with said each program chunk of the set of program chunks to identify at least one program chunk of the set of program chunks that includes at least a particular file or dependency that is not utilized by the programming build, and which is declared in the corresponding program chunk SBOM for that at least one program chunk; and

generating the build SBOM for the programming build based at least in part on each of the program chunk SBOMs by at least including declarations of files and dependencies specified in each of the program chunk SBOMs for the program chunks utilized in the programming build and while refraining from adding a declaration of the particular file or dependency to the build SBOM that identifies the particular file or dependency as being incorporated into the programming build, and wherein the program build utilizes the at least one program chunk having the corresponding program chunk SBOM that does include a declaration for the particular file or dependency.

2. The method of claim 1 , the method further including: generating the strong identifier of the build SBOM for enabling subsequent verification of the build SBOM and creating a digital record that associates the strong identifier of the build SBOM with an identifier of the particular configuration of the programming build.

3. The method of claim 2 , wherein generating the build SBOM further includes verifying that the build SBOM omits the particular file or dependency from the build SBOM prior to generating the strong identifier of the build SBOM.

4. The method of claim 3 , wherein verifying that the build SBOM omits the particular file or dependency from the build SBOM includes adding an explicit declaration to the build SBOM that the particular file or dependency is not utilized by the particular configuration of the programming build that is associated with the build SBOM.

5. The method of claim 1 , wherein the set of program chunks is used to create both the programming build comprising a first build having the particular configuration and a different programming build comprising a second build that at least partially incorporates each program chunk of the set of program chunks with a different configuration than the particular configuration of the first build, wherein the method further includes generating a second build SBOM for the second programming build, the second build SBOM including a declaration for one or more file or dependency that is omitted from a first build SBOM, based on the one or more file or dependency being utilized by the second build but not being utilized by the first build.

6. The method of claim 5 , wherein the second build SBOM includes a file declaration from a reference program chunk SBOM which is omitted from the first SBOM.

7. The method of claim 5 , wherein the second build SBOM includes a dependency declaration from a reference program chunk SBOM which is omitted from the first build SBOM.

8. The method of claim 1 , wherein examining the evidence associated with each program chunk of the set of program chunks to identify at least one program chunk of the set of program chunks having the particular file or dependency which is not utilized by the programming build includes:

using a database to track processing applied to or by files included in the at least one program chunk, and

based on the tracked processing, determining that the particular file does not have any executable functionality or applicable dependency within the particular configuration of the program build.

9. The method of claim 8 , wherein examining the evidence associated with each program chunk of the set of program chunks to identify at least one program chunk of the set of program chunks having the particular file or dependency which is not utilized by the programming build includes:

identifying a declaration of a file included in the program chunk SBOM of the at least one program chunk, the at least one program chunk being incorporated into the programming build, and further identifying that the file is not utilized by the programming build,

the method further including verifying the declaration of the file included in the program chunk SBOM is omitted from the SBOM for the programming build.

10. The method of claim 1 , wherein the build SBOM is written in a first SBOM format comprising at least one of SPDX, SWID or CycloneDX, and wherein the program chunk SBOM for the particular program chunk SBOM is written in different SBOM format than the first SBOM format.

11. The method of claim 1 , wherein each file of the at least one program chunk includes a separate file SBOM with one or more file declarations and one or more dependency declarations, wherein the program chunk SBOM for the at least one program chunk incorporates all file declarations and all dependency declarations of all corresponding file SBOMs for all files included in the at least one program chunk.

12. The method of claim 1 , wherein different permutations of the set of program chunks are incorporated into different configurations of the programming build, each different permutation of the set of program chunks including different combinations of files of the set of program chunks, each different configuration of the programming build comprising a different program chunk SBOM that is unique from all other program chunk SBOMs associated with the different configurations of the programming build.

13. A computing system comprising:

one or more hardware processors; and one or more storage devices having stored computer-executable instructions that are executable by the one or more hardware processors for configuring the computing system to perform the following:

identify a programming build to generate a build SBOM (software bill of materials) for, the programming build comprising a particular configuration that utilizes at least one or more files from each program chunk of a set of program chunks;

identify a program chunk SBOM corresponding to each program chunk of the set of program chunks, each program chunk SBOM comprising declarations of files and dependencies associated with files included within each corresponding program chunk;

verify each program chunk of the set of program chunks based at least in part on a strong identifier of the corresponding program chunk SBOM associated with said each program chunk;

examine evidence associated with said each program chunk of the set of program chunks to identify at least one program chunk of the set of program chunks that includes at least a particular file or dependency that is not utilized by the programming build, and which is declared in the corresponding program chunk SBOM for that at least one program chunk; and

generate the build SBOM for the programming build based at least in part on each of the program chunk SBOMs by at least including declarations of files and dependencies specified in each of the program chunk SBOMs for the program chunks utilized in the programming build and while refraining from adding a declaration of the particular file or dependency to the build SBOM that identifies the particular file or dependency as being incorporated into the programming build, and wherein the program build utilizes the at least one program chunk having the corresponding program chunk SBOM that does include a declaration for the particular file or dependency.

14. The computing system of claim 13 , the computer-executable instructions being further executable for configuring the computing system to generate the strong identifier of the build SBOM for enabling subsequent verification of the build SBOM and creating a digital record that associates the strong identifier of the build SBOM with an identifier of the particular configuration of the programming build.

15. The computing system of claim 14 , wherein generating the build SBOM further includes verifying that the build SBOM omits the particular file or dependency from the build SBOM prior to generating the strong identifier of the build SBOM.

16. The computing system of claim 15 , wherein verifying that the build SBOM omits the particular file or dependency from the build SBOM includes adding an explicit declaration to the build SBOM that the particular file or dependency is not utilized by the particular configuration of the programming build that is associated with the build SBOM.

17. The computing system of claim 13 , wherein the set of program chunks is used to create both the programming build comprising a first build having the particular configuration and a different programming build comprising a second build that at least partially incorporates each program chunk of the set of program chunks with a different configuration than the particular configuration of the first build, and wherein the computer-executable instructions are further executable for configuring the computing system to generate a second build SBOM for the second programming build, the second build SBOM including a declaration for one or more file or dependency that is omitted from a first build SBOM, based on the one or more file or dependency being utilized by the second build but not being utilized by the first build.

18. The computing system of claim 17 , wherein the second build SBOM includes a file declaration from a reference program chunk SBOM which is omitted from the first SBOM.

19. The computing system of claim 17 , wherein the second build SBOM includes a dependency declaration from a reference program chunk SBOM which is omitted from the first build SBOM.

20. A computer program product comprising one or more storage devices having stored computer-executable instructions that are executable by one or more hardware processors of a computing system for configuring the computing system to perform the following:

identify a programming build to generate a build SBOM (software bill of materials) for, the programming build comprising a particular configuration that utilizes at least one or more files from each program chunk of a set of program chunks;

identify a program chunk SBOM corresponding to each program chunk of the set of program chunks, each program chunk SBOM comprising declarations of files and dependencies associated with files included within each corresponding program chunk;

verify each program chunk of the set of program chunks based at least in part on a strong identifier of the corresponding program chunk SBOM associated with said each program chunk;

examine evidence associated with said each program chunk of the set of program chunks to identify at least one program chunk of the set of program chunks that includes at least a particular file or dependency that is not utilized by the programming build, and which is declared in the corresponding program chunk SBOM for that at least one program chunk; and

generate the build SBOM for the programming build based at least in part on each of the program chunk SBOMs by at least including declarations of files and dependencies specified in each of the program chunk SBOMs for the program chunks utilized in the programming build and while refraining from adding a declaration of the particular file or dependency to the build SBOM that identifies the particular file or dependency as being incorporated into the programming build, and wherein the program build utilizes the at least one program chunk having the corresponding program chunk SBOM that does include a declaration for the particular file or dependency.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2022
From: BUSSELL, FRANK JOSEPH; LYONS, HENRY JAMES; SCHWERZLER, NICHOLAS ALLAN; YERALAN, SENCER NURI; ROLF, DALE RUSSEL; TRAN, MINH TRONG; JANSON, DAVID JOHN; YARYAN, THOMAS GEORGE; MCCARTY, IAN JAMES
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059923/0566 →
Continuity (1)
Related Publication 20230367881A1 · Nov 16, 2023
References Cited (40)
US 6202070B1 · Nguyen · 2001 [cited by examiner]
US 8498982B1 · Cope · 2013 [cited by applicant]
US 20150379262A1 · Islam · 2015 [cited by applicant]
US 20160117160A1 · Parthasarathy · 2016 [cited by examiner]
US 20160117161A1 · Parthasarathy et al. · 2016 [cited by applicant]
US 20180136941A1 · Kulick · 2018 [cited by applicant]
US 20190018967A1 · Ramasamy · 2019 [cited by applicant]
US 20190370471A1 · Petratos · 2019 [cited by applicant]
US 20200201620A1 · Beard · 2020 [cited by examiner]
US 20200389496A1 · Xuan · 2020 [cited by applicant]
US 20210021644A1 · Crabtree · 2021 [cited by applicant]
US 20220083652A1 · Ransford · 2022 [cited by examiner]
US 20220398324A1 · Bosch · 2022 [cited by applicant]
US 20230072264A1 · Coccia · 2023 [cited by examiner]
US 20230208880A1 · Schutt · 2023 [cited by examiner]
US 20230244791A1 · Jadhav · 2023 [cited by examiner]
US 20230359744A1 · Duggan · 2023 [cited by examiner]
US 20230367882A1 · Bussell · 2023 [cited by applicant]
US 20230367883A1 · Bussell · 2023 [cited by applicant]
Non-Final Office Action mailed on Feb. 26, 2024, in U.S. Appl. No. 17/745,698, (MS# 411856-US01) 30 pages. [cited by applicant]
“SBOM at a Glance”, Retrieved From: https://ntia.gov/sites/default/files/publications/sbom_at_a_glance_apr2021_0.pdf, Apr. 27, 2021, 3 Pages. [cited by applicant]
Haas, et al., “Is Static Analysis Able to Identify Unnecessary Source Code?”, In Journal of ACM Transactions on Software Engineering and Methodology, vol. 29, Issue 1, Jan. 30, 2020, 23 Pages. [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US23/015726”, Mailed Date: Jun. 16, 2023, 11 Pages. (MS# 411132-WO-PCT). [cited by applicant]
Ponta, et al., “The Used, The Bloated, and The Vulnerable: Reducing the Attack Surface of an Industrial Application”, In Proceedings of IEEE International Conference on Software Maintenance and Evolution, Sep. 27, 2021,… [cited by applicant]
VÁZQUEZ, et al., “Slimming Javascript Applications: An Approach for removing unused Functions from Javascript Libraries”, In Journal of Information and Software Technology, vol. 107, Mar. 2019, 18-29 pp. [cited by applicant]
“8 File information section”, Retrieved from: https://spdx.github.io/spdx-spec/file-information/, Retrieved Date: Oct. 28, 2021, 17 Pages. [cited by applicant]
“Batch”, Retrieved from: https://web.archive.org/web/20220310075028/https://azure.microsoft.com/en-us/services/batch/, Mar. 10, 2022, 12 Pages. [cited by applicant]
“CBOR Object Signing and Encryption (COSE)”, Retrieved from: https://www.iana.org/assignments/cose/cose. xhtml#header-parameters, Jan. 11, 2017, 15 Pages. [cited by applicant]
“The Software Package Data Exchange® (SPDX®) Specification Version 2.2.1”, Retrieved from: https://web.archive.org/web/20211210013844/https://spdx.github.io/spdx-spec/, Dec. 10, 2021, 1 Page. [cited by applicant]
Bormann, et al., “Concise Binary Object Representation (CBOR)”, Retrieved from: https://datatracker.ietf.org/doc/rfc7049/, Oct. 2013, 46 Pages. [cited by applicant]
Hudek, et al., “DISM Overview”, Retrieved from: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/what-is-dism?view=windows-11, Dec. 15, 2021, 4 Pages. [cited by applicant]
Schaad, J., “CBOR Object Signing and Encryption (COSE)”, Retrieved from: https://www.rfc-editor.org/rfc/pdfrfc/rfc8152.txt.pdf, Jul. 2017, 121 Pages. [cited by applicant]
Schaad, Jim, “CBOR Object Signing and Encryption (COSE): Structures and Process”, Retrieved from: https://datatracker.ietf.org/doc/draft-ietf-cose-rfc8152bis-struct/15/, Feb. 1, 2021, 59 Pages. [cited by applicant]
Steele, et al., “DID Specification Registries”, Retrieved from: https://w3c.github.io/did-spec-registries/, Mar. 1, 2022, 46 Pages. [cited by applicant]
Non-Final Office Action mailed on Apr. 5, 2024, in U.S. Appl. No. 17/745,695, (MS# 411855-US01) 8 pages. [cited by applicant]
Final Office Action mailed on Sep. 6, 2024, in U.S. Appl. No. 17/745,698, (MS# 411856-US01) 42 pages. [cited by applicant]
Notice of Allowance mailed on Sep. 6, 2024, in U.S. Appl. No. 17/745,695, (MS#411855-US01) 7 pages. [cited by applicant]
U.S. Appl. No. 17/745,695, filed May 16, 2022. [cited by applicant]
U.S. Appl. No. 17/745,698, filed May 16, 2022. [cited by applicant]
“The Software Package Data Exchange (SPDX) Specification Version 2.3,” 2022, 197 Pages. [cited by applicant]
Cited By (2)
US 12,524,232 US 12,632,241