SBOM.WIKI

A Cottagecore Compendium of Software Ingredients

v2.1 v1.0 v3.4 v0.9

Chapter One

What is an SBOM?

A Software Bill of Materials is, at its heart, a simple idea wrapped in profound implications. Just as a beloved family recipe lists every ingredient down to the last pinch of salt, an SBOM catalogs every component that makes up a piece of software — every library, every framework, every quietly bundled dependency that hums along beneath the surface.

In a world where a single application might depend on hundreds or even thousands of open-source packages, knowing what's inside your software isn't a luxury. It's a necessity. Supply chain attacks, license compliance, vulnerability management — they all begin with the same fundamental question: what exactly is in this software?

An SBOM answers that question with meticulous care. It provides a machine-readable inventory of components, their versions, their suppliers, and their relationships to one another. Think of it as the provenance record for your digital pantry — every jar labeled, every source traced back to its origin.

Two primary formats have emerged as standards: SPDX (Software Package Data Exchange), stewarded by the Linux Foundation, and CycloneDX, an OWASP project designed with security use cases front and center. Both serve the same fundamental purpose, differing mainly in their schema philosophies and community ecosystems.

Component

Any discrete unit of software — a library, a framework, a module. The fundamental atom of an SBOM, like a single herb in the garden.

Supplier

The entity that provides or maintains a component. Knowing your supplier is like knowing which farm grew your tomatoes.

Version

The specific release of a component. Version pinning ensures your recipe produces the same result every time.

Hash

A cryptographic fingerprint verifying component integrity — proof that no one has tampered with the ingredients.

"Think of it like a recipe's ingredient list, but for software."

The average Node.js project has over 1,000 transitive dependencies. That's a lot of ingredients!

Chapter Two

The Ingredients

Every software package tells a story. Here are the characters.

Libraries & Frameworks

The workhorses of modern software. From React to Django, these are the pre-built foundations upon which applications grow. An SBOM records not just the library name, but its exact version, download location, and cryptographic hash.

"name": "react", "version": "18.2.0"

License Declarations

Every ingredient comes with terms of use. MIT, Apache-2.0, GPL-3.0 — licenses govern how components may be used, modified, and distributed. An SBOM makes these obligations visible.

"license": "MIT"

Package Managers

npm, pip, Maven, Cargo — the distribution channels through which ingredients arrive. Each manager has its own ecosystem, its own conventions, its own dependency resolution quirks.

"purl": "pkg:npm/express@4.18.2"

Transitive Dependencies

The dependencies of your dependencies. You asked for one library and received fifty. These hidden ingredients are often where vulnerabilities lurk, unnoticed until it's too late.

"dependsOn": ["pkg:npm/qs@6.11.0"]

Build Tools & Compilers

The ovens and stoves of software development. Webpack, GCC, rustc — they transform raw ingredients into the final dish. Comprehensive SBOMs record these too.

"type": "build-tool"

Container Images

When software ships in containers, the SBOM must inventory the entire image — base OS packages, runtime layers, and every file baked into the final artifact.

"purl": "pkg:oci/nginx@sha256:abc..."

Chapter Three

Reading the Garden

A guided tour of a dependency tree in full bloom.

Direct dependencies Transitive dependencies Dev dependencies
my-app express v4.18.2 react v18.2.0 pg v8.11.3 body-parser cookie react-dom scheduler pg-pool pg-types bytes loose-envify object-assign jest v29.7.0 eslint v8.56.0

The dependency graph reveals the hidden complexity of modern software. What appears to be three simple ingredients — a web framework, a UI library, and a database client — blossoms into a garden of dozens of interconnected packages.

Each node in this botanical diagram represents a package that must be inventoried, verified, and monitored. Direct dependencies are the flowers you planted yourself; transitive dependencies are the wildflowers that arrived on the wind.

Understanding this garden is the first step toward securing it. An SBOM gives you the map.

Hover over any node in the garden to see its details. In a real SBOM, each node carries version, hash, license, and supplier information.

Chapter Four

Pests & Thorns

Even the loveliest gardens have their dangers.

Vulnerabilities in software dependencies are the thorns on otherwise beautiful branches. A single unpatched CVE in a transitive dependency can compromise an entire application — and by extension, every system that depends on it.

The history of software supply chain attacks reads like a cautionary almanac of its own. Each incident underscores why SBOMs aren't merely bureaucratic compliance artifacts — they're essential defense tools.

2020

SolarWinds Sunburst

A compromised build system injected malicious code into software updates distributed to 18,000 organizations. An SBOM would have revealed the anomalous component.

2021

Log4Shell (CVE-2021-44228)

A critical vulnerability in Apache Log4j affected millions of applications. Many organizations couldn't even determine if they were affected — because they had no SBOM.

2022

Colors & Faker Sabotage

A maintainer deliberately corrupted their own popular npm packages, affecting thousands of downstream projects overnight. Supply chain integrity begins with knowing your ingredients.

2024

xz Utils Backdoor

A multi-year social engineering campaign planted a backdoor in a critical compression library. SBOMs and provenance attestation are the frontline defense against such patient attacks.

Critical

Remote code execution, full system compromise. The garden is on fire.

High

Significant impact, exploitation likely. Deep roots at risk.

Medium

Conditional impact, some exploitation barriers. Watch closely.

Low

Minor impact, unlikely exploitation. A small scratch.

The U.S. Executive Order 14028 (2021) mandated SBOMs for all software sold to the federal government. The thorns grew too sharp to ignore.

A vulnerability in one package can cascade through thousands of dependent projects. This is why we map the garden.

Chapter Five

The Almanac Index

A reference guide to the language of software supply chains.

Artifact A built, packaged output of a software project — the finished dish ready to serve.
Attestation A signed statement about how a software artifact was produced, linking provenance to identity.
Bill of Materials A comprehensive inventory list. In manufacturing, it lists physical parts; in software, it lists code components.
Component Any identifiable unit of software included in a larger system — a library, module, or file.
CPE Common Platform Enumeration — a standardized naming scheme for software, hardware, and operating systems.
CVE Common Vulnerabilities and Exposures — a catalog of publicly known security flaws, each with a unique identifier.
CycloneDX An OWASP SBOM standard designed with security analysis as a first-class use case.
Dependency A component that another component requires to function — the flour without which the bread cannot rise.
Hash / Checksum A cryptographic fingerprint ensuring a file has not been altered — the wax seal on a letter.
License The legal terms governing use, modification, and distribution of a software component.
NTIA Minimum Elements The baseline data fields required for a compliant SBOM, as defined by the U.S. National Telecommunications and Information Administration.
Provenance The verifiable history of where a software component came from and how it was built.
PURL Package URL — a universal scheme for identifying software packages across ecosystems.
SBOM Software Bill of Materials — a formal, machine-readable inventory of all components in a piece of software.
SLSA Supply-chain Levels for Software Artifacts — a security framework for ensuring the integrity of software builds.
SPDX Software Package Data Exchange — a Linux Foundation standard for communicating SBOM data.
Supplier The entity that creates, maintains, or distributes a software component.
Supply Chain The complete network of people, processes, and components involved in creating and distributing software.
Transitive Dependency A dependency of a dependency — the hidden ingredients you never directly chose.
VEX Vulnerability Exploitability eXchange — a companion document to an SBOM that states whether known vulnerabilities are actually exploitable in context.
Vulnerability A weakness in software that can be exploited — a thorn on the branch, waiting to draw blood.

SBOM.WIKI

"Every piece of software tells the story of its ingredients. This almanac helps you read that story."