TechTarget.com/searchsecurity

https://www.techtarget.com/searchsecurity/tip/How-to-create-an-SBOM-with-example-and-template

How to create an SBOM: Example and free template

By Rob Shapland

Modern software development involves using a large number of components, often with a mixture of custom-written code, open source libraries, firmware and commercial software. Organizations need to keep track of the components used throughout their network so they can detect security vulnerabilities that might affect them.

To do this, organizations should use a software bill of materials (SBOM).

An SBOM is a living document created to inventory software components, including shared objects, libraries, statically linked libraries and middleware. It provides a comprehensive overview of every software dependency and license information in use. This enables an organization to quickly determine if it uses any software affected by vulnerabilities in a particular component without needing to investigate every piece of software manually.

For example, when the infamous Log4j vulnerability was discovered, most organizations scrambled to find where they used the component. Organizations that had SBOMs were able to quickly determine where the component was used and apply relevant mitigations.

Follow this step-by-step guide to create an SBOM for your organization. Review best practices to follow and SBOM formats to consider.

How to create an SBOM, step by step

The following steps explain how to build an SBOM. The SBOM template included in this article is a helpful starting point because it demonstrates how SBOMs enumerate the component parts of the software. Here are the steps:

An event marketing plan template.Use this free downloadable
SBOM template to get
help creating an SBOM
for your organization.
  1. Select an SBOM tool. Creating an SBOM manually is time-consuming and cumbersome. Many tools are available to help with the task. Therefore, the first step is to choose a tool. Look for one that generates SBOMs both from using software source code and independently. Open source SBOM tools include Syft, Fossa, Tern and Retire.js.
  2. Select an SBOM format. SBOM formats include CycloneDX, System Package Data Exchange (SPDX) or Software Identification (SWID) tags.
  3. Generate the SBOM. Use the tool and selected format to create an SBOM that includes all internally developed components, open source and commercial external software, libraries, frameworks, firmware and other software components in use.
  4. Maintain the SBOM. SBOMs are living documents. As such, it is important to update them regularly, for example, when patching or updating software. This keeps the SBOM up to date with its components and known vulnerabilities.

What to include in an SBOM

SBOMs provide an exhaustive breakdown of every software component, listed by name and followed by any subdependencies. This is a hierarchical relationship where the component in question is itself reliant on other software, which also can be reliant on additional software components that should be listed as sub-subdependencies. This can be further deconstructed as needed for organizations, but for the purposes of usability, the SBOM template and example do not list any further layers of dependencies.

The National Telecommunications and Information Administration lists the following as minimum elements for an SBOM:

Other elements to add to an SBOM include subdependencies, sub-subdependencies, cryptographic hashes of the components and any known vulnerabilities (CVEs).

SBOM best practices

Follow these best practices for creating and maintaining SBOMs:

SBOM formats

As mentioned, SBOM formats include CycloneDX, SPDX and SWID tags:

Learn more about these three SBOM formats.

Editor's note: Informa TechTarget editors revised this article in 2025 to improve the reader experience.

Rob Shapland is an ethical hacker specializing in cloud security, social engineering and delivering cybersecurity training to companies worldwide.

17 Jun 2025

All Rights Reserved, Copyright 2000 - 2026, TechTarget | Read our Privacy Statement