Skip to main content

@sigstore/oci EUVDEUVD-2026-113272

| CVE-2026-118763 HIGH
Insufficiently Protected Credentials (CWE-522)
2026-10-29 security-advisories@github.com GHSA-j63v-mwhm-56jx
7.4
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Victim pushes signed artifact via attachArtifactToImage()
  2. Delivery
    Malicious/compromised registry returns absolute cross-host blob-upload Location
  3. Exploit
    Client PUTs blob to attacker host with default Authorization header attached
  4. Execution
    Attacker captures registry bearer token or raw Basic credentials
  5. Impact
    Attacker reuses stolen credentials against the registry account

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 the victim to actively push a signed artifact or attestation through @sigstore/oci's attachArtifactToImage() (reachable via OCIImage.addArtifact() -> RegistryClient.signIn() -> uploadBlob()) to an OCI registry that is malicious, compromised, or impersonated, and that returns an absolute blob-upload Location header pointing to a different host than the registry. The leak occurs because signIn() installs the registry Authorization (Bearer token or Basic username:password) and Docker config headers as client-wide defaults via .defaults(), and uploadBlob() sends a fresh explicit PUT to the absolute Location with no check that its host or scheme matches the registry origin; the HTTP layer's cross-host redirect stripping does not apply because this PUT is a new request, not a followed redirect. Limiting factors: affects only @sigstore/oci <= 0.7.1; requires the user-initiated push (UI:R); and requires the attacker to control or impersonate the registry's response - it is not exploitable against an honest registry.

Impact

This is a credential-disclosure flaw (CWE-522) in @sigstore/oci rated 7.4 by the input CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N, but the signals conflict on attack complexity: the mechanism requires a malicious, compromised, or impersonated OCI registry that returns an absolute cross-host blob-upload Location, which is attacker-situational rather than a condition the attacker freely controls, so the GHSA author's AC:H (6.8) is better defended than the input's AC:L - verify complexity with the vendor. No CISA KEV listing is present (not actively exploited per available data), and no EPSS probability was supplied, so widespread automated exploitation cannot be inferred from the data. There is no public exploit identified at time of analysis - the GHSA advisory is an explicitly source-verified trace, with its author stating no live push against a hostile registry was executed. Net: a genuine high-impact credential leak (registry bearer token or raw Basic username:password), but gated behind user interaction (an artifact push) and a hostile registry, consistent with the vuln.today 'this_week' decision label rather than an emergency; prioritize patching for anyone pushing artifacts to untrusted or redirect-capable registries.

Exploit ScenarioDerived

A developer uses a tool built on @sigstore/oci to push a signed artifact to an OCI registry via attachArtifactToImage(). A malicious or compromised registry responds to the blob-upload POST with an absolute Location header pointing to an attacker-controlled host; because signIn() installed the credential as a client-wide default header, uploadBlob() PUTs the blob to that host with the registry Authorization (bearer token or Basic username:password) and custom Docker headers still attached, handing the credential to the attacker. No working public exploit exists; the GHSA provides only a source-verified reachability trace. Attack complexity is effectively high since it depends on the registry returning a hostile cross-host Location.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
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 – Oct 29, 2026

Credential disclosure in @sigstore/oci 0.7.1 and earlier allows a malicious, compromised, or impersonated OCI registry to capture registry bearer tokens, Basic username:password pairs, or custom Docker auth headers when a user pushes a signed artifact or attestation through attachArtifactToImage(). The library installs registry credentials as client-wide defaults on the shared HTTP client and then issues a fresh PUT to an absolute blob-upload Location taken verbatim from the registry's response, without checking that host or scheme matches the registry origin; the HTTP layer's cross-host redirect stripping does not help because this is a new explicit request rather than a followed redirect. The input scores this 7.4 (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N), while this assessment rates attack complexity higher (AC:H, about 6.8) because the mechanism depends on an attacker-situational hostile or impersonated registry rather than a condition the attacker freely controls; no CISA KEV entry and no public exploit code were identified at time of analysis, though a source-level reproduction and reachability trace are published in the advisory.

RemediationAI

