{"schema":"threatline.record/2","record":{"id":"CVE-2026-107288","aliases":["GHSA-22h6-qm39-v87j"],"summary":"Pydantic AI: web_fetch_tool blocked_domains bypass via a hostname the resolver normalizes differently","details":"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.","categories":["Unclassified"],"product":"pydantic-ai","vendor":"pydantic","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-107288","source_modified_at":"2026-10-08T17:28:53.801Z","fetched_at":"2026-10-23T18:48:36.087640Z","product":"pydantic-ai","vendor":"pydantic","versions":[{"version":">= 1.77.0, < 1.107.6","status":"affected"},{"version":">= 2.0.0b1, < 2.44.0","status":"affected"}],"defaultStatus":null},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-107288","source_modified_at":"2026-10-08T17:28:53.801Z","fetched_at":"2026-10-23T18:48:36.087640Z","product":"pydantic-ai-slim","vendor":"pydantic","versions":[{"version":">= 1.77.0, < 1.107.6","status":"affected"},{"version":">= 2.0.0b1, < 2.44.0","status":"affected"}],"defaultStatus":null}],"fixed_versions":[],"cvss":3.7,"severity":"Low","kev":{"listed":false},"epss":{"probability":0.00368,"percentile":0.29528,"score_date":"2026-10-23"},"published_at":"2026-10-08T15:18:40.047Z","modified_at":"2026-10-08T17:28:53.801Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-107288","fetched_at":"2026-10-23T18:48:36.087640Z","source_modified_at":"2026-10-08T17:28:53.801Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-107288","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-22h6-qm39-v87j","tags":["x_refsource_CONFIRM"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/8407","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/8409","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/8421","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/490335f8e2322e143a79337ddca9410e0176c812","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/a9dab92099d0ef9d5d4aa34ccac8a6f1b0e51284","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/c1f212a084cbfa0012f2044cdb4731d214b3b983","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v1.107.6","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v2.44.0","tags":["x_refsource_MISC"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"partial","assessed_at":"2026-10-08T17:28:31.014859Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":null,"confidence":"unknown","reviewed":false},"change_timestamp":"2026-10-08T17:28:53.801Z","content_hash":"8d9561bcc25bfc5de1c9cfd50c2fc7ef58bb2ce65d779e036240334f303ff2f8"}}
