pydantic-ai: Pydantic AI: Excessive resource use when local web fetching converts nested HTML
What fixes it
- 1.107.7pydantic-ai, pipGitHub
- 2.52.0pydantic-ai, pipGitHub
- 1.107.7pydantic-ai-slim, pipGitHub
- 2.52.0pydantic-ai-slim, pipGitHub
- 1.107.7pydantic-ai, PyPIOSV
pip install "pydantic-ai>=1.107.7" - 2.52.0pydantic-ai, PyPIOSV
pip install "pydantic-ai>=2.52.0"
Show all 8 fixed versions
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Summary
Applications using Pydantic AI's local web-fetch tool can experience excessive CPU and memory use when it converts attacker-controlled HTML. An agent must fetch the affected page; provider-native web fetching is not affected.
Details
Nested block elements cause HTML-to-Markdown conversion to reprocess accumulated text at each level and can greatly expand the intermediate output. The response-body limit bounds downloaded bytes, while the returned-content limit is applied only after conversion. On current releases, conversion runs in a worker thread but can still consume substantial resources and delay other work in the process. Older releases performed conversion on the event loop.
Mitigation
Upgrade to a patched release of pydantic-ai or pydantic-ai-slim. If you cannot upgrade yet, avoid using local web fetching for attacker-controlled HTML.
Text from GitHub Advisory Database
Affected versions 196
- pydantic-ai, pip>= 1.77.0, < 1.107.7GitHub
- pydantic-ai, pip>= 2.0.0b1, < 2.52.0GitHub
- pydantic-ai-slim, pip>= 1.77.0, < 1.107.7GitHub
- pydantic-ai-slim, pip>= 2.0.0b1, < 2.52.0GitHub
- pydantic-aiaffected: >= 1.77.0, < 1.107.7CVE List
- pydantic-aiaffected: >= 2.0.0b1, < 2.52.0CVE List
- pydantic-ai-slimaffected: >= 1.77.0, < 1.107.7CVE List
- pydantic-ai-slimaffected: >= 2.0.0b1, < 2.52.0CVE List
- pydantic-ai, PyPIfrom 1.77.0, fixed in 1.107.7OSV
- pydantic-ai, PyPI1.100.0OSV
- pydantic-ai, PyPI1.101.0OSV
- pydantic-ai, PyPI1.102.0OSV
- pydantic-ai, PyPI1.103.0OSV
- pydantic-ai, PyPI1.104.0OSV
- pydantic-ai, PyPI1.105.0OSV
- pydantic-ai, PyPI1.106.0OSV
- pydantic-ai, PyPI1.107.0OSV
- pydantic-ai, PyPI1.107.1OSV
- pydantic-ai, PyPI1.107.2OSV
- pydantic-ai, PyPI1.107.4OSV
- pydantic-ai, PyPI1.107.5OSV
- pydantic-ai, PyPI1.107.6OSV
- pydantic-ai, PyPI1.77.0OSV
- pydantic-ai, PyPI1.78.0OSV
- pydantic-ai, PyPI1.79.0OSV
- pydantic-ai, PyPI1.80.0OSV
- pydantic-ai, PyPI1.81.0OSV
- pydantic-ai, PyPI1.82.0OSV
- pydantic-ai, PyPI1.83.0OSV
- pydantic-ai, PyPI1.84.0OSV
- pydantic-ai, PyPI1.84.1OSV
- pydantic-ai, PyPI1.85.0OSV
- pydantic-ai, PyPI1.85.1OSV
- pydantic-ai, PyPI1.86.0OSV
- pydantic-ai, PyPI1.86.1OSV
- pydantic-ai, PyPI1.87.0OSV
- pydantic-ai, PyPI1.88.0OSV
- pydantic-ai, PyPI1.89.0OSV
- pydantic-ai, PyPI1.89.1OSV
- pydantic-ai, PyPI1.90.0OSV
- pydantic-ai, PyPI1.91.0OSV
- pydantic-ai, PyPI1.92.0OSV
- pydantic-ai, PyPI1.93.0OSV
- pydantic-ai, PyPI1.94.0OSV
- pydantic-ai, PyPI1.95.0OSV
- pydantic-ai, PyPI1.95.1OSV
- pydantic-ai, PyPI1.96.0OSV
- pydantic-ai, PyPI1.96.1OSV
- pydantic-ai, PyPI1.97.0OSV
- pydantic-ai, PyPI1.98.0OSV
- pydantic-ai, PyPI1.99.0OSV
- pydantic-ai, PyPIfrom 2.0.0b1, fixed in 2.52.0OSV
- pydantic-ai, PyPI2.0.0OSV
- pydantic-ai, PyPI2.0.0b1OSV
- pydantic-ai, PyPI2.0.0b2OSV
- pydantic-ai, PyPI2.0.0b3OSV
- pydantic-ai, PyPI2.0.0b4OSV
- pydantic-ai, PyPI2.0.0b5OSV
- pydantic-ai, PyPI2.0.0b6OSV
- pydantic-ai, PyPI2.0.0b7OSV
- pydantic-ai, PyPI2.1.0OSV
- pydantic-ai, PyPI2.10.0OSV
- pydantic-ai, PyPI2.11.0OSV
- pydantic-ai, PyPI2.12.0OSV
- pydantic-ai, PyPI2.13.0OSV
- pydantic-ai, PyPI2.14.0OSV
- pydantic-ai, PyPI2.14.1OSV
- pydantic-ai, PyPI2.15.0OSV
- pydantic-ai, PyPI2.16.0OSV
- pydantic-ai, PyPI2.17.0OSV
- pydantic-ai, PyPI2.18.0OSV
- pydantic-ai, PyPI2.19.0OSV
- pydantic-ai, PyPI2.2.0OSV
- pydantic-ai, PyPI2.20.0OSV
- pydantic-ai, PyPI2.21.0OSV
- pydantic-ai, PyPI2.22.0OSV
- pydantic-ai, PyPI2.23.0OSV
- pydantic-ai, PyPI2.24.0OSV
- pydantic-ai, PyPI2.25.0OSV
- pydantic-ai, PyPI2.26.0OSV
- pydantic-ai, PyPI2.27.0OSV
- pydantic-ai, PyPI2.27.1OSV
- pydantic-ai, PyPI2.28.0OSV
- pydantic-ai, PyPI2.29.0OSV
- pydantic-ai, PyPI2.3.0OSV
- pydantic-ai, PyPI2.30.0OSV
- pydantic-ai, PyPI2.31.0OSV
- pydantic-ai, PyPI2.31.1OSV
- pydantic-ai, PyPI2.32.0OSV
- pydantic-ai, PyPI2.32.1OSV
- pydantic-ai, PyPI2.32.2OSV
- pydantic-ai, PyPI2.33.0OSV
- pydantic-ai, PyPI2.34.0OSV
- pydantic-ai, PyPI2.35.0OSV
- pydantic-ai, PyPI2.35.1OSV
- pydantic-ai, PyPI2.35.3OSV
- pydantic-ai, PyPI2.36.0OSV
- pydantic-ai, PyPI2.37.0OSV
- pydantic-ai, PyPI2.38.0OSV
- pydantic-ai, PyPI2.39.0OSV
- pydantic-ai, PyPI2.4.0OSV
- pydantic-ai, PyPI2.40.0OSV
- pydantic-ai-slim, PyPIfrom 1.77.0, fixed in 1.107.7OSV
- pydantic-ai-slim, PyPI1.100.0OSV
- pydantic-ai-slim, PyPI1.101.0OSV
- pydantic-ai-slim, PyPI1.102.0OSV
- pydantic-ai-slim, PyPI1.103.0OSV
- pydantic-ai-slim, PyPI1.104.0OSV
- pydantic-ai-slim, PyPI1.105.0OSV
- pydantic-ai-slim, PyPI1.106.0OSV
- pydantic-ai-slim, PyPI1.107.0OSV
- pydantic-ai-slim, PyPI1.107.1OSV
- pydantic-ai-slim, PyPI1.107.2OSV
- pydantic-ai-slim, PyPI1.107.4OSV
- pydantic-ai-slim, PyPI1.107.5OSV
- pydantic-ai-slim, PyPI1.107.6OSV
- pydantic-ai-slim, PyPI1.77.0OSV
- pydantic-ai-slim, PyPI1.78.0OSV
- pydantic-ai-slim, PyPI1.79.0OSV
- pydantic-ai-slim, PyPI1.80.0OSV
- pydantic-ai-slim, PyPI1.81.0OSV
- pydantic-ai-slim, PyPI1.82.0OSV
- pydantic-ai-slim, PyPI1.83.0OSV
- pydantic-ai-slim, PyPI1.84.0OSV
- pydantic-ai-slim, PyPI1.84.1OSV
- pydantic-ai-slim, PyPI1.85.0OSV
- pydantic-ai-slim, PyPI1.85.1OSV
- pydantic-ai-slim, PyPI1.86.0OSV
- pydantic-ai-slim, PyPI1.86.1OSV
- pydantic-ai-slim, PyPI1.87.0OSV
- pydantic-ai-slim, PyPI1.88.0OSV
- pydantic-ai-slim, PyPI1.89.0OSV
- pydantic-ai-slim, PyPI1.89.1OSV
- pydantic-ai-slim, PyPI1.90.0OSV
- pydantic-ai-slim, PyPI1.91.0OSV
- pydantic-ai-slim, PyPI1.92.0OSV
- pydantic-ai-slim, PyPI1.93.0OSV
- pydantic-ai-slim, PyPI1.94.0OSV
- pydantic-ai-slim, PyPI1.95.0OSV
- pydantic-ai-slim, PyPI1.95.1OSV
- pydantic-ai-slim, PyPI1.96.0OSV
- pydantic-ai-slim, PyPI1.96.1OSV
- pydantic-ai-slim, PyPI1.97.0OSV
- pydantic-ai-slim, PyPI1.98.0OSV
- pydantic-ai-slim, PyPI1.99.0OSV
- pydantic-ai-slim, PyPIfrom 2.0.0b1, fixed in 2.52.0OSV
- pydantic-ai-slim, PyPI2.0.0OSV
- pydantic-ai-slim, PyPI2.0.0b1OSV
- pydantic-ai-slim, PyPI2.0.0b2OSV
- pydantic-ai-slim, PyPI2.0.0b3OSV
- pydantic-ai-slim, PyPI2.0.0b4OSV
- pydantic-ai-slim, PyPI2.0.0b5OSV
- pydantic-ai-slim, PyPI2.0.0b6OSV
- pydantic-ai-slim, PyPI2.0.0b7OSV
- pydantic-ai-slim, PyPI2.1.0OSV
- pydantic-ai-slim, PyPI2.10.0OSV
- pydantic-ai-slim, PyPI2.11.0OSV
- pydantic-ai-slim, PyPI2.12.0OSV
- pydantic-ai-slim, PyPI2.13.0OSV
- pydantic-ai-slim, PyPI2.14.0OSV
- pydantic-ai-slim, PyPI2.14.1OSV
- pydantic-ai-slim, PyPI2.15.0OSV
- pydantic-ai-slim, PyPI2.16.0OSV
- pydantic-ai-slim, PyPI2.17.0OSV
- pydantic-ai-slim, PyPI2.18.0OSV
- pydantic-ai-slim, PyPI2.19.0OSV
- pydantic-ai-slim, PyPI2.2.0OSV
- pydantic-ai-slim, PyPI2.20.0OSV
- pydantic-ai-slim, PyPI2.21.0OSV
- pydantic-ai-slim, PyPI2.22.0OSV
- pydantic-ai-slim, PyPI2.23.0OSV
- pydantic-ai-slim, PyPI2.24.0OSV
- pydantic-ai-slim, PyPI2.25.0OSV
- pydantic-ai-slim, PyPI2.26.0OSV
- pydantic-ai-slim, PyPI2.27.0OSV
- pydantic-ai-slim, PyPI2.27.1OSV
- pydantic-ai-slim, PyPI2.28.0OSV
- pydantic-ai-slim, PyPI2.29.0OSV
- pydantic-ai-slim, PyPI2.3.0OSV
- pydantic-ai-slim, PyPI2.30.0OSV
- pydantic-ai-slim, PyPI2.31.0OSV
- pydantic-ai-slim, PyPI2.31.1OSV
- pydantic-ai-slim, PyPI2.32.0OSV
- pydantic-ai-slim, PyPI2.32.1OSV
- pydantic-ai-slim, PyPI2.32.2OSV
- pydantic-ai-slim, PyPI2.33.0OSV
- pydantic-ai-slim, PyPI2.34.0OSV
- pydantic-ai-slim, PyPI2.35.0OSV
- pydantic-ai-slim, PyPI2.35.1OSV
- pydantic-ai-slim, PyPI2.35.3OSV
- pydantic-ai-slim, PyPI2.36.0OSV
- pydantic-ai-slim, PyPI2.37.0OSV
- pydantic-ai-slim, PyPI2.38.0OSV
- pydantic-ai-slim, PyPI2.39.0OSV
- pydantic-ai-slim, PyPI2.4.0OSV
- pydantic-ai-slim, PyPI2.40.0OSV
References 8
- github.com/pydantic/pydantic-ai/commit/2b247add4950bef61d352e7ca8aefbd20539180cFixvia CVE List
- github.com/pydantic/pydantic-ai/commit/2fd38792693da00a3ca5412aeffb436787af3545Fixvia CVE List
- github.com/pydantic/pydantic-ai/releases/tag/v1.107.7Fixvia CVE List
- github.com/pydantic/pydantic-ai/releases/tag/v2.52.0Fixvia CVE List
- github.com/pydantic/pydantic-ai/security/advisories/GHSA-v36g-jcw9-x7cwAdvisoryvia CVE List
- github.com/advisories/GHSA-v36g-jcw9-x7cwAdvisoryvia GitHub
- github.com/pydantic/pydantic-ai/pull/8984Referencevia CVE List
- github.com/pydantic/pydantic-ai/pull/8985Referencevia CVE List