Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister registry name colliding by substring
-
DeliveryLure victim to target attacker registry
-
Exploitsigstore-js substring-matches victim credential
-
ExecutionCredentials transmitted to attacker endpoint
-
ImpactReuse stolen registry credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
|
| Exploitation Conditions | Exploitation requires all of the following: (1) the victim has valid Docker registry credentials stored in their Docker config file that getRegistryCredentials() reads; (2) an attacker-controllable target registry hostname exists that has a substring relationship with one of those configured auth keys - either the target is a substring of a configured key (e.g. 'cr.io' within 'ghcr.io') or a configured key is a substring of the target (e.g. '127.0.0.1:5000' within 'victim.127.0.0.1:5000'); and (3) the victim is induced to run a sigstore-js/@sigstore/oci operation (push/pull of signing artifacts) against that attacker-named registry (UI:R - user/pipeline interaction is required). Limiting factors: the flaw is not exploitable without a pre-existing configured credential that happens to be substring-compatible with an attacker-chosen name, and it requires the victim to actively target the attacker's registry, so it is not a passive, fully-automatic exposure. Authentication to the victim's own registry is not required of the attacker (PR:N), but the victim must have credentials configured for the substring-related registry. |
| Impact | The signals conflict and warrant scrutiny. The published CVSS 3.1 base score is 9.6 (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H), but the described behavior is fundamentally a credential-disclosure bug (CWE-522), so the I:H and A:H components appear overstated - the direct, primary impact on the vulnerable system is confidentiality (leaked credentials), with integrity/availability harm only as a downstream, second-order consequence if the stolen credentials are reused. AC:L is also debatable: successful exploitation requires that a substring relationship happen to exist between an attacker-controllable registry name and a credential the victim has actually configured, plus victim interaction (UI:R) to run the operation against the attacker's registry - conditions that argue for higher attack complexity. No EPSS score was provided, this is not in CISA KEV (no confirmed active exploitation), and no POC was supplied - only the fixing commit and release. Net: this is a genuine supply-chain credential-hygiene flaw worth prompt patching in any pipeline using @sigstore/oci, but the real-world risk is materially lower than the 9.6 implies; treat it as a moderate-priority patch rather than an emergency, and verify the inflated I/A metrics against your own threat model. |
| Exploit ScenarioDerived | An attacker publishes or names a registry whose hostname has a substring relationship with a registry the victim has authenticated to (for example the attacker controls 'cr.io' while the victim has stored credentials for 'ghcr.io', or the attacker uses 'victim.127.0.0.1:5000' where the victim configured '127.0.0.1:5000'). The attacker then induces the victim's CI/build pipeline or developer to run a sigstore-js OCI operation targeting the attacker's registry; because selection is a substring match, the victim's real ghcr.io credentials are sent to the attacker's endpoint. No public POC was provided, but the fixing commit's added tests concretely demonstrate the substring-collision cases, and the AV:N/UI:R vector means exploitation is network-based but hinges on getting the victim to run the operation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 14, 2026
Credential leakage in sigstore-js (specifically the @sigstore/oci package) before 0.7.1 allows Docker registry credentials to be transmitted to the wrong registry because getRegistryCredentials() matched configured auth keys against the target registry using a substring check instead of an exact host match. An attacker who can induce a victim to push or pull signatures/attestations against an attacker-named registry whose hostname has a substring relationship with a legitimately configured registry (e.g. 'cr.io' vs 'ghcr.io', or 'victim.127.0.0.1:5000' vs '127.0.0.1:5000') can capture the victim's stored registry credentials. There is no public exploit identified at time of analysis, and this is not listed in CISA KEV; the underlying weakness (CWE-522) is confirmed and fixed by the vendor in @sigstore/oci 0.7.1.
RemediationAI
Vendor-released patch: upgrade @sigstore/oci to 0.7.1 or later, which replaces the substring credential match with exact canonical host[:port] matching; update your lockfiles and rebuild any tooling that pulls sigstore-js transitively. See the advisory GHSA-pf56-329r-95rw and the release at https://github.com/sigstore/sigstore-js/releases/tag/@sigstore/oci@0.7.1. If you cannot upgrade immediately, reduce exposure by ensuring the Docker config used by sigstore-js only contains credentials for registries you actually push/pull to, and remove or scope down any broadly-privileged registry tokens so a mis-selected credential is low-value; where feasible, run signing operations with a dedicated, minimal ~/.docker/config.json (or an isolated DOCKER_CONFIG directory) containing only the single registry credential needed for that job, and avoid pointing sigstore-js operations at untrusted or attacker-supplied registry hostnames. The trade-off of the isolated-config approach is added operational overhead per pipeline and the need to manage separate credential stores; it does not fully eliminate the substring flaw but shrinks the blast radius until 0.7.1 is deployed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is @sigstore/oci, part of the sigstore-js JavaScript libraries used to interact with Sigstore services and to push/pull signing artifacts to and from OCI (Open Container Initiative) registries. To authenticate to a registry, getRegistryCredentials() reads the local Docker config file (~/.docker/config.json) and picks an 'auths' entry. The root cause (CWE-522, Insufficiently Protected Credentials) is that credential selection used a substring/containment test: any configured auth key that merely contained the target registry string was treated as a match. Because registry hostnames frequently share substrings ('cr.io' is contained in 'ghcr.io'; a configured host can also be a substring of an attacker-chosen host like 'victim.127.0.0.1:5000'), the wrong credentials could be selected and sent over the network to an unintended registry. The fix replaces this with canonical exact host[:port] matching, adds a canonicalizeRegistry() helper that strips scheme/path, and normalizes Docker Hub aliases (docker.io, index.docker.io, registry-1.docker.io, https://index.docker.io/v1/) to a single canonical host. The only CPE provided is cpe:2.3:a:sigstore:sigstore-js:*:*:*:*:*:*:*:*.
Know when Sigstore gets its next vulnerability
- 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:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Network-delivered but needs a substring-colliding configured credential and victim action (AC:H, UI:R); primary impact is credential confidentiality only (C:H, I:N/A:N), no scope change on the vulnerable system.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 0.7.1, getRegistryCredentials() reads credentials from the Docker config file and selects an entry by checking whether any configured auth key contains the target registry string. Because this is a substring match rather than an exact host match, credentials configured for one registry can be selected for and transmitted to a different registry whose hostname has a substring relationship with a configured auth key. This issue is fixed in version 0.7.1.
Articles & Coverage 1
Executive ViewAI
A critical vulnerability in sigstore-js (@sigstore/oci) allows Docker registry credentials to be leaked to attackers who register registry domains similar to legitimate ones, threatening containerized application supply chains. Affected organizations risk unauthorized access to private image repositories and potential injection of malicious code during deployment. The attack is particularly dangerous because it operates silently within CI/CD workflows and remains undetected until credentials are misused.
Apply vendor 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.
cosign is a container signing and verification utility. Rated critical severity (CVSS 9.8), this vulnerability is remote
Cosign provides code signing and transparency for containers and binaries. Rated high severity (CVSS 7.5), this vulnerab
Cosign's bundle verification mechanism fails to properly validate that embedded Rekor entries reference the correct arti
Cosign is a project under the sigstore organization which aims to make signatures invisible infrastructure. Rated medium
Cosign is a sigstore signing tool for OCI containers. Rated medium severity (CVSS 5.3), this vulnerability is remotely e
PolicyController is a utility used to enforce supply chain policy in Kubernetes clusters. Rated high severity (CVSS 8.8)
Cosign provides code signing and transparency for containers and binaries. [CVSS 3.7 LOW]
Sigstore-ruby versions before 0.2.3 fail to properly validate artifact digests when verifying DSSE bundles with in-toto
sigstore-go, a Go library for Sigstore signing and verification, is susceptible to a denial of service attack in version
Cosign provides code signing and transparency for containers and binaries. Rated medium severity (CVSS 5.9), this vulner
Cosign verify-blob-attestation incorrectly validates attestation signatures and predicate types in versions before 3.0.6
Gitsign is software for keyless Git signing using Sigstore. Rated medium severity (CVSS 5.3), this vulnerability is remo
EUVD-2026-43960
GHSA-pf56-329r-95rw
NVD
CVE.org
EPSS
Exploit-DB