Skip to content

Latest commit

 

History

History
118 lines (91 loc) · 4.3 KB

File metadata and controls

118 lines (91 loc) · 4.3 KB

SLSA Build Provenance

AegisBPF release artifacts ship with SLSA v1.0 Build Track Level 3 provenance attestations generated by GitHub's actions/attest-build-provenance action, which uses a hardened GitHub-hosted build platform and Sigstore for unforgeable signing.

What you get with every release

For every artifact attached to a GitHub Release tag vX.Y.Z:

Artifact class Signature SBOM Provenance
aegisbpf-*.tar.gz (release archives) cosign keyless (*.sig + *.pem) SPDX 2.3 + CycloneDX 1.6 SLSA v1.0 L3
*.deb / *.rpm cosign keyless Included in release SBOM SLSA v1.0 L3
SHA256SUMS.txt cosign keyless SLSA v1.0 L3
ghcr.io/ErenAri/aegis-bpf:vX.Y.Z (OCI image) cosign keyless image sig SLSA v1.0 L3

Provenance is published to the Sigstore Rekor transparency log and is discoverable via gh attestation verify.

How to verify

1. Install the tooling

# GitHub CLI with attestation subcommand (>= 2.49.0)
gh --version

# Cosign 2.x
curl -LO https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64
chmod +x cosign-linux-amd64 && sudo mv cosign-linux-amd64 /usr/local/bin/cosign

2. Download a release

VERSION=v0.1.1
gh release download "${VERSION}" --repo ErenAri/Aegis-BPF \
  --pattern 'aegisbpf-*.tar.gz' \
  --pattern 'SHA256SUMS.txt' \
  --pattern '*.sig' \
  --pattern '*.pem'

3. Verify SLSA provenance

gh attestation verify aegisbpf-0.1.1-ubuntu-24.04-x86_64.tar.gz \
  --repo ErenAri/Aegis-BPF

A successful verification prints the predicate type https://slsa.dev/provenance/v1 and the builder identity https://github.com/actions/runner/github-hosted. This is the SLSA v1.0 Build L3 claim:

  • Scripted: build steps are defined entirely in .github/workflows/release.yml.
  • Build service: GitHub-hosted ubuntu-24.04 runners.
  • Isolated: each release job runs in a fresh ephemeral VM.
  • Unforgeable: signing keys are GitHub OIDC identities, never exposed to user-defined build steps; provenance is logged to Rekor and cannot be retroactively altered without detection.

4. Verify Sigstore blob signatures

cosign verify-blob \
  --certificate aegisbpf-0.1.1-ubuntu-24.04-x86_64.tar.gz.pem \
  --signature aegisbpf-0.1.1-ubuntu-24.04-x86_64.tar.gz.sig \
  --certificate-identity-regexp 'https://github.com/ErenAri/Aegis-BPF/.*' \
  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
  aegisbpf-0.1.1-ubuntu-24.04-x86_64.tar.gz

5. Verify the OCI image

cosign verify ghcr.io/erenari/aegis-bpf:v0.1.1 \
  --certificate-identity-regexp 'https://github.com/ErenAri/Aegis-BPF/.*' \
  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com'

How SLSA L3 is achieved

The AegisBPF release pipeline meets each SLSA v1.0 Build L3 requirement as follows:

SLSA v1.0 requirement AegisBPF implementation
Scripted build .github/workflows/release.yml is the sole build definition
Build service GitHub Actions hosted runners (no self-hosted for release artifacts)
Provenance exists actions/attest-build-provenance@v2 emits in-toto provenance
Provenance authenticated Sigstore keyless (GitHub OIDC) signing; public Rekor entry
Provenance service generated Signer identity is token.actions.githubusercontent.com, not user-controlled
Isolated builds Fresh ephemeral VM per job; no shared state
Unforgeable provenance Signing secret never materialises in build steps; hardware-backed GitHub OIDC
Non-falsifiable Rekor transparency log is append-only and publicly auditable

Verifying the build source ref

gh attestation verify by default validates the source repository. To additionally pin to a specific tag or commit:

gh attestation verify aegisbpf-0.1.1-ubuntu-24.04-x86_64.tar.gz \
  --repo ErenAri/Aegis-BPF \
  --source-ref refs/tags/v0.1.1

References