Every CVE Search/ Get API key

CVE-2026-107294

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

6.5 MediumFix available

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.2 and 2.24.0, web_fetch_tool, the WebFetch local fallback, and remote FileUrl media downloads buffer the complete HTTP response body before enforcing content-size controls. An attacker-influenced URL can stream an arbitrarily large response that exhausts process memory and crashes the worker; affected media types include ImageUrl, DocumentUrl, VideoUrl, and AudioUrl. SSRF protections remain effective, and the impact is limited to availability. This issue is fixed in versions 1.107.2 and 2.24.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.44%Unchanged since Oct 9, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.2 and 2.24.0, web_fetch_tool, the WebFetch local fallback, and remote FileUrl media downloads buffer the complete HTTP response body before enforcing content-size controls. An attacker-influenced URL can stream an arbitrarily large response that exhausts process memory and crashes the worker; affected media types include ImageUrl, DocumentUrl, VideoUrl, and AudioUrl. SSRF protections remain effective, and the impact is limited to availability. This issue is fixed in versions 1.107.2 and 2.24.0.

Record
CVE-2026-107294
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
EUVDEUVD-2026-95104 6.5

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.2 and 2.24.0, web_fetch_tool, the WebFetch local fallback, and remote FileUrl media downloads buffer the complete HTTP response body before enforcing content-size controls. An attacker-influenced URL can stream an arbitrarily large response that exhausts process memory and crashes the worker; affected media types include ImageUrl, DocumentUrl, VideoUrl, and AudioUrl. SSRF protections remain effective, and the impact is limited to availability. This issue is fixed in versions 1.107.2 and 2.24.0.

Record
EUVD-2026-95104
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-v2xh-2vp8-57h8 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Summary

