Vulnerability · Published Oct 8, 2026 · Assigned by GitHub_M
CVE-2026-107290Pydantic AI: Event loop blocked by quadratic title extraction in `web_fetch`
Medium 6.5
In plain English
A medium-severity regular-expression denial of service in pydantic-ai from pydantic. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.5% (higher than 44% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official 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 process server-controlled responses with quadratic title extraction, whitespace normalization, and ordered-list numbering. An attacker-controlled page of modest size can therefore block the event loop for an extended period, stalling other agent runs and requests, while unsupported codecs or excessive HTML or JSON nesting can abort an individual run. This issue is fixed in versions 1.107.6 and 2.44.0.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| PyPI | pydantic-ai | 1.107.6 | GHSA-fpf4-vwcp-v4hp |
| PyPI | pydantic-ai | 2.44.0 | GHSA-fpf4-vwcp-v4hp |
| PyPI | pydantic-ai | 1.107.6, 2.44.0 | PYSEC-2026-4277 |
| PyPI | pydantic-ai-slim | 1.107.6 | GHSA-fpf4-vwcp-v4hp |
| PyPI | pydantic-ai-slim | 2.44.0 | GHSA-fpf4-vwcp-v4hp |
| PyPI | pydantic-ai-slim | 1.107.6, 2.44.0 | PYSEC-2026-4286 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| pydantic | pydantic-ai | >= 1.77.0, < 1.107.6>= 2.0.0b1, < 2.44.0 |
| pydantic | pydantic-ai-slim | >= 1.77.0, < 1.107.6>= 2.0.0b1, < 2.44.0 |
Weakness: CWE-1333 · Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
References
- https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-fpf4-vwcp-v4hp x_refsource_CONFIRM
- https://github.com/pydantic/pydantic-ai/pull/8397 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/pull/8399 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/pull/8418 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/pull/84332 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/pull/8434 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/commit/2faa6181d8a17d83bc9516d035c5270db8730fa0 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/commit/9cdc952e4c3319e85a3e04f2de49fbbb765bd38b x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/commit/a93ea5226be1e93ae13131ae3f22287190411389 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/commit/c3fd1cc1f15fdbf750d78e4e3ec1e8b4d6a3d920 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/commit/fb92ccfc3ca2735dab877e2ed73856681bf72ad1 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/releases/tag/v1.107.6 x_refsource_MISC
- https://github.com/pydantic/pydantic-ai/releases/tag/v2.44.0 x_refsource_MISC