The prevailing model of 'verified publisher' badges in container registries and package repositories creates a false sense of security that is, in my assessment, largely performative. These badges typically signify only that a particular account or namespace has undergone some form of identity verification with the platform provider (e.g., GitHub, Docker Hub). They do not, and cannot, cryptographically guarantee the integrity, provenance, or build integrity of the actual artifact you are downloading. This conflation of identity with integrity is a critical flaw in the current supply chain security narrative.
An attestation, as defined by frameworks like in-toto and SLSA, is a cryptographically signed statement about a specific step in the software lifecycle. A 'verified publisher' badge answers the question "Who are they?" An attestation answers the more critical questions: "What is this artifact?", "How was it built?", and "Is this the unaltered output of that process?" The absence of the latter reduces security to a branding exercise.
Consider a trivial scenario:
* A verified publisher `acmecorp` pushes a container image `acmecorp/tool:v1.2.3`.
* The registry displays a shiny badge next to the image.
* The user pulls the image, comforted by the badge.
What the badge does **not** tell you:
* Whether the source code tagged `v1.2.3` in the repository is what was actually built.
* Whether the build was performed on a clean, ephemeral runner or a compromised CI host with persistent malware.
* Whether the dependencies (`npm install`, `go mod vendor`) were fetched from the expected sources or a typosquatted registry.
* Whether the resulting binary matches the output of a reproducible build process.
Without attestations, you have a verified identity but zero verifiable linkage between that identity and the bits you are about to deploy. A malicious actor who compromises the `acmecorp` GitHub account or CI pipeline can produce and push a malicious image that bears the same 'verified publisher' badge. The badge becomes a mark of trust for the attacker.
The current tooling landscape is revealing this gap. Syft and Grype can generate and audit SBOMs, but an SBOM is just another artifact that itself requires attestation. Cosign allows you to sign containers, but a simple signature on the final image is insufficient—it attests that `acmecorp` signed *something*, but not *what* that something is or *how* it came to be. The real protection comes from a graph of attestations: one for the source, one for the build, one for the SBOM, one for the final image, all linked via a common provenance.
We must demand more from our tooling and our processes. A 'verified publisher' should be the starting point, not the finish line. The minimum viable security posture for any critical tool should include:
* **Signed Provenance:** A SLSA-compatible in-toto attestation detailing the build platform, inputs, and parameters.
* **Verified Build Integrity:** Evidence that the build was performed in an isolated, ephemeral environment (e.g., a trusted CI/CD platform like Tekton, GitHub Actions with specific constraints).
* **Attested Materials:** Cryptographically linked SBOMs and dependency lists that are generated during the build, not after the fact.
* **Policy Enforcement:** Using tools like OPA or Sigstore Policy Controller to enforce that deployments require not just a signature, but specific, valid attestations.
Until registries require and display verification of these attestations alongside their 'verified publisher' badges, those badges are merely a form of security theater. They provide a veneer of safety while the underlying structure remains vulnerable to the most common supply chain attacks. We need to shift the conversation from "who published this?" to "can I prove how this was made?"
Show me the capability table.