Vendor-released patch: @sigstore/oci 0.7.2 (release tag https://github.com/sigstore/sigstore-js/releases/tag/@sigstore/oci@0.7.2), which separates registry credentials from client-wide defaults and sends them only to the registry origin; the change is carried by commits b855f46cfe81f26481c6d3f4b333dfd00f2fd1b1 and e4ca65c3ab3c675456ab9b0bd04217ceccad3558 via pull request https://github.com/sigstore/sigstore-js/pull/1762, and the accompanying changeset also moves Docker credential selection to an exact host match. Upgrade all consumers of the package to 0.7.2 or later, including indirect dependencies pulled in by tooling that wraps attachArtifactToImage(). No vendor-documented workaround is published; the advisory's suggested direction (skip the credential when the upload Location host differs from the registry host, and require https) is delivered by the 0.7.2 design rather than as a configuration toggle, so no side-effect-free interim control exists. Until upgraded, exposure is confined to pushes against registries that are malicious, compromised or impersonated, so restricting pushes to registries whose blob-upload behavior is known and trusted reduces, but does not eliminate, the risk; note that this trade-off is a threat-model limitation rather than a verified mitigation. Consult https://github.com/sigstore/sigstore-js/security/advisories/GHSA-j63v-mwhm-56jx for the authoritative fix scope, and treat the AC:L versus AC:H scoring discrepancy as unresolved pending vendor confirmation.

Affected VersionsENISA

sigstore-js < 0.7.2

Affected Packages

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

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 flaw is a CWE-522 (insufficiently protected credentials) problem in packages/oci/src/registry.ts of the sigstore-js monorepo. RegistryClient.signIn() stores the credential using the make-fetch-happen/minipass-fetch .defaults() mechanism (Basic at roughly lines 126-128, Bearer at 145-147, plus creds.headers from the Docker config at line 104), so the Authorization header is attached to every request the shared client issues, not just registry-origin requests. uploadBlob() then reads the Location response header and builds the target with a ternary: a relative Location is anchored to #baseURL, but an absolute Location is passed to new URL() verbatim, so its host and scheme come entirely from the server's response. The subsequent PUT is an explicit new this.#fetch() call, so the fetch layer's cross-host Authorization stripping - which does protect the redirect-following HEAD earlier in uploadBlob() - never engages. The OCI distribution specification permits absolute upload Location values (registries routinely redirect blob storage to separate hosts), so a spec-compliant but hostile registry can steer the PUT to an attacker host while the default credential rides along. This is a residual of CVE-2026-59891 / GHSA-pf56-329r-95rw: that fix (commit 85c5838) only changed credential selection in credentials.ts from a substring match to an exact host match, and never constrained where registry.ts sends the credential.

Know when Docker 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) PRIMARY 7.4 HIGH
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
vuln.today AI 6.1 MEDIUM

AC:H because exploitation depends on an attacker-controlled/impersonated registry returning a hostile cross-host Location; UI:R for the required push; S:C and C:H as the leaked registry credential belongs to a different authority; no integrity/availability impact.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 18:03 EUVD
CVE Published
Oct 29, 2026 - 17:18 cve.org
HIGH 7.4

DescriptionCVE.org

sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 0.7.2, packages/oci/src/registry.ts contains a RegistryClient.signIn() method that stores registry Authorization and Docker configuration headers as defaults on a shared HTTP client, while RegistryClient.uploadBlob() sends a fresh PUT to an absolute blob-upload Location supplied by the registry without checking that its origin or scheme matches the registry. A malicious or compromised registry can therefore direct a user pushing an artifact through attachArtifactToImage() to an attacker-controlled host and receive the registry bearer token, Basic credentials, or custom authentication headers. Redirect-time header stripping does not prevent the leak because the cross-host PUT is a new explicit request rather than a followed redirect. This is a residual of CVE-2026-59891, whose fix changed credential selection in credentials.ts but did not constrain where credentials are sent from registry.ts. Version 0.7.2 fixes the issue by separating registry credentials from client-wide defaults and sending them only to the registry origin.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 npm packages depend on @sigstore/oci (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.7.2.

Technical POC Analysis

CWE-522 (Insufficiently Protected Credentials): registry credentials are attached to a request whose destination is chosen by the server.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-118763 is a high-severity credential disclosure flaw in the @sigstore/oci library (version 0.7.1 and earlier) that can expose registry authentication tokens and credentials when developers push signed artifacts via attachArtifactToImage(). A compromised or impersonated OCI registry could capture these secrets, potentially leading to supply chain compromise. Engineering and security teams using this library should prioritize remediation to prevent unauthorized access to container registries.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict artifact pushes to a list of trusted OCI registries, implement network monitoring for anomalous outbound requests to unknown hosts, use short-lived registry tokens and enforce least-privilege access, and consider temporarily disabling attachArtifactToImage() if not critical.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche sigstore OCI-attach npm library; narrow artifact-push user base
Threat Intel
1
1 source
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

37
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +37
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.

More in Docker

View all
CVE-2024-55964 CRITICAL POC
9.8 Mar 26

An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl

CVE-2019-5736 HIGH POC
8.6 Feb 11

runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac

CVE-2023-32077 HIGH POC
7.5 Aug 24

Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2023-5815 HIGH POC
8.1 Nov 22

The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post

CVE-2026-66384 MEDIUM POC
5.3 Aug 12

Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten

CVE-2014-9357 CRITICAL
10.0 Dec 16

Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build

CVE-2026-52806 CRITICAL POC
9.9 Jun 23

Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config

CVE-2025-14707 HIGH POC
8.9 Dec 15

Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system

CVE-2026-56274 HIGH POC
8.7 Jun 23

Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per

CVE-2026-34156 CRITICAL POC
9.9 Mar 30

Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l

CVE-2019-15752 HIGH POC
7.8 Aug 28

Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c

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