Free — no signup required

SBOMs: The Ingredients Label

2 min read

Mystery Meat Software

Before you eat a packaged food item, you check the ingredients label. You need to know if it contains peanuts because you might be allergic. For decades, software binaries and Docker images had no equivalent. You pulled them from the internet and ran them, hoping for the best. The contents were opaque — mystery meat.

The Software Bill of Materials (SBOM)

An SBOM (Software Bill of Materials) is a machine-readable inventory of every component, library, and dependency inside a piece of software. It is the ingredients label for your application. Two dominant formats exist:

  • SPDX (Software Package Data Exchange): An ISO standard originally developed by the Linux Foundation. Widely used in compliance-heavy industries.
  • CycloneDX: A format optimized for security use cases, with richer support for vulnerability metadata and service dependencies.

Both formats can be expressed as JSON or XML, making them easy to store, diff, and query programmatically.

Generating SBOMs with Syft

Syft (from Anchore) acts like an X-ray machine for containers and filesystems. You point it at a Docker image, and it scans the filesystem to discover every installed package — OS-level packages like glibc and openssl, and language-level packages like Python pip modules or Node.js packages, then writes the result out in a format like CycloneDX JSON.

The resulting SBOM file lists every component Syft found — package name, version, type (deb, rpm, python, npm, etc.), and license. A typical nginx:latest image yields 100+ components, most of which you never explicitly chose.

What to Do With an SBOM

An SBOM is most valuable when stored alongside the artifact it describes and queried over time. Common use cases:

  • License compliance: Automatically flag any component with a GPL license before it ships in a proprietary product.
  • Rapid CVE response: When a new vulnerability is announced, query your SBOM repository to find every application that contains the affected package — in seconds, not days.
  • Audit trails: Regulators and enterprise customers increasingly require SBOMs as part of procurement. The US Executive Order 14028 (2021) mandated SBOMs for software sold to the federal government.
Interview Tip

Interviewers often ask: "How would you respond if Log4Shell happened again tomorrow?" The correct answer involves SBOMs. Instead of manually auditing every application, you query your stored SBOMs: grep -r '"log4j"' ./sboms/ or use a tool like Grype against each stored SBOM. This demonstrates that you think about security operationally, not just at build time.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free