Skip to main content

sigstore-js EUVDEUVD-2026-43960

| CVE-2026-59891 CRITICAL
Insufficiently Protected Credentials (CWE-522)
2026-07-14 GitHub_M GHSA-pf56-329r-95rw
9.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register registry name colliding by substring
  2. Delivery
    Lure victim to target attacker registry
  3. Exploit
    sigstore-js substring-matches victim credential
  4. Execution
    Credentials transmitted to attacker endpoint
  5. Impact
    Reuse 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

sigstore-js < 0.7.1

Affected Packages

npm @sigstore/oci fix: 0.7.1
euvd sigstore_js fix: 0.7.1

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

Vendor (GitHub_M) PRIMARY 9.6 CRITICAL
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
vuln.today AI 5.3 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Jul 14, 2026 - 23:21 EUVD
CVE Published
Jul 14, 2026 - 16:54 cve.org
CRITICAL 9.6

DescriptionCVE.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.

Executive ViewAI

Why It Matters

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.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Medium
sigstore-js is used in supply-chain signing, but @sigstore/oci registry helper is narrower
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Very High

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +48
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2022-35929 CRITICAL POC
9.8 Aug 04

cosign is a container signing and verification utility. Rated critical severity (CVSS 9.8), this vulnerability is remote

CVE-2024-29903 HIGH POC
7.5 Apr 10

Cosign provides code signing and transparency for containers and binaries. Rated high severity (CVSS 7.5), this vulnerab

CVE-2026-22703 MEDIUM POC
5.5 Jan 10

Cosign's bundle verification mechanism fails to properly validate that embedded Rekor entries reference the correct arti

CVE-2022-36056 MEDIUM POC
5.5 Sep 14

Cosign is a project under the sigstore organization which aims to make signatures invisible infrastructure. Rated medium

CVE-2023-46737 MEDIUM POC
5.3 Nov 07

Cosign is a sigstore signing tool for OCI containers. Rated medium severity (CVSS 5.3), this vulnerability is remotely e

CVE-2022-35930 HIGH
8.8 Aug 04

PolicyController is a utility used to enforce supply chain policy in Kubernetes clusters. Rated high severity (CVSS 8.8)

CVE-2026-24122 LOW POC
3.7 Feb 19

Cosign provides code signing and transparency for containers and binaries. [CVSS 3.7 LOW]

CVE-2026-31830 HIGH
7.5 Mar 10

Sigstore-ruby versions before 0.2.3 fail to properly validate artifact digests when verifying DSSE bundles with in-toto

CVE-2024-45395 HIGH
7.5 Sep 04

sigstore-go, a Go library for Sigstore signing and verification, is susceptible to a denial of service attack in version

CVE-2024-29902 MEDIUM
5.9 Apr 10

Cosign provides code signing and transparency for containers and binaries. Rated medium severity (CVSS 5.9), this vulner

CVE-2026-39395 MEDIUM
5.3 Apr 07

Cosign verify-blob-attestation incorrectly validates attestation signatures and predicate types in versions before 3.0.6

CVE-2023-47122 MEDIUM
5.3 Nov 10

Gitsign is software for keyless Git signing using Sigstore. Rated medium severity (CVSS 5.3), this vulnerability is remo

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy