Skip to main content

oras-go EUVDEUVD-2026-45264

| CVE-2026-50151 HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-07-01 https://github.com/oras-project/oras-go GHSA-jxpm-75mh-9fp7
7.5
CVSS 3.1 · Vendor: https://github.com/oras-project/oras-go
View

Attack ChainAIDerived

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

  1. Access
    Attacker controls or MITMs an OCI registry
  2. Delivery
    Victim oras-go client POSTs to start blob upload
  3. Exploit
    Registry returns cross-host attacker Location
  4. Execution
    Client PUTs to attacker host reusing Authorization
  5. Impact
    Credentials and blob captured, token replayed

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the victim's oras-go v2 client to perform a monolithic blob upload (push) where the responding registry is attacker-controlled, compromised, or on-path (MITM), because the malicious Location header returned to the POST is the exploitation primitive. The credential leak triggers specifically when the registry returns a cross-host Location (different scheme/host/port than the original request) and the client has an Authorization header set on the initial POST. Limiting factors: the attacker must influence the registry endpoint the client talks to (clients pinned to a single trusted TLS registry are not exploitable by an external party), credentials must actually be present on the request for there to be anything to leak, and the impact is confined to confidentiality (credential/blob disclosure and SSRF) - no integrity or availability impact. Per CVSS PR:N the flaw needs no attacker privileges on the victim, but it does depend on the victim initiating an upload to a hostile registry, so it is not fully unauthenticated-drive-by against arbitrary targets.

Impact

The signals are moderately but not uniformly high. The published CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5) treats this as a network, no-privilege, no-interaction confidentiality breach, which overstates ease: exploitation realistically requires the victim client to push to a registry the attacker controls or has compromised (or an on-path MITM), so a real precondition exists that the base vector does not capture - verify deployment context before treating this as trivially remote. There is no CISA KEV entry and no evidence of active or widespread exploitation; EPSS is not provided in the input. A reproduction harness (poc.zip) is described by the reporter, demonstrating the credential-forwarding behavior in a controlled setup, so feasibility is confirmed even though in-the-wild abuse is not. Net: a real, credential-exposing library flaw worth prompt patching for anyone pushing to untrusted or multi-tenant registries, but lower urgency for clients that only ever talk to a single trusted first-party registry over TLS.

Exploit ScenarioDerived

An attacker stands up (or compromises, or MITMs) an OCI registry and waits for a victim tool built on oras-go to push an artifact; the registry accepts the initial POST and returns a Location header pointing at an attacker-controlled host. oras-go follows that cross-host URL and replays the caller's Authorization credentials on the PUT, delivering the bearer/basic token - and the blob payload - to the attacker, who can then reuse the token against the legitimate registry. The reporter's poc.zip harness demonstrates exactly this with a fake registry returning a cross-host Location and a second server that records the received Authorization header.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 01, 2026

Credential leakage in oras-go v2 (oras.land/oras-go) lets a malicious or compromised OCI registry steal a client's Authorization credentials by returning a cross-host Location header during monolithic blob upload; oras-go follows the redirect and reuses the original bearer/basic credentials on the PUT to the attacker-controlled host, also yielding client-side SSRF to an arbitrary cross-host target. Any Go application that pushes artifacts using oras-go v2.6.0 (and likely earlier v2.x) is affected. Rated CVSS 7.5 (High); no CISA KEV listing and no public exploitation, but the reporter includes a local proof-of-concept reproduction harness (poc.zip), and a fixed release (v2.6.1) is available.

RemediationAI

Vendor-released patch: v2.6.1 - upgrade the oras.land/oras-go/v2 dependency to v2.6.1 or later (go get oras.land/oras-go/v2@v2.6.1 and rebuild), per GHSA-jxpm-75mh-9fp7, PR https://github.com/oras-project/oras-go/pull/1152, and commit https://github.com/oras-project/oras-go/commit/4683c46ef078091544f5f55fd25102f002806991. The fix validates the Location target (scheme, host, and effective port) against the original request and stops forwarding the Authorization header when the upload target changes host or scheme. If you cannot upgrade immediately, restrict oras-go clients to push only to trusted, first-party registries reached over TLS (avoid pushing to untrusted or user-supplied registry endpoints), and egress-filter outbound connections from build/CI hosts so the client cannot reach arbitrary cross-host destinations - the trade-off is that legitimate multi-registry or redirect-based upload topologies (e.g. registries that legitimately redirect blob PUTs to CDN/object-storage hosts) may break and require explicit allowlisting.

