Software supply chain security has become one of the most talked-about topics in modern engineering and for good reason.
Attacks are no longer just about exploiting running applications, they are increasingly about poisoning what gets built, shipped, and trusted in the first place.
In response, the industry has rallied around one key concept: the Software Bill of Materials (SBOM).
It sounds promising. A complete inventory of all components in your software. Transparency. Traceability. Control. But here’s the uncomfortable truth: SBOMs are necessary but they are not even close to sufficient.
What SBOMs Actually Give You
An SBOM is essentially a list of ingredients:
- Libraries and dependencies
- Versions
- Licenses
- Sometimes transitive dependencies
Think of it like reading the label on packaged food. You know what’s inside but that doesn’t mean the food is safe.
SBOMs help answer:
- What are we running?
- Are we using a vulnerable library?
- Do we have exposure to known CVEs?
This is valuable. But it’s only visibility, not security.
The Illusion of Security
The danger with SBOMs is subtle: they create a false sense of completeness.
You might think:
- “We generate SBOMs, so we’re secure.”
- “We scan dependencies, so we’re covered.”
But supply chain attacks don’t just exploit known components. They exploit:
- Build pipelines
- Signing systems
- Developer environments
- Dependency trust models
An SBOM tells you what is included. It does not tell you whether you can trust how it got there.
Where SBOMs Fall Short
1. No Integrity Guarantees
An SBOM does not prove that the artifact hasn’t been tampered with. If an attacker injects malicious code during build:
- Your SBOM will still look perfectly valid
- The compromise remains invisible
2. No Provenance
SBOMs don’t answer:
- Who built this artifact?
- Where was it built?
- Was the environment trusted?
Without provenance, you’re trusting outputs without verifying their origin.
3. No Runtime Context
SBOMs are static. They don’t tell you:
- What is actually loaded at runtime
- What code paths are executed
- Whether a vulnerable component is exploitable
4. No Protection Against Malicious Dependencies
A dependency can be:
- Not vulnerable
- Still malicious
SBOMs track components but not intent.
5. No Defense Against Pipeline Compromise
If your CI/CD is compromised:
- Attackers can inject backdoors
- Sign malicious artifacts
- Ship them through trusted channels
Your SBOM will happily document the compromised output.
What Real Supply Chain Security Looks Like
To move beyond SBOMs, you need to think in terms of trust, integrity, and verification across the entire lifecycle.
1. Provenance: Know Where It Came From
Every artifact should answer:
- Who built it?
- From which source?
- Using what process?
This is where frameworks like SLSA come in.
At higher SLSA levels:
- Builds are tamper-resistant
- Provenance is cryptographically verifiable
- Pipelines are hardened and isolated
Without provenance, you are trusting artifacts blindly.
2. Reproducible Builds: Trust Through Determinism
A powerful concept: If I build the same source, I should get the exact same binary.
Reproducibility allows you to:
- Detect tampering
- Verify integrity independently
If outputs differ, something is wrong.
3. Artifact Signing and Verification
Every artifact should be:
- Signed at build time
- Verified before deployment
Modern approaches use tools like Sigstore:
- Keyless signing
- Transparency logs
- Identity-bound signatures
This ensures:
- Only trusted artifacts run
- Tampered artifacts are rejected
4. Secure CI/CD Pipelines
Your pipeline is part of your attack surface.
Harden it like production:
- Isolate build environments
- Use ephemeral runners
- Enforce least privilege
- Prevent direct artifact modification
Treat CI/CD as a high-value target, not just automation.
5. Dependency Trust, Not Just Dependency Tracking
Instead of just listing dependencies:
- Verify their source integrity
- Pin versions and hashes
- Use trusted registries
- Monitor for anomalous updates
Supply chain attacks often exploit:
- Typosquatting
- Dependency confusion
- Maintainer compromise
6. Runtime Enforcement
Security doesn’t stop at build time. Enforce at runtime:
- Only signed images can run
- Block unknown or untrusted binaries
- Use admission controllers in Kubernetes
- Monitor behavior, not just composition
7. Continuous Verification
Security is not a one-time scan. Continuously:
- Re-evaluate dependencies
- Monitor for new vulnerabilities
- Validate signatures and provenance
- Audit pipeline integrity
A Better Mental Model
SBOMs answer: “What is inside?”
Real supply chain security asks: “Can I trust this, end to end?”
The Shift: From Visibility to Trust
The industry is moving from:
- Inventory → Integrity
- Awareness → Assurance
- Listing → Verifying
SBOMs are just the starting point.
Without:
- Provenance
- Signing
- Reproducibility
- Pipeline security
,you are still exposed.
Final Thought
Supply chain security is not about knowing what you have.
It is about knowing that what you have has not been silently altered somewhere along the way.
And that requires more than a list.
Leave a Reply