SLSA (Supply-chain Levels for Software Artifacts) is a security framework developed by Google and the OpenSSF that provides a graduated set of requirements for securing software supply chains — from basic build practices to fully hermetic, verifiable builds. In 2026, SLSA is becoming a procurement requirement for enterprise software vendors and a baseline expectation for cloud-native deployments.
What Is SLSA and Why Does It Exist?
The SolarWinds attack (2020), the Codecov bash uploader compromise (2021), and the XZ Utils backdoor (2024) demonstrated that sophisticated attackers target the software supply chain — the build systems, dependencies, and distribution channels through which software reaches production — rather than attacking production systems directly. SLSA was created to provide a common vocabulary and set of requirements that make software supply chain attacks progressively more difficult across four levels of assurance.
SLSA Levels Explained
| Level | Name | Key Requirements | Protects Against |
|---|---|---|---|
| SLSA L1 | Provenance exists | Provenance document generated describing how the artifact was built | Accidental or undetected tampering; enables basic audit trail |
| SLSA L2 | Hosted source & build | Build uses hosted build service; provenance is signed by build service | Compromised developer workstations; basic build tampering |
| SLSA L3 | Hardened build | Build service is hardened against tampering; provenance non-falsifiable by build service admin | Compromised build platform; insider threats in CI/CD |
| SLSA L4 | Reproducible build | Builds are hermetic and reproducible; two-party review of all changes | Sophisticated supply chain attacks; backdoor insertion |
Understanding Build Provenance
Provenance is the signed, verifiable record of how a software artifact was produced: which source code revision was used, which build system built it, which dependencies were included, and when the build occurred. SLSA uses the in-toto Attestation Framework for provenance documents, which produces a signed JSON-LD document attesting to the build inputs and outputs.
// Example SLSA provenance document (simplified)
{
"_type": "https://in-toto.io/Statement/v0.1",
"subject": [{
"name": "my-service-v1.2.3.tar.gz",
"digest": { "sha256": "abc123..." }
}],
"predicateType": "https://slsa.dev/provenance/v0.2",
"predicate": {
"builder": { "id": "https://github.com/actions/runner" },
"buildType": "https://github.com/slsa-framework/slsa-github-generator/...",
"invocation": {
"configSource": {
"uri": "git+https://github.com/myorg/myrepo@refs/heads/main",
"digest": { "sha1": "abc456..." },
"entryPoint": ".github/workflows/release.yml"
}
},
"metadata": {
"buildStartedOn": "2026-03-15T14:23:00Z",
"completeness": { "parameters": true, "environment": true, "materials": true }
}
}
}
Implementing SLSA with GitHub Actions
The SLSA GitHub Generator project provides reusable GitHub Actions workflows that produce SLSA L3 provenance for common artifact types (Go binaries, containers, generic artifacts) without requiring teams to implement the provenance generation themselves.
# .github/workflows/release.yml — SLSA L3 for a Go binary
jobs:
build:
outputs:
binary-name: ${{ steps.build.outputs.binary-name }}
hashes: ${{ steps.hash.outputs.hashes }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build binary
id: build
run: |
go build -o myservice ./cmd/myservice
echo "binary-name=myservice" >> $GITHUB_OUTPUT
- name: Generate hashes
id: hash
run: |
set -euo pipefail
echo "hashes=$(sha256sum myservice | base64 -w0)" >> $GITHUB_OUTPUT
provenance:
needs: [build]
permissions:
actions: read
id-token: write
contents: write
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
with:
base64-subjects: "${{ needs.build.outputs.hashes }}"
SLSA and SBOMs: Complementary Approaches
- Answers: How was this artifact built?
- Build process integrity and chain of custody
- Cryptographically signed by the build system
- Protects against build tampering and supply chain attacks
- Generated by: SLSA GitHub Generator, Tekton Chains, GUAC
- Answers: What is in this artifact?
- Complete inventory of software components and dependencies
- Enables vulnerability scanning against CVE databases
- Protects against known-vulnerable component inclusion
- Generated by: Syft, Trivy, SPDX tools, CycloneDX
SLSA provenance and SBOMs are complementary — provenance proves the artifact was built correctly from known sources; SBOMs document what those sources contain. US Executive Order 14028 (Improving the Nation's Cybersecurity) requires both from software vendors supplying to the US federal government.