Affected VersionsENISA

oras-go < 2.6.1

Affected Packages

go oras.land/oras-go/v2 fix: 2.6.1
euvd oras_go fix: 2.6.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

oras-go is the Go SDK for ORAS (OCI Registry As Storage), used to push and pull artifacts to/from OCI-compliant container registries. During the OCI distribution monolithic blob upload flow, the client first issues a POST to obtain an upload session, then completes it with a PUT to the URL returned in the response Location header. The flaw (CWE-918, Server-Side Request Forgery) lives in registry/remote/repository.go:878-916 (blobStore.completePushAfterInitialPost): oras-go trusts the registry-controlled Location value without validating that its scheme, host, and effective port match the original request, and it blindly reuses the Authorization header from the POST on the follow-up PUT. Because the Location is fully attacker-controllable when the registry is malicious, the SDK can be steered to send credentials and blob data to any endpoint. Affected package per CPE: pkg:go/oras.land_oras-go_v2.

Know when Canonical 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 (https://github.com/oras-project/oras-go) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 5.9 MEDIUM

AC:H because the attacker must control or MITM the registry the client uploads to; PR:N/UI:N as no victim privilege or interaction beyond a normal push; C:H for credential leak, I/A:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
SUSE HIGH
Red Hat 5.9 MEDIUM

Primary rating from Vendor (https://github.com/oras-project/oras-go).

CVSS VectorVendor: https://github.com/oras-project/oras-go

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

DescriptionCVE.org

Summary

oras-go follows a registry-controlled Location header during the monolithic blob upload flow and reuses the Authorization header from the initial POST request for the subsequent PUT request. If a malicious registry returns a cross-host Location, oras-go can send the caller's credentials to an attacker-controlled endpoint.

Affected Versions

tested: v2.6.0 (commit 03243809936cce826494b5506f724c6dc11115b1, as-of 2026-01-24) range: unknown; likely affects earlier v2.x releases that include the same upload flow

Impact

Credential leak to an attacker-controlled endpoint and client-side ssrf to a cross-host target.

Affected Component

  • registry/remote/repository.go:878-916 (blobStore.completePushAfterInitialPost)

Reproduction

Attachments include poc.zip with a local-only harness (no real registry required). It runs a fake registry server that returns a cross-host Location and a second server that records whether it received Authorization.

bash
unzip -q -o poc.zip -d /tmp/poc
cd /tmp/poc/poc-F-ORAS-LOCATION-UPLOAD-001
make canonical
make control

Recommended Fix

  • validate Location before uploading (scheme + hostname + effective port) against the original request, or require an explicit opt-in allowlist for cross-host upload urls
  • never forward Authorization when the upload target changes host or scheme

references

  • security policy: https://github.com/oras-project/oras-go/security/policy
  • vulnerable code: registry/remote/repository.go (see blobStore.completePushAfterInitialPost)

Executive ViewAI

Why It Matters

oras-go v2, a Go library for managing OCI artifacts, contains a credential leakage vulnerability allowing attackers to intercept authentication tokens during registry interactions. Organizations using Go applications for artifact management face immediate risk of credential exposure and potential unauthorized access to internal systems and registries.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 62% exploitable
Prevalence
Medium
core Go SDK for ORAS/OCI artifacts, embedded in container tooling
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High

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.5%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2014-6271 CRITICAL POC
9.8 Sep 24

GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2016-3714 HIGH POC
8.4 May 05

The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.

CVE-2017-12617 HIGH POC
8.1 Oct 04

When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT

CVE-2016-8735 CRITICAL POC
9.8 Apr 06

Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8

CVE-2014-7169 CRITICAL POC
9.8 Sep 25

GNU Bash through 4.3 bash43-025 processes trailing strings after certain malformed function definitions in the values of

CVE-2014-0160 HIGH POC
7.5 Apr 07

The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe

CVE-2016-5195 HIGH POC
7.0 Nov 10

Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by lev

CVE-2013-2423 LOW POC
3.7 Apr 17

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 17 and earlier, and

CVE-2023-4911 HIGH POC
7.8 Oct 03

Local privilege escalation in the GNU C Library (glibc) dynamic loader ld.so allows unprivileged local users on affected

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Affected
SUSE Linux Enterprise Micro 5.5 Affected
SUSE Linux Enterprise Module for Containers 15 SP7 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP7 Affected

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