Server-side request forgery in pydantic-ai
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Impact type
- Information disclosure
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-918 and the CVSS impact.
Summary
Pydantic AI is a Python agent framework for building Generative AI applications. In versions 1.65.0 through 1.105.0, and 2.0.0b1 through 2.0.0b5, a client that submits message history to a Pydantic AI UI adapter (such as the Vercel AI adapter) can reference arbitrary files in the application's model-provider or cloud-storage account. While file URL parts are validated against a scheme allowlist, UploadedFile references — which point to a file by provider file ID or cloud-storage URI (e.g. s3://…, gs://…) — were forwarded without validation. Because the provider resolves an UploadedFile using the server-side identity (IAM role, service account, or provider API key) rather than the client's, an attacker can craft message history to make the server read objects from its own account or other tenants, given a referenceable identifier. Exploitation requires a valid file identifier, which is not always unguessable depending on how the application names objects. This issue has been fixed in versions 1.106.0 and 2.0.0b6.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| pydantic | pydantic-ai | 1.65.0 to before 1.106.0; 2.0.0b1 to before 2.0.0b6 | 1.106.0, 2.0.0b6 | Patch available | CNA |
| pydantic | pydantic-ai-slim | 2.0.0b1 to before 2.0.0b6; 1.65.0 to before 1.106.0 | 2.0.0b6, 1.106.0 | Patch available | CNA |
| — | pydantic-ai-slim (PyPI) | 1.65.0 to before 1.106.0 | 1.106.0 | Patch available | GHSA-h7p7-w5gc-xj3w |
| — | pydantic-ai-slim (PyPI) | 2.0.0b1 to before 2.0.0b6 | 2.0.0b6 | Patch available | GHSA-h7p7-w5gc-xj3w |
| — | pydantic-ai (PyPI) | 1.65.0 to before 1.106.0 | 1.106.0 | Patch available | GHSA-h7p7-w5gc-xj3w |
| — | pydantic-ai (PyPI) | 2.0.0b1 to before 2.0.0b6 | 2.0.0b6 | Patch available | GHSA-h7p7-w5gc-xj3w |
- pydantic-ai Vendorpydantic Affected 1.65.0 to before 1.106.0; 2.0.0b1 to before 2.0.0b6 Fixed in 1.106.0, 2.0.0b6 Patch available CNA
- pydantic-ai-slim Vendorpydantic Affected 2.0.0b1 to before 2.0.0b6; 1.65.0 to before 1.106.0 Fixed in 2.0.0b6, 1.106.0 Patch available CNA
- pydantic-ai-slim (PyPI) Vendor— Affected 1.65.0 to before 1.106.0 Fixed in 1.106.0 Patch available GHSA-h7p7-w5gc-xj3w
- pydantic-ai-slim (PyPI) Vendor— Affected 2.0.0b1 to before 2.0.0b6 Fixed in 2.0.0b6 Patch available GHSA-h7p7-w5gc-xj3w
- pydantic-ai (PyPI) Vendor— Affected 1.65.0 to before 1.106.0 Fixed in 1.106.0 Patch available GHSA-h7p7-w5gc-xj3w
- pydantic-ai (PyPI) Vendor— Affected 2.0.0b1 to before 2.0.0b6 Fixed in 2.0.0b6 Patch available GHSA-h7p7-w5gc-xj3w
CPE configurations NVD · 6
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:pydantic:pydantic_ai:*:*:*:*:*:python:*:* | 1.65.0 to before 1.105.0 | Vulnerable | pydantic |
| cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta1:*:*:*:python:*:* | 2.0.0 beta1 | Vulnerable | pydantic |
| cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta2:*:*:*:python:*:* | 2.0.0 beta2 | Vulnerable | pydantic |
| cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta3:*:*:*:python:*:* | 2.0.0 beta3 | Vulnerable | pydantic |
| cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta4:*:*:*:python:*:* | 2.0.0 beta4 | Vulnerable | pydantic |
| cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta5:*:*:*:python:*:* | 2.0.0 beta5 | Vulnerable | pydantic |
- cpe:2.3:a:pydantic:pydantic_ai:*:*:*:*:*:python:*:* Versions 1.65.0 to before 1.105.0 Vulnerable ·pydantic
- cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta1:*:*:*:python:*:* Versions 2.0.0 beta1 Vulnerable ·pydantic
- cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta2:*:*:*:python:*:* Versions 2.0.0 beta2 Vulnerable ·pydantic
- cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta3:*:*:*:python:*:* Versions 2.0.0 beta3 Vulnerable ·pydantic
- cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta4:*:*:*:python:*:* Versions 2.0.0 beta4 Vulnerable ·pydantic
- cpe:2.3:a:pydantic:pydantic_ai:2.0.0:beta5:*:*:*:python:*:* Versions 2.0.0 beta5 Vulnerable ·pydantic
Remediation
- Fix · CNA pydantic-ai (pydantic) Fixed in 1.106.0, 2.0.0b6
- Fix · CNA pydantic-ai-slim (pydantic) Fixed in 2.0.0b6, 1.106.0
- Fix · GHSA-h7p7-w5gc-xj3w pydantic-ai-slim (PyPI) Fixed in 1.106.0 Advisory →
- Fix · GHSA-h7p7-w5gc-xj3w pydantic-ai-slim (PyPI) Fixed in 2.0.0b6 Advisory →
- Fix · GHSA-h7p7-w5gc-xj3w pydantic-ai (PyPI) Fixed in 1.106.0 Advisory →
- Fix · GHSA-h7p7-w5gc-xj3w pydantic-ai (PyPI) Fixed in 2.0.0b6 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
Not affected: 2 products
- Lightspeed Core
- Red Hat Enterprise Linux AI (RHEL AI) 3
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54249
- 2026-10-03 Alias added: GHSA-h7p7-w5gc-xj3w
References
Advisory 2
More Pydantic Ai vulnerabilities
- TI-2026-20687 Pydantic AI Affected by Server-Side Request Forgery (SSRF) in URL Download Handling CVSS 3.1HIGH 8.6
- TI-2026-69551 Pydantic AI keeps concurrency slots after streams end early CVSS 3.1HIGH 7.5
- TI-2026-46990 Incorrect authorization in pydantic-ai CVSS 3.1MEDIUM 6.5
- TI-2026-69610 Cross-site requests run agent tools in pydantic-ai web chat CVSS 3.1HIGH 7.6
- TI-2026-20740 Pydantic AI affected by Stored XSS via Path Traversal in Web UI CDN URL CVSS 3.1HIGH 7.1
- TI-2026-69617 Pydantic AI blocklist bypass via IPv6 zone identifier allows SSRF CVSS 3.1MEDIUM 6.8
Sources
- CVE-2026-54249 · CVE Program
- CVE-2026-54249 · NVD
- FIRST EPSS
- GHSA-h7p7-w5gc-xj3w · GitHub Advisory Database · CC BY 4.0
- CVE-2026-54249 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences