GHSA-fx35-mq7g-6g98
ADVISORY - dockerSummary
Description
In cosign verify-blob and cosign verify-blob-attestation, keyless verification using --certificate-identity and --certificate-oidc-issuer (or their regular expression equivalents) can be bypassed when a legacy JSON --bundle is supplied.
Note that this does not affect verification with the newer standardized bundle format, the default in Cosign v3.
When reading the cert field of a legacy bundle, if the contents failed to parse as an X.509 certificate, Cosign silently fell back to loading the input as a raw public key and populated co.SigVerifier. In downstream verification, whenever co.SigVerifier is set, X.509 certificate chain validation and policy enforcement (CheckCertificatePolicy) are skipped. As a result, --certificate-identity and --certificate-oidc-issuer flags are ignored, and verification succeeds as long as the signature is cryptographically valid for the embedded public key.
Additionally, because the fallback unconditionally assigned to co.SigVerifier, if an operator passed an explicitly trusted --key alongside a legacy bundle containing a public key, the public key embedded in the bundle would overwrite the key provided via --key.
Affected Commands & Formats
- Affected:
cosign verify-blobandcosign verify-blob-attestationwhen verifying legacy JSON bundles (LocalSignedPayload). - Not Affected:
- OCI container image verification (
cosign verifyandcosign verify-attestation). - Verification using the modern Sigstore protobuf bundle format (
--new-bundle-format, e.g.,application/vnd.dev.sigstore.bundle+json).
- OCI container image verification (
Impact
An attacker can bypass keyless identity and OIDC issuer pinning in cosign verify-blob and cosign verify-blob-attestation by shipping a legacy bundle whose cert field contains an arbitrary bare public key (-----BEGIN PUBLIC KEY-----) instead of a Fulcio X.509 certificate.
- False assurance of identity enforcement: Verification completes with exit code
0and reportsVerified OK, causing operators or CI/CD pipelines to trust and consume artifacts signed by an unauthorized key. - Key override: If an operator explicitly specifies
--keywhile verifying against a legacy bundle containing a bare public key, the attacker's bundle key silently overrides--key.
Patches
Upgrade to v3.1.3 or v2.6.5.
Workarounds
Adopt the Standardized Protobuf Bundle Format:
Migrate from legacy JSON bundles to the modern Sigstore protobuf bundle format (--new-bundle-format). The protobuf bundle verification engine is not affected by this vulnerability. You can upgrade bundles with cosign bundle create.
Common Weakness Enumeration (CWE)
Sign in to Docker Scout
See which of your images are affected by this CVE and how to fix them by signing into Docker Scout.
Sign in