CVE-2026-107288: Pydantic AI: web_fetch_tool blocked_domains bypass via a hostname the resolver normalizes differently
Vulnerability summary
CVE-2026-107288 is a low (CVSS 3.7) Server-Side Request Forgery vulnerability in pydantic pydantic_ai. EPSS estimates a 0.37% chance of exploitation in the next 30 days, higher than 30.7% of scored vulnerabilities.
Not severe (CVSS 3.7, network access); no exploitation reported by the 5 checked sources
Source freshness unavailable
How is this decided?Timeline
- 08-10-2026PublishedVulnerability first disclosed.
- 08-10-2026Last modifiedVulnerability information updated.
Description
Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.6 and 2.44.0, the local web_fetch_tool and the WebFetch local fallback compare blocked_domains entries with a URL hostname before both values are normalized to the form used by getaddrinfo. An attacker-influenced model can use an equivalent IDNA spelling, non-ASCII label separator, case variation, or trailing root label that resolves to a blocked host but does not match the configured string, causing the application to fetch that host with its own privileges. allowed_domains fails closed for unmatched spellings, and private-IP and cloud-metadata protections remain effective. This issue is fixed in versions 1.107.6 and 2.44.0.
CVSS metrics
2 scores · 2 sources · 1 version- NVDNIST3.7LowCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
EPSS trend
Probability
0.37%
Chance of exploitation in the next 30 days
Percentile
31%
Versus all other CVEs
30-day change
Change unavailable
Change unavailable
Known exploited
Compare KEV catalogsNot in the CISA KEV catalog.
Not in the ENISA CNW catalog.
Not in the CIRCL catalog.
Public exploits
0 foundNo public exploits indexed.
Weaknesses
CWE · root cause- CWE-918Server-Side Request ForgeryThe web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
- CWE-1289Improper Validation of Unsafe Equivalence in InputThe product receives an input value that is used as a resource identifier or other type of reference, but it does not validate or incorrectly validates that the input is equivalent to a potentially-unsafe value.
Affected systems
Known conditions: network-reachable, no authentication, no user interaction (CVSS vector). Other conditions: not stated in public data.
Pydantic3 products
- pydantic_ai≥ 1.77.0, < 1.107.6 | ≥ 2.0.0, < 2.44.0
- pydantic-ai≥ 1.77.0, < 1.107.6 | ≥ 2.0.0b1, < 2.44.0
- pydantic-ai-slim≥ 1.77.0, < 1.107.6 | ≥ 2.0.0b1, < 2.44.0
1 vendor · 3 products
References
9 links- github.com/pydantic/pydantic-ai/security/advisories/GHSA-22h6-qm39-v87jX Refsource CONFIRMMitigationVendor Advisory
- github.com/pydantic/pydantic-ai/commit/490335f8e2322e143a79337ddca9410e0176c812X Refsource MISCPatch
- github.com/pydantic/pydantic-ai/commit/a9dab92099d0ef9d5d4aa34ccac8a6f1b0e51284X Refsource MISCPatch
- github.com/pydantic/pydantic-ai/commit/c1f212a084cbfa0012f2044cdb4731d214b3b983X Refsource MISCPatch
- github.com/pydantic/pydantic-ai/releases/tag/v1.107.6X Refsource MISCPatchRelease NotesVendor Advisory
- github.com/pydantic/pydantic-ai/releases/tag/v2.44.0X Refsource MISCPatchRelease NotesVendor Advisory