Skip to main content
← All vulnerabilities
CVE-2026-107288GHSA-22H6-QM39-V87J

Pydantic AI: web_fetch_tool blocked_domains bypass via a hostname the resolver normalizes differently

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 1.107.6, 2.44.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • pydantic pydantic-ai

    From 1.77.0 · fixed in 1.107.6; From 2.0.0b1 · fixed in 2.44.0

  • pydantic pydantic-ai-slim

    From 1.77.0 · fixed in 1.107.6; From 2.0.0b1 · fixed in 2.44.0

References 9

GitHub · pydantic/pydantic-ai