Quick answers
- Is CVE-2026-107289 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-107289 being exploited in the wild.
- How severe is CVE-2026-107289?
- Medium severity, with a CVSS score of 6.8, published 8 October 2026.
- Which products and versions are affected?
- pydantic-ai (PyPI) ECOSYSTEM:introduced=1.56.0,fixed=1.107.6,introduced=2.0.0b1,fixed=2.44.0; pydantic-ai-slim (PyPI) ECOSYSTEM:introduced=1.56.0,fixed=1.107.6,introduced=2.0.0b1,fixed=2.44.0.
- Is there a fix for CVE-2026-107289?
- Yes. pydantic-ai (PyPI): upgrade to 2.44.0 or later; pydantic-ai-slim (PyPI): upgrade to 2.44.0 or later. Until then: Reject URL hosts containing the percent character (`%`) before constructing FileUrl or configuring web_fetch_tool if the URL could be influenced by untrusted input, or avoid opting into local network access entirely for untrusted URLs. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-107289 attacked?
- It is attacked over the network, in a software library.
- Am I affected by CVE-2026-107289?
- Check whether you run Pydantic AI, pydantic-ai (PyPI) or pydantic-ai-slim (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
How to fix
- pydantic-ai (PyPI): upgrade to 2.44.0 or later
pip install "pydantic-ai>=2.44.0" - pydantic-ai-slim (PyPI): upgrade to 2.44.0 or later
pip install "pydantic-ai-slim>=2.44.0"
Reject URL hosts containing the percent character (`%`) before constructing FileUrl or configuring web_fetch_tool if the URL could be influenced by untrusted input, or avoid opting into local network access entirely for untrusted URLs.
Technical details
The vulnerability exploits incomplete IPv6 zone identifier handling in the cloud-metadata blocklist checks. Python's IPv6Address class treats zone identifiers as part of the address for equality and hashing, so a blocked address like `fd00:ec2::254%251` does not match the blocklist entry for `fd00:ec2::254`. The network stack ignores zone identifiers for non-link-local destinations, allowing the request to reach the metadata endpoint. The issue affects only IPv6-enabled cloud environments and requires the application to enable `force_download='allow-local'` or `web_fetch_tool(allow_local_urls=True)` with untrusted input.
Affected products
- Pydantic Pydantic AI
Identifiers
- CVE-2026-107289
- GHSA-vmxc-h2x2-jmf3
- PYSEC-2026-4282
- PYSEC-2026-4291
Timeline
- 2026-10-08: disclosed