An IPv6 string can be a translation wrapper around a restricted IPv4 destination. The Fetch validation did not inspect the embedded destination in the documented prefix, so it could authorize a URL whose translated socket would reach a forbidden service. primary evidence documents the logic gap separately from the IDNA mismatch case. The supplied…
Inspect the ClaimsCase · DiggingBeagle record
MCP Fetch egress policy missed IPv4 addresses embedded in NAT64
The Fetch private-IP classifier treated a NAT64 IPv6 address as public although it encoded the IPv4 metadata-service address; actual exploitability depends on NAT64 routing.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- Remediation
- patch available
- AI role
- AGAINST AI
Basis and provenance
Local classification test; actual external-to-metadata network hop not demonstrated. The impact band remains unknown: available evidence does not establish actual deployed victim outcomes or a comparable measured loss.
Assessed Oct 26, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-CP20-MCP-FETCH-NAT64 · CLM-CP20-ENRICH-MCP-FETCH-NAT64 · MCP Fetch ignores well-known NAT64 embedded private IPv4
At a glance
The supplied reproduction was a classifier test. It does not demonstrate successful cloud-metadata theft on a network lacking DNS64/NAT64 translation.
Limits and uncertaintyFull account
An IPv6 string can be a translation wrapper around a restricted IPv4 destination. The Fetch validation did not inspect the embedded destination in the documented prefix, so it could authorize a URL whose translated socket would reach a forbidden service. primary evidence documents the logic gap separately from the IDNA mismatch case.
The supplied reproduction was a classifier test. It does not demonstrate successful cloud-metadata theft on a network lacking DNS64/NAT64 translation.
Egress checks need to classify translated endpoints and enforce the final socket destination. Fixing generic private IPv4 parsing without NAT64 cases is incomplete.
This is a different mechanism from the IDNA case: the URL can contain one syntactically valid IPv6 address that embeds a private or link-local IPv4 destination in 64:ff9b::/96. The server classified the wrapper as public without examining its low 32 bits, while actual reachability requires a NAT64/DNS64 egress translator. The advisory includes a classifier bypass, not an independently observed request to a real metadata service. Version 2026.10.24 adds the missing network classification; operators still need to enforce actual outgoing socket policy.
Claims & evidence
CLM-CP20-MCP-FETCH-NAT64The advisory demonstrates a classification bypass for the well-known 64:ff9b::/96 prefix carrying a private/link-local IPv4 address, with routing as a stated precondition.supported
Basis: reported finding
- supportsMCP Fetch ignores well-known NAT64 embedded private IPv4role not specified
NAT64 address classification; routing precondition; remediation
CLM-CP20-ENRICH-MCP-FETCH-NAT64GHSA-66qx-2266-pmj6 demonstrates that an embedded link-local IPv4 address in 64:ff9b::/96 passed the MCP Fetch public-address classifier, but it makes NAT64 routing a prerequisite for reaching the IPv4 target.supported
Basis: reported finding
- supportsMCP Fetch ignores well-known NAT64 embedded private IPv4role not specified
Summary; 64:ff9b::/96 classifier reproduction and DNS64/NAT64 routing prerequisite
Unknowns and contradictions
- The supplied reproduction was a classifier test. It does not demonstrate successful cloud-metadata theft on a network lacking DNS64/NAT64 translation.
Sources and citation
Material revision history
- Oct 26, 2026 · Canonical change recorded · new in release · revision 193