Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim pushes signed artifact via attachArtifactToImage()
-
DeliveryMalicious/compromised registry returns absolute cross-host blob-upload Location
-
ExploitClient PUTs blob to attacker host with default Authorization header attached
-
ExecutionAttacker captures registry bearer token or raw Basic credentials
-
ImpactAttacker 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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 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
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
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.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.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- 1 npm packages depend on @sigstore/oci (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 0.7.2.
Articles & Coverage 1
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
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.
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
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.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
EUVD-2026-113272
GHSA-j63v-mwhm-56jx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB