CVE-2026-118763: @sigstore/oci sends the registry Authorization header to a cross-host blob-upload Location
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.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
@sigstore/ocito a version that resolves this vulnerability.Fixed in 0.7.2
Event History
Frequently Asked Questions
Who is exposed to credential theft?
Users of affected sigstore-js versions who push an artifact through attachArtifactToImage() to a malicious or compromised registry are exposed. The registry can supply a blob-upload Location pointing to an attacker-controlled host.
What does an attacker need to exploit this issue?
An attacker needs control of, or the ability to compromise, the registry used for the artifact push and must return a cross-host blob-upload Location. No authentication privileges are required of the attacker, but the victim must interact with the supplied registry and approve the action.
Which credentials can be disclosed?
The attacker-controlled host can receive the registry bearer token, Basic credentials, Docker configuration headers, or custom authentication headers. The leak occurs because those headers were configured as defaults on a shared HTTP client and sent with a new explicit PUT request.
Are current releases affected?
Version 0.7.2 fixes the issue by separating registry credentials from client-wide defaults and sending them only to the registry origin. Versions prior to 0.7.2 are affected.