Skip to content

Software bill of materials

Use this template to describe the components a product is built from, with their versions, licences and known vulnerabilities. For anything you ship, generate the bill of materials in a standard format such as CycloneDX or SPDX as part of the build, and keep this page as the summary.

Template

---
title: Software Bill of Materials (SBOM) - [Product/System Name] v[Version Number]
status: Draft / Generated / Verified / Baselined
date: YYYY-MM-DD (Date of Generation)
author: [Name or Role of SBOM Generator/Owner]
version: 1.0
related_documents:
  - Release Plan - [Product Name] v[Version Number]
  - Risk Register - [Product Name]
---

# Software Bill of Materials (SBOM): [Product/System Name] v[Version Number]

This document lists all software components, including open-source and commercial, that are incorporated into [Product/System Name] version [Version Number]. It provides transparency into our software supply chain, enabling proactive vulnerability management, license compliance, and risk assessment.

---

## 1. Introduction

### 1.1 Purpose

The purpose of this Software Bill of Materials (SBOM) is to:
* Provide a comprehensive inventory of all software components within the product.
* Facilitate vulnerability management by identifying affected components when new vulnerabilities are disclosed.
* Ensure compliance with open-source and third-party software licenses.
* Support security auditing and risk assessment activities.
* Enhance transparency and trust in our software supply chain.

### 1.2 Scope

This SBOM covers all software components (libraries, frameworks, operating systems, firmware, etc.) that are part of, or linked into, the [Product/System Name] version [Version Number]. It includes both direct dependencies and transitive dependencies (dependencies of dependencies).

### 1.3 Definitions and Acronyms

* **Component:** A distinct software package, library, or module.
* **Direct Dependency:** A component explicitly listed in the product's build or manifest file.
* **Transitive Dependency:** A component that is a dependency of a direct dependency (or further down the chain).
* **CPE (Common Platform Enumeration):** A standardized naming scheme for software applications, operating systems, and hardware devices.
* **PURL (Package URL):** A URL string that identifies and locates a software package.
* **SPDX (Software Package Data Exchange):** An open standard for communicating SBOM information.
* **CycloneDX:** A lightweight SBOM standard designed for use in application security contexts and supply chain component analysis.

## 2. SBOM Generation Details

### 2.1 Generation Tool(s)

[Specify the tool(s) used to generate this SBOM (e.g., Syft, Dependency-Track, Black Duck, custom scripts).]

* **Tool Name:** [e.g., Syft]
* **Version:** [e.g., 0.80.0]
* **Configuration/Command:** [e.g., `syft dir:./ --output spdx-json=sbom.json`]

### 2.2 Source of Analysis

[Describe where the SBOM was generated from (e.g., source code repository, built artifact, container image).]

* **Location:** [e.g., `git@github.com:your-org/your-repo.git#v1.0.0`]
* **Artifact Hash (if applicable):** [e.g., SHA256 hash of the final build artifact]

### 2.3 SBOM Format

[Specify the format of the generated SBOM (e.g., SPDX JSON, CycloneDX JSON, SPDX Tag-Value).]

* **Format:** [e.g., SPDX JSON]

## 3. Software Component Inventory

This section provides a summary of the identified components. For a detailed, machine-readable list, refer to the attached/linked SBOM file.

| Component Name | Version | Supplier/Author | License(s) | CPE / PURL (if available) | Hashes (SHA256) | Direct/Transitive | Vulnerabilities (Known) | Notes |
|----------------|---------|-----------------|------------|---------------------------|-----------------|-------------------|-------------------------|-------|
| `openssl`      | `1.1.1u`| OpenSSL Project | OpenSSL    | `pkg:deb/debian/openssl@1.1.1u` | `abcdef123...`  | Direct            | CVE-2023-XXXX           |       |
| `libjpeg-turbo`| `2.1.0` | libjpeg-turbo   | BSD-3-Clause | `pkg:npm/libjpeg-turbo@2.1.0` | `1234567...`    | Transitive        |                         |       |
| `react`        | `18.2.0`| Meta            | MIT        | `pkg:npm/react@18.2.0`    | `fedcba9...`    | Direct            |                         |       |
| `sqlite`       | `3.39.0`| SQLite          | Public Domain | `pkg:generic/sqlite@3.39.0` | `9876543...`    | Direct            |                         | Used for local caching |
| `firmware-sdk` | `2.5.1` | Internal        | Proprietary |                           | `zyxwvu...`     | Direct            |                         |       |

## 4. License Compliance Summary

[Summarize the licensing posture of the components. Highlight any licenses requiring specific actions (e.g., copyleft licenses).]

* **Total Unique Licenses:** [Number]
* **Common Licenses:** [e.g., MIT, Apache 2.0, BSD-3-Clause]
* **Licenses Requiring Attention:** [e.g., GPLv3 (if applicable), LGPLv2.1]
    * **[License Type]:** [Action Required, e.g., "Ensure source code distribution compliance."]

## 5. Vulnerability Management

### 5.1 Known Vulnerabilities

[Summarize any known vulnerabilities identified in the components listed in this SBOM. Refer to a separate vulnerability report if detailed.]

* **Total Critical Vulnerabilities:** [Number]
* **Total High Vulnerabilities:** [Number]
* **Top 3 Vulnerabilities (CVE ID & Component):**
    1.  [CVE-YYYY-XXXX - Component A vX.Y.Z]
    2.  [CVE-YYYY-YYYY - Component B vA.B.C]
    3.  [CVE-YYYY-ZZZZ - Component C vP.Q.R]

### 5.2 Remediation Strategy (High-Level)

[Describe the general approach to addressing identified vulnerabilities.]

* [e.g., "Prioritize critical and high vulnerabilities for immediate patching/upgrading."]
* [e.g., "Monitor vulnerability databases (e.g., NVD, OSV) for new disclosures."]
* [e.g., "Regularly regenerate SBOMs to detect new components or changes."]

## 6. SBOM Usage and Maintenance

### 6.1 How to Use This SBOM

* **Security Teams:** For vulnerability assessment and supply chain risk management.
* **Legal/Compliance Teams:** For open-source license compliance.
* **Development Teams:** For understanding dependencies and making informed decisions about new component adoption.
* **Operations Teams:** For understanding deployed software components.

### 6.2 Maintenance

This SBOM is a living artifact and should be regenerated and reviewed:
* [e.g., "Upon every major release."]
* [e.g., "After significant dependency changes."]
* [e.g., "Periodically (e.g., monthly/quarterly) for continuous monitoring."]
* [e.g., "When a new critical vulnerability is disclosed in a commonly used component."]

## 7. References

* [Link to the raw SBOM file (e.g., `sbom.json`)]
* [Link to Vulnerability Report (if separate)]
* [Link to Licensing Compliance Report (if separate)]
* [Official SPDX Specification]
* [Official CycloneDX Specification]