Several remote-content download paths in Pydantic AI buffered the entire HTTP response body into memory before enforcing any size limit. An application that exposes the local web-fetch tool (web_fetch_tool, or the WebFetch capability's local fallback) to untrusted prompts can be driven to fetch an attacker-chosen URL that streams a very large body, exhausting process memory and crashing the worker. The same unbounded buffering applied to FileUrl media downloads (ImageUrl, DocumentUrl, VideoUrl, AudioUrl).

This is an availability issue only. SSRF protections (scheme allowlist, private-IP and cloud-metadata blocking) are unaffected; there is no confidentiality or integrity impact.

Details

The download helpers read the full response body before applying content-size controls, so an existing text-length limit only truncated after the whole body was already in memory, and media downloads had no wire-level cap at all. A single large response could grow process memory without bound .

Who Is Affected

You are affected if your application registers the local web-fetch tool (or relies on the WebFetch capability's local fallback) and exposes the agent to untrusted prompts, or if it downloads large remote FileUrls influenced by untrusted input. Applications that only fetch developer-controlled URLs are not exposed to the model-chosen attack path.

Remediation

Upgrade to 2.24.0 or later (v2) or 1.107.2 or later (v1). Patched versions enforce a default 50 MiB cap on web-fetch and FileUrl downloads while streaming; pass None to the limit to restore the previous unbounded behavior.

Credits

Identified during internal review of media-download hardening.

Record
GHSA-v2xh-2vp8-57h8
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-770
Updated
2026-11-02
NVD 6.5

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.2 and 2.24.0, web_fetch_tool, the WebFetch local fallback, and remote FileUrl media downloads buffer the complete HTTP response body before enforcing content-size controls. An attacker-influenced URL can stream an arbitrarily large response that exhausts process memory and crashes the worker; affected media types include ImageUrl, DocumentUrl, VideoUrl, and AudioUrl. SSRF protections remain effective, and the impact is limited to availability. This issue is fixed in versions 1.107.2 and 2.24.0.

Record
CVE-2026-107294
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
OSV 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.2 and 2.24.0, web_fetch_tool, the WebFetch local fallback, and remote FileUrl media downloads buffer the complete HTTP response body before enforcing content-size controls. An attacker-influenced URL can stream an arbitrarily large response that exhausts process memory and crashes the worker; affected media types include ImageUrl, DocumentUrl, VideoUrl, and AudioUrl. SSRF protections remain effective, and the impact is limited to availability. This issue is fixed in versions 1.107.2 and 2.24.0.

Record
CVE-2026-107294
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
OSVGHSA-v2xh-2vp8-57h8 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Summary

Several remote-content download paths in Pydantic AI buffered the entire HTTP response body into memory before enforcing any size limit. An application that exposes the local web-fetch tool (web_fetch_tool, or the WebFetch capability's local fallback) to untrusted prompts can be driven to fetch an attacker-chosen URL that streams a very large body, exhausting process memory and crashing the worker. The same unbounded buffering applied to FileUrl media downloads (ImageUrl, DocumentUrl, VideoUrl, AudioUrl).

This is an availability issue only. SSRF protections (scheme allowlist, private-IP and cloud-metadata blocking) are unaffected; there is no confidentiality or integrity impact.

Details

The download helpers read the full response body before applying content-size controls, so an existing text-length limit only truncated after the whole body was already in memory, and media downloads had no wire-level cap at all. A single large response could grow process memory without bound .

Who Is Affected

You are affected if your application registers the local web-fetch tool (or relies on the WebFetch capability's local fallback) and exposes the agent to untrusted prompts, or if it downloads large remote FileUrls influenced by untrusted input. Applications that only fetch developer-controlled URLs are not exposed to the model-chosen attack path.

Remediation

Upgrade to 2.24.0 or later (v2) or 1.107.2 or later (v1). Patched versions enforce a default 50 MiB cap on web-fetch and FileUrl downloads while streaming; pass None to the limit to restore the previous unbounded behavior.

Credits

Identified during internal review of media-download hardening.

Record
GHSA-v2xh-2vp8-57h8
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-770
Updated
2026-11-02
OSVPYSEC-2026-4280 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Summary

Several remote-content download paths in Pydantic AI buffered the entire HTTP response body into memory before enforcing any size limit. An application that exposes the local web-fetch tool (web_fetch_tool, or the WebFetch capability's local fallback) to untrusted prompts can be driven to fetch an attacker-chosen URL that streams a very large body, exhausting process memory and crashing the worker. The same unbounded buffering applied to FileUrl media downloads (ImageUrl, DocumentUrl, VideoUrl, AudioUrl).

This is an availability issue only. SSRF protections (scheme allowlist, private-IP and cloud-metadata blocking) are unaffected; there is no confidentiality or integrity impact.

Details

The download helpers read the full response body before applying content-size controls, so an existing text-length limit only truncated after the whole body was already in memory, and media downloads had no wire-level cap at all. A single large response could grow process memory without bound .

Who Is Affected

You are affected if your application registers the local web-fetch tool (or relies on the WebFetch capability's local fallback) and exposes the agent to untrusted prompts, or if it downloads large remote FileUrls influenced by untrusted input. Applications that only fetch developer-controlled URLs are not exposed to the model-chosen attack path.

Remediation

Upgrade to 2.24.0 or later (v2) or 1.107.2 or later (v1). Patched versions enforce a default 50 MiB cap on web-fetch and FileUrl downloads while streaming; pass None to the limit to restore the previous unbounded behavior.

Credits

Identified during internal review of media-download hardening.

Record
PYSEC-2026-4280
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVPYSEC-2026-4289 6.5

Pydantic AI: Unbounded memory use when downloading remote content via web_fetch or FileUrl

Summary

Several remote-content download paths in Pydantic AI buffered the entire HTTP response body into memory before enforcing any size limit. An application that exposes the local web-fetch tool (web_fetch_tool, or the WebFetch capability's local fallback) to untrusted prompts can be driven to fetch an attacker-chosen URL that streams a very large body, exhausting process memory and crashing the worker. The same unbounded buffering applied to FileUrl media downloads (ImageUrl, DocumentUrl, VideoUrl, AudioUrl).

This is an availability issue only. SSRF protections (scheme allowlist, private-IP and cloud-metadata blocking) are unaffected; there is no confidentiality or integrity impact.

Details

The download helpers read the full response body before applying content-size controls, so an existing text-length limit only truncated after the whole body was already in memory, and media downloads had no wire-level cap at all. A single large response could grow process memory without bound .

Who Is Affected

You are affected if your application registers the local web-fetch tool (or relies on the WebFetch capability's local fallback) and exposes the agent to untrusted prompts, or if it downloads large remote FileUrls influenced by untrusted input. Applications that only fetch developer-controlled URLs are not exposed to the model-chosen attack path.

Remediation

Upgrade to 2.24.0 or later (v2) or 1.107.2 or later (v1). Patched versions enforce a default 50 MiB cap on web-fetch and FileUrl downloads while streaming; pass None to the limit to restore the previous unbounded behavior.

Credits

Identified during internal review of media-download hardening.

Record
PYSEC-2026-4289
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
pydantic-ai
PyPI
1.77.0 up to 1.107.2
1.107.2
pydantic-ai
PyPI
2.0.0b1 to 2.23.0
2.24.0
pydantic-ai-slim
PyPI
1.77.0 up to 1.107.2
1.107.2
pydantic-ai-slim
PyPI
2.0.0b1 to 2.23.0
2.24.0
pydantic-ai
PyPI
1.77.0 up to 1.107.2, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 32 moreShow less
1.105.01.106.01.107.01.107.11.78.01.79.01.80.01.81.01.82.01.83.01.84.01.84.11.85.01.85.11.86.01.86.11.87.01.88.01.89.01.89.11.90.01.91.01.92.01.93.01.94.01.95.01.95.11.96.01.96.11.97.01.98.01.99.0
1.107.2
pydantic-ai
PyPI
2.0.0b1 up to 2.24.0, plus listed versions
2.0.02.0.0b22.0.0b32.0.0b42.0.0b5
Show 28 moreShow less
2.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.02.14.12.15.02.16.02.17.02.18.02.19.02.2.02.20.02.21.02.22.02.23.02.3.02.4.02.5.02.5.12.6.02.7.02.8.02.9.02.9.1
2.24.0
pydantic-ai-slim
PyPI
1.77.0 up to 1.107.2, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 32 moreShow less
1.105.01.106.01.107.01.107.11.78.01.79.01.80.01.81.01.82.01.83.01.84.01.84.11.85.01.85.11.86.01.86.11.87.01.88.01.89.01.89.11.90.01.91.01.92.01.93.01.94.01.95.01.95.11.96.01.96.11.97.01.98.01.99.0
1.107.2
pydantic-ai-slim
PyPI
2.0.0b1 up to 2.24.0, plus listed versions
2.0.02.0.0b22.0.0b32.0.0b42.0.0b5
Show 28 moreShow less
2.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.02.14.12.15.02.16.02.17.02.18.02.19.02.2.02.20.02.21.02.22.02.23.02.3.02.4.02.5.02.5.12.6.02.7.02.8.02.9.02.9.1
2.24.0
pydantic-ai
PyPI
1.77.0 up to 1.107.2, 2.0.0b1 up to 2.24.0, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.78.01.79.01.80.01.81.01.82.01.83.01.84.01.84.11.85.01.85.11.86.01.86.11.87.01.88.01.89.01.89.11.90.01.91.01.92.01.93.01.94.01.95.01.95.11.96.01.96.11.97.01.98.01.99.02.0.02.0.0b22.0.0b32.0.0b42.0.0b52.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.0
1.107.22.24.0
pydantic-ai-slim
PyPI
1.77.0 up to 1.107.2, 2.0.0b1 up to 2.24.0, plus listed versions
1.100.01.101.01.102.01.103.01.104.0
Show 45 moreShow less
1.105.01.106.01.107.01.107.11.78.01.79.01.80.01.81.01.82.01.83.01.84.01.84.11.85.01.85.11.86.01.86.11.87.01.88.01.89.01.89.11.90.01.91.01.92.01.93.01.94.01.95.01.95.11.96.01.96.11.97.01.98.01.99.02.0.02.0.0b22.0.0b32.0.0b42.0.0b52.0.0b62.0.0b72.1.02.10.02.11.02.12.02.13.02.14.0
1.107.22.24.0

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-107294 is a medium vulnerability (CVSS 6.5) in Pydantic Ai, published October 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.44%, the 38th percentile. Fixed in pydantic-ai 1.107.2.

References

Show 7 moreShow less
This page doesn't list everything

Left out here: 40 versions. The JSON record has them.

MoveEnter Open