CVE-2026-48782 pydantic-ai: SSRF blocklist bypass via IPv4-compatible, SIIT/IVI, and local NAT64 IPv6 addresses (incomplete fix of CVE-2026-46678)
Attackers can bypass SSRF protections to access cloud metadata and steal IAM credentials via IPv6 transition forms in Pydantic AI.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-48782?
CVE-2026-48782 is a medium-severity server-side request forgery vulnerability in pydantic-ai, published on 16 Jun 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. In versions 1.56.0 through 1.101.0, 2.0.0b1, and 2.0.0b2, the cloud-metadata blocklist could be bypassed by encoding the metadata IP in an IPv6 transition form that the previous fix, CVE-2026-46678, did not decode, exposing cloud IAM short-term credentials. The previous remediation decoded only IPv4-mapped IPv6, 6to4, and the NAT64 well-known prefix, so the metadata guarantee did not hold for the remaining transition forms: IPv4-compatible IPv6 (::a.b.c.d), the NAT64 RFC 8215 local-use prefix (64:ff9b:1::/48), operator-chosen NAT64 prefixes, and ISATAP. The IPv6 wrapper is then delivered to the underlying IPv4 metadata endpoint. This occurs when an application using Pydantic AI opts a URL into force_download='allow-local' (which disables the default block on private/internal IPs) and runs on a network that actually routes the affected IPv6 transition forms: NAT64-configured networks (IPv6-only or dual-stack-with-NAT64 deployments, including some Kubernetes setups) for the NAT64 variants, or networks with an ISATAP tunnel for ISATAP. A standard dual-stack cloud VM or container does not route these forms and is not affected in practice. The IPv4-compatible and Teredo variants are deprecated and addressed as defense-in-depth. This is an incomplete fix of GHSA-cqp8-fcvh-x7r3 / CVE-2026-46678 (itself a follow-up to CVE-2026-25580). This issue has been fixed in version 2.0.0b3.
Weakness: CWE-918
Which versions are affected by CVE-2026-48782?
10 open source packages ship an affected version, including pydantic-ai and pydantic-ai-slim. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
pydantic-ai PyPI | From 1.56.0 | 1.102.0, 2.0.0b3 |
pydantic-ai PyPI | From 1.56.0 | 1.102.0 |
pydantic-ai PyPI | From 1.56.0 | 1.102.0 |
pydantic-ai PyPI | From 2.0.0b1 | 2.0.0b3 |
pydantic-ai PyPI | From 2.0.0b1 | 2.0.0b3 |
pydantic-ai-slim PyPI | From 1.56.0 | 1.102.0, 2.0.0b3 |
4 more packages
pydantic-ai-slim PyPI | From 1.56.0 | 1.102.0 |
pydantic-ai-slim PyPI | From 1.56.0 | 1.102.0 |
pydantic-ai-slim PyPI | From 2.0.0b1 | 2.0.0b3 |
pydantic-ai-slim PyPI | From 2.0.0b1 | 2.0.0b3 |
Products include Pydantic Pydantic Ai.
How do I fix CVE-2026-48782?
Upgrade pydantic-ai to a fixed version for your release line: 1.102.0 or 2.0.0b3.
Upgrade, and send outbound requests through an allow-list that blocks internal addresses. More about Server-side request forgery.
Is CVE-2026-48782 being exploited?
There is no known exploitation of CVE-2026-48782 in the wild and no public exploit code.
Other vulnerabilities in pydantic-ai
- CVE-2026-25580 Pydantic AI Affected by Server-Side Request Forgery (SSRF) in URL Download Handling
- CVE-2026-107295 Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint
- CVE-2026-107286 Pydantic AI: Concurrency-limited models can keep their slot when a streamed request ends early
- CVE-2026-25640 Pydantic AI affected by Stored XSS via Path Traversal in Web UI CDN URL
- CVE-2026-107289 Pydantic AI: SSRF cloud-metadata blocklist bypass via IPv6 zone identifiers
Sources
Also known as GHSA-cg7w-rg45-pc59, PYSEC-2026-2977, PYSEC-2026-2981, ROOT-APP-PYPI-CVE-2026-48782.