Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAcquire expired long-lived signing key material
-
DeliveryCraft Sigstore bundle signed with expired key
-
ExploitSubmit bundle to vulnerable sigstore-go verifier
-
ExecutionVerifier skips ExpiringKey timestamp validation
-
PersistBundle accepted as cryptographically valid
-
ImpactKey expiry security boundary bypassed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Key rotation and expiry
|
| Exploitation Conditions | Exploitation requires all of the following: (1) the target application uses sigstore-go's self-managed long-lived key workflow - the vulnerability does not affect any deployment using a certificate authority such as Fulcio; (2) the verifier is explicitly configured with a |
| Impact | The CVSS 3.1 vector AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N yields a score of 3.1 (LOW), which accurately reflects the narrow impact here. Attack Complexity is High because an attacker must first obtain expired key material - a significant non-trivial prerequisite that limits opportunistic exploitation. PR:L indicates some level of authenticated access is required to submit bundles for verification. Impact is confined to Integrity:Low with no confidentiality or availability consequences. The vulnerability is not listed in the CISA KEV catalog, no standalone POC exploit has been released (only a test-case patch for reproduction), and no EPSS score was provided in the source data. Real-world risk is meaningful specifically for organizations that have adopted the long-lived key workflow in sigstore-go and depend on key expiry as a security boundary - for those teams, an attacker who has acquired a previously valid, now-expired signing key can present artifacts as validly signed indefinitely. For the broader ecosystem, the risk is low due to the non-default configuration requirement and the fact that the dominant Fulcio-based workflow is entirely unaffected. |
| Exploit ScenarioDerived | An attacker who previously held or has since obtained a signing key that was once valid under an |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 31, 2026
sigstore-go versions up to and including 1.2.0 accept Sigstore bundles signed with expired long-lived public keys because the verifier omits the timestamp-validity check when using ExpiringKey-wrapped verifiers. An attacker who obtains expired signing key material can produce bundles that pass verification despite the key's configured expiry window, undermining supply chain integrity guarantees enforced by key rotation policies. This affects only the self-managed long-lived key workflow - standard Sigstore deployments using Fulcio certificate authorities are explicitly unaffected. No public exploit identified at time of analysis.
RemediationAI
Upgrade sigstore-go to v1.2.1 (https://github.com/sigstore/sigstore-go/releases/tag/v1.2.1), which enforces the signing-timestamp-to-key-validity-window check introduced in PR #642 (commit 4594ab4c779d08be1f4419803a8249188f35ed5f). If an immediate upgrade is not feasible, organizations using the long-lived key workflow should audit all ExpiringKey verifier configurations and treat any bundle verification result as potentially unreliable with respect to key expiry enforcement. Transitioning to the Fulcio certificate authority workflow eliminates the exposure entirely, as that path enforces validity through the certificate chain - though this is a significant architectural change with operational implications for key management. There is no in-place workaround that preserves the ExpiringKey API behavior without upgrading; the missing check cannot be compensated at the caller level because the validation logic is internal to the library's verification method.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
sigstore-go is the Go reference implementation of the Sigstore artifact signing and verification framework, identified by package path pkg:go/github.com/sigstore/sigstore-go. The vulnerability (CWE-324: Use of a Key Past its Expiration Date) resides in pkg/verify/signed_entity.go within the Verifier.Verify() method. The Sigstore protocol supports two signing workflows: (1) short-lived certificates issued by a certificate authority such as Fulcio, where expiry is enforced through the certificate chain, and (2) self-managed long-lived keys, where the operator wraps a public key verifier in a root.ExpiringKey type that explicitly encodes a validity start and end time. The bug is that the code path handling public-key-based bundles omitted a call to ValidAtTime() against the verified timestamps, meaning the validator accepted bundles regardless of whether the signing event fell within the key's configured validity window. The fix in PR #642 (commit 4594ab4c779d08be1f4419803a8249188f35ed5f) adds an explicit loop over verifiedTimestamps that returns an error when the signing time falls outside the ExpiringKey window, matching the API contract that was implied but not enforced.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
Attacker must first acquire expired key material (AC:H); some authenticated access needed to submit bundles (PR:L); impact is solely integrity-limited bypass of key expiry (I:L), no confidentiality or availability consequences.
Primary rating from Vendor (https://github.com/sigstore/sigstore-go).
CVSS VectorVendor: https://github.com/sigstore/sigstore-go
DescriptionCVE.org
sigstore-go fails to check signature timestamps against a signing key's validity period for self-managed long-lived keys without certificates.
Impact
To verify a bundle with a self-managed long-lived key, the key needs to be wrapped in an ExpiringKey type that implies expiration semantics:
signatureVerifier, _ := signature.LoadDefaultVerifier(publicKey)
expiredKey := root.NewExpiringKey(signatureVerifier, time.Unix(0, 0), time.Unix(1, 0))Despite the API contract, the validator does not check the bundle signing time against the validity window. Attackers that obtain expired key materials may be able to sign bundles with those materials that are accepted despite a configured expiry date. This issue only impacts the long-lived signing key workflow, and not standard deployments involving a certificate authority.
Reproduction steps
Start from a sigstore-go checkout:
git clone https://github.com/sigstore/sigstore-go.git
cd sigstore-go
git checkout 8ca80c47ef03d26ebf174db7c296700b075b2c16Apply the [patch] containing the test case and associated materials:
git apply sigstore-go-public-key-validity-test.patchRun the test:
go test ./pkg/verify -run TestPublicKeyValidityCheckedAgainstSignedTimestampOn vulnerable code, the test fails because verification succeeds even though the trusted ExpiringKey is not valid at the signed timestamp:
--- FAIL: TestPublicKeyValidityCheckedAgainstSignedTimestamp
signed_entity_test.go:602:
Error: An error is expected but got nil.[patch]: https://github.com/user-attachments/files/28614520/sigstore-go-public-key-validity-test.patch
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-51665
GHSA-wqqc-jjcq-vfxm
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB