Skip to content
Heist/ feed
UnratedFix available

oras-go: Blind SSRF via unvalidated Link header URL in pagination allows internal network probing

Type: advisorySource: OSV1 source record

## Summary oras-go's pagination helper `parseLink()` in `registry/remote/utils.go` follows the `Link` response header from a registry without validating the URL's host or scheme. When a malicious registry returns a `Link` header containing an absolute URL pointing to an arbitrary host (e.g., a cloud metadata endpoint), the client makes GET requests to that host from the victim's network. This affects all pagination-based listing operations: Tags, Referrers, and Repositories (catalog). ## Root Cause `parseLink()` at `registry/remote/utils.go:54` calls `resp.Request.URL.Parse(link)` which, for absolute URLs, returns the absolute URL unchanged. The result is passed directly to the next pagination loop iteration where `http.NewRequestWithContext()` creates a GET request to the attacker-specified URL. No host comparison, scheme validation, or IP filtering exists between `parseLink` output and the HTTP request. ## Affected Code Paths - `registry/remote/repository.go:Tags()` calls `parseLink()` for next page URL - `registry/remote/repository.go:Referrers()` calls `parseLink()` for next page URL - `registry/remote/registry.go:Repositories()` calls `parseLink()` for next page URL ## Impact **Blind SSRF from the victim's network.** A malicious registry operator can force any oras-go client that lists tags, referrers, or repositories to issue GET requests to arbitrary internal endpoints: - Cloud instance metadata endpoints for service discovery and IAM role enumeration - Internal HTTP s

Announced Source revision 1
Original source ↗

GHSA-h7vf-4x9w-h99v

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-h7vf-4x9w-h99v

oras.land/oras-go/v2

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
2.6.2

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "2.6.2"
          }
        ]
      }
    ],
    "package": {
      "name": "oras.land/oras-go/v2",
      "purl": "pkg:golang/oras.land/oras-go/v2",
      "ecosystem": "Go"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-h7vf-4x9w-h99v/GHSA-h7vf-4x9w-h99v.json",
      "last_known_affected_version_range": "<= 2.6.1"
    }
  }
]
Related CVEs
CVE-2026-85732

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Event
#63907 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement