CVE-2026-48782 pydantic-ai: SSRF blocklist bypass via IPv4-compatible, SIIT/IVI, and local NAT64 IPv6 addresses (incomplete fix of CVE-2026-46678)

Medium 6.8 Published Updated

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.

PackageAffectedFixed in
pydantic-ai PyPIFrom 1.56.01.102.0, 2.0.0b3
pydantic-ai PyPIFrom 1.56.01.102.0
pydantic-ai PyPIFrom 1.56.01.102.0
pydantic-ai PyPIFrom 2.0.0b12.0.0b3
pydantic-ai PyPIFrom 2.0.0b12.0.0b3
pydantic-ai-slim PyPIFrom 1.56.01.102.0, 2.0.0b3
4 more packages
pydantic-ai-slim PyPIFrom 1.56.01.102.0
pydantic-ai-slim PyPIFrom 1.56.01.102.0
pydantic-ai-slim PyPIFrom 2.0.0b12.0.0b3
pydantic-ai-slim PyPIFrom 2.0.0b12.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.

Sources

Also known as GHSA-cg7w-rg45-pc59, PYSEC-2026-2977, PYSEC-2026-2981, ROOT-APP-PYPI-CVE-2026-48782.

Is CVE-2026-48782 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free