{"id":"CVE-2026-25580","published":"2026-02-06T21:01:38Z","modified":"2026-07-15T01:16:15Z","title":"Pydantic AI Affected by Server-Side Request Forgery (SSRF) in URL Download Handling","vendor":"pydantic","product":"pydantic-ai","tier":"tail","description":{"text":"Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 0.0.26 to before 1.56.0, aServer-Side Request Forgery (SSRF) vulnerability exists in Pydantic AI's URL download functionality. When applications accept message history from untrusted sources, attackers can include malicious URLs that cause the server to make HTTP requests to internal network resources, potentially accessing internal services or cloud credentials. This vulnerability only affects applications that accept message history from external users. This vulnerability is fixed in 1.56.0.","provenance":"source","from":"CVE.org"},"cvss":{"score":8.6,"severity":"HIGH","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.00658,"percentile":0.5137,"provenance":"source"},"cwes":[{"id":"CWE-918","name":"Server-Side Request Forgery"}],"references":[{"url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-2jrp-274c-jhv3","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/pydantic/pydantic-ai/commit/d398bc9d39aecca6530fa7486a410d5cce936301","tags":["x_refsource_MISC"]},{"url":"https://access.redhat.com/security/cve/CVE-2026-25580","tags":["vdb-entry","x_refsource_REDHAT"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2437781","tags":["issue-tracking","x_refsource_REDHAT"]},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-25580.json","tags":["x_sadp-csaf-vex"]}],"priority":{"score":16.3,"factors":[{"name":"EPSS percentile","points":10.27},{"name":"CVSS severity","points":6.02}]},"vendorSlug":"pydantic","affectedVersions":[{"vendor":"pydantic","product":"pydantic-ai","versions":[">= 0.0.26, < 1.56.0"]}],"affected":[{"ecosystem":"PyPI","package":"pydantic-ai","vulnerableRanges":[">=0.0.26, <1.56.0"],"patched":["1.56.0"],"from":["GHSA-2jrp-274c-jhv3","PYSEC-2026-2976"],"provenance":"source"},{"ecosystem":"PyPI","package":"pydantic-ai-slim","vulnerableRanges":[">=0.0.26, <1.56.0"],"patched":["1.56.0"],"from":["GHSA-2jrp-274c-jhv3","PYSEC-2026-2980"],"provenance":"source"}],"euvd":{"id":"EUVD-2026-5574","exploited":false,"provenance":"source"},"lineage":{"familyId":"fam-pydantic-ai-cve-2026-25580","children":[{"from":"CVE-2026-25580","to":"CVE-2026-46678","relation":"incomplete-fix","confidence":"high","kind":"lineage","evidence":[{"kind":"text","provenance":"source","relation":"incomplete-fix","quote":"This is an incomplete fix of GHSA-2jrp-274c-jhv3 / CVE-2026-25580, whose remediation did not hold for IPv6-encoded forms of the metadata IPs.","from":"CVE.org","in":"CVE-2026-46678"},{"kind":"osv-related","provenance":"source","id":"GHSA-cqp8-fcvh-x7r3","via":"reference","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-2jrp-274c-jhv3"},{"kind":"osv-related","provenance":"source","id":"PYSEC-2026-2978","via":"reference","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-2jrp-274c-jhv3"},{"kind":"osv-related","provenance":"source","id":"PYSEC-2026-2982","via":"reference","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-2jrp-274c-jhv3"},{"kind":"version-step","provenance":"source","package":"PyPI:pydantic-ai","fromFixed":"1.56.0","toFixed":"1.99.0","daysApart":173},{"kind":"version-step","provenance":"source","package":"PyPI:pydantic-ai-slim","fromFixed":"1.56.0","toFixed":"1.99.0","daysApart":173}]},{"from":"CVE-2026-25580","to":"CVE-2026-48782","relation":"incomplete-fix","confidence":"high","kind":"lineage","evidence":[{"kind":"text","provenance":"source","relation":"incomplete-fix","quote":"This is an incomplete fix of GHSA-cqp8-fcvh-x7r3 / CVE-2026-46678 (itself a follow-up to CVE-2026-25580).","from":"CVE.org","in":"CVE-2026-48782"}]}],"packageHistory":[{"cve":"CVE-2026-25640","published":"2026-02-06","fixed":"1.51.0","kev":false,"link":{"from":"CVE-2026-25640","to":"CVE-2026-25580","relation":"successor","confidence":"low","kind":"sequence","orderedBy":"description","evidence":[{"kind":"version-step","provenance":"source","package":"PyPI:pydantic-ai","fromFixed":"1.51.0","toFixed":"1.56.0","daysApart":0},{"kind":"version-step","provenance":"source","package":"PyPI:pydantic-ai-slim","fromFixed":"1.51.0","toFixed":"1.56.0","daysApart":0}]}},{"cve":"CVE-2026-25580","published":"2026-02-06","fixed":"1.56.0","kev":false},{"cve":"CVE-2026-46678","published":"2026-07-29","fixed":"1.99.0","kev":false},{"cve":"CVE-2026-48782","published":"2026-06-16","fixed":"2.0.0b3","kev":false},{"cve":"CVE-2026-54249","published":"2026-07-29","fixed":"2.0.0b6","kev":false}],"package":"PyPI:pydantic-ai"}}