Skip to content

feat(cli): verify container image signatures and SLSA provenance on pull #491

@Aureliolo

Description

@Aureliolo

Problem

The CLI signs and attests all artifacts in CI (cosign keyless signing + SLSA L3 provenance via actions/attest-build-provenance), but the consumer side only verifies CLI binary updates — container images are pulled via raw docker compose pull with zero verification.

Current State

Verification CLI Binary Update Container Images
SHA-256 checksum Yes (mandatory) No
Cosign signature Yes (optional) No
Sigstore bundle Yes (optional) No
SLSA provenance No No

Proposed Solution

Container Image Verification

Before pulling images in synthorg start, synthorg update, and optionally synthorg init:

  1. Cosign signature verification — verify each image digest against the Sigstore transparency log using cosign verify (or the Go library directly)
  2. SLSA provenance verification — verify attestations pushed to the registry via cosign verify-attestation or the sigstore-go library
  3. Digest pinning — after verification, pin the verified digest in the compose file so Docker pulls exactly what was verified

CLI Binary SLSA Provenance

Additionally, verify SLSA provenance attestations during self-update (currently only checksums + cosign signature are verified, not the .sigstore.json provenance).

Implementation Notes

  • The sigstore-go library is already a dependency (used in cli/internal/selfupdate/sigstore.go)
  • CI already pushes attestations to the registry (push-to-registry: true in docker.yml)
  • Release notes already document manual cosign verify commands — the CLI should automate this
  • Consider a --skip-verify flag for air-gapped environments, with a clear warning

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:highImportant, should be prioritizedscope:large3+ days of worktype:featureNew feature implementation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions