Skip to main content

Pydantic AI EUVDEUVD-2026-95075

| CVE-2026-107287 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-10-08 GitHub_M GHSA-v36g-jcw9-x7cw
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Host malicious deeply-nested HTML page
  2. Exploit
    Induce agent to fetch URL
  3. Execution
    Trigger runaway Markdown conversion expansion
  4. Impact
    Exhaust CPU/memory and stall process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the application use Pydantic AI's local web_fetch_tool or the WebFetch local fallback (provider-native web fetching is NOT affected) in an affected version (pydantic-ai / pydantic-ai-slim 1.77.0-<1.107.7, or 2.0.0b1-<2.52.0). The attacker must get the model/agent to fetch an attacker-controlled URL whose response is HTML containing deeply nested block elements (e.g. nested <dd>, <blockquote>, <li>, <div>) that trigger repeated reprocessing during HTML-to-Markdown conversion. Limiting factors: the attack depends on the agent being directed to fetch the malicious URL (UI:R), is confined to availability/resource exhaustion with no data exposure, and is fully nullified by upgrading to 1.107.7 or 2.52.0 or by relying on provider-native fetching.

Impact

This is a medium-severity denial-of-service issue (CVSS 6.5, CWE-400) whose signals are largely consistent and point to a real-but-bounded risk rather than a top-tier emergency. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H correctly reflects an unauthenticated (PR:N), low-complexity, availability-only flaw that nonetheless requires interaction (UI:R): an AI agent must be directed by the model to fetch an attacker-controlled URL. No EPSS score, KEV listing, or POC was provided in the input, so there is no evidence of active exploitation or weaponization - exploitation status is 'no public exploit identified at time of analysis.' The impact is confined to availability with no confidentiality or integrity loss, and the vendor itself describes the effect as delaying other work in the process (GIL contention / CPU and memory expansion during HTML-to-Markdown conversion) rather than a full crash, so A:H is the conservative upper bound. Mitigating the urgency: the issue only affects the local web_fetch_tool and the WebFetch local fallback - provider-native web fetching is explicitly unaffected - and a vendor patch is already available (1.107.7 and 2.52.0). Overall this is a legitimate hardening priority for anyone running agents that fetch untrusted web content locally, but not a widespread-exploitation emergency. The UI:R requirement plus the availability-only impact mean it is better treated as a resilience/abuse-prevention fix than a critical RCE-class vulnerability.

Exploit ScenarioDerived

An attacker publishes a web page containing deeply nested HTML block elements (for example many nested <dd>, <blockquote>, or <li> tags) and gets an AI agent to fetch it - e.g. via a prompt-injection or by seeding a URL the agent is likely to retrieve. When the local web_fetch_tool or WebFetch local fallback converts that HTML to Markdown, the converter repeatedly reprocesses accumulated text and expands a small (~600 KB) page into tens of megabytes, consuming CPU/memory and stalling the process. No public exploit or active exploitation is identified at time of analysis, though the fix PR diffs and conversion-cost benchmarks are public.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 08, 2026

Denial of service in Pydantic AI's local web_fetch_tool and WebFetch local fallback allows an attacker-controlled HTML page, fetched on the model's behalf, to burn excessive CPU and memory during HTML-to-Markdown conversion (CVSS 3.1 6.5, AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H; CWE-400). Affected are pydantic-ai and pydantic-ai-slim from 1.77.0 through 1.107.6, and from 2.0.0b1 through 2.51.x (fixed in 1.107.7 and 2.52.0); provider-native web fetching is not affected, and no public exploit code has been identified at time of analysis, with no KEV listing. Because the fetch must be induced through the agent (UI:R), the realistic exposure is a stalled or resource-starved agent process rather than a remotely triggerable crash, and EPSS-style urgency is correspondingly moderate.

RemediationAI

Vendor-released patch: upgrade to pydantic-ai / pydantic-ai-slim 1.107.7 (1.x line) or 2.52.0 (2.x line); these releases add pre-conversion cost estimation that rejects oversized documents with ModelRetry('the document is too complex'), as implemented in PRs https://github.com/pydantic/pydantic-ai/pull/8984 and https://github.com/pydantic/pydantic-ai/pull/8985 (commits 2b247add4950bef61d352e7ca8aefbd20539180c and 2fd38792693da00a3ca5412aeffb436787af3545), per advisory GHSA-v36g-jcw9-x7cw. If upgrading immediately is not possible, the most effective compensating control is to switch to provider-native web fetching, which is explicitly unaffected; doing so moves retrieval outside the local conversion path but trades away local control over fetching and may incur provider-specific behavior or cost. Alternatively, disable or remove the local web_fetch_tool from agent tool sets (removing legitimate fetch capability entirely), or restrict fetches to an allowlist of trusted domains and deny arbitrary user/model-supplied URLs (reducing exposure but not eliminating nested-HTML abuse from allowed hosts). Running the agent worker under OS-level CPU and memory limits (cgroups, container limits, or a supervised subprocess) bounds the blast radius of a hostile page at the cost of potentially terminating legitimate long-running conversions, and applying short fetch deadlines plus upstream response-size caps before parsing reduces, though does not fully remove, the conversion amplification window.

Affected VersionsENISA

pydantic-ai-slim 2.0.0b1, < 2.52.0
pydantic-ai 1.77.0, < 1.107.7
pydantic-ai-slim 1.77.0, < 1.107.7
pydantic-ai 2.0.0b1, < 2.52.0

Affected Packages

pypi pydantic-ai fix: 1.107.7, 2.52.0
pypi pydantic-ai-slim fix: 1.107.7, 2.52.0
euvd pydantic_ai_2_0_0b1 fix: 2.52.0
euvd pydantic_ai_slim_2_0_0b1 fix: 2.52.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is an uncontrolled resource consumption (CWE-400) issue in the HTML-to-Markdown conversion path of Pydantic AI's local web fetching tooling. The converter wraps BeautifulSoup-style parsing plus a markdownify-derived MarkdownConverter, which repeatedly walks back up the parsed tree and rescans each descendant's already-converted text; block-level constructs such as <dd>, <blockquote>, <li> and <div> additionally add indentation at every nesting level. When an attacker-controlled page nests deeply enough, the conversion both reprocesses accumulated text and expands intermediate output far beyond the size of the returned-content limit, which is only applied after conversion completes. The upstream fix (PRs 8984 and 8985, commits 2b247add4950bef61d352e7ca8aefbd20539180c and 2fd38792693da00a3ca5412aeffb436787af3545) pre-walks the tree to estimate conversion cost, aborting with a ModelRetry('the document is too complex') when estimated work exceeds _MAX_HTML_CONVERSION_COST (20,000,000) or _MAX_HTML_TEXT_SCAN_COST (5,000,000,000). Affected CPEs are pydantic:pydantic-ai and pydantic:pydantic-ai-slim; EUVD record EUVD-2026-95075 lists the same version ranges.

Know when Pydantic Ai gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Remote, unauthenticated, low-complexity resource exhaustion, but UI:R because an agent must be directed to fetch the malicious URL; availability-only (A:H), no C/I impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 6.5 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 08, 2026 - 17:03 EUVD

DescriptionCVE.org

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.77.0 until 1.107.7 and 2.52.0, the local web_fetch_tool and the WebFetch local fallback can consume excessive CPU and memory during HTML-to-Markdown conversion of attacker-controlled HTML containing deeply nested block elements. Conversion repeatedly reprocesses accumulated text and can greatly expand intermediate output before the returned-content limit is applied, allowing a model-directed fetch to delay other work in the process. Provider-native web fetching is not affected. This issue is fixed in versions 1.107.7 and 2.52.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 3 pypi packages depend on pydantic-ai (2 direct, 1 indirect)
  • 7 pypi packages depend on pydantic-ai-slim (4 direct, 3 indirect)

Ecosystem-wide dependent count for version 1.77.0 and other introduced versions.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Medium
popular but still-maturing Python AI agent framework, not universally deployed
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-25580 HIGH POC
8.6 Feb 06

Pydantic AI versions 0.0.26 through 1.55.x contain a server-side request forgery vulnerability in URL download functiona

CVE-2026-107295 HIGH
7.6 Oct 08

Cross-site request forgery in Pydantic AI's development web chat UI allows any website a developer happens to visit whil

CVE-2026-107286 HIGH
7.5 Oct 08

Concurrency slot exhaustion in Pydantic AI 2.10.0 through 2.52.x lets streamed model requests permanently occupy slots i

CVE-2026-48782 MEDIUM
6.8 Jun 16

Server-Side Request Forgery in Pydantic AI (versions 1.56.0-1.101.0, 2.0.0b1, 2.0.0b2) allows unauthenticated network at

CVE-2026-107289 MEDIUM
6.8 Oct 08

Server-side request forgery in Pydantic AI's URL-fetching guards lets an application that has explicitly opted a URL int

CVE-2026-54249 MEDIUM POC
6.8 Jul 29

Server-Side Request Forgery in Pydantic AI's UI adapter layer (versions 1.65.0-1.105.0 and 2.0.0b1-2.0.0b5) allows unaut

CVE-2026-107294 MEDIUM
6.5 Oct 08

Pydantic AI, a Python framework for building Generative AI agents, buffers complete HTTP response bodies before applying

CVE-2026-107290 MEDIUM
6.5 Oct 08

Denial of service in Pydantic AI (pydantic-ai and pydantic-ai-slim) versions 1.77.0 through 1.107.5 and 2.0.0b1 through

CVE-2026-65975 MEDIUM
6.5 Jul 29

Tool call injection in Pydantic AI's UI adapters (AG-UI via Agent.to_ag_ui()/AGUIAdapter, and Vercel AI via VercelAIAdap

CVE-2026-107292 MEDIUM
6.4 Oct 08

DNS rebinding against the Pydantic AI development web chat server (Agent.to_web() and `clai web`) lets a hostile website

CVE-2026-25640 MEDIUM
5.4 Feb 06

Pydantic AI versions 1.34.0 through 1.50.x contain a path traversal vulnerability in the web UI that allows unauthentica

CVE-2026-107288 LOW
3.7 Oct 08

A domain-denylist bypass in Pydantic AI's local web-fetch tooling (web_fetch_tool and the WebFetch local fallback) lets

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy