{"id":"CVE-2026-107295","summary":"`pydantic-ai-slim` web UI `/api/chat` accepts browser-simple cross-origin requests that can trigger agent tool execution","details":"Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 1.34.0 until 1.107.4 and 2.28.0, the Agent.to_web() and clai web development chat endpoint has missing request content-type validation. A website visited by a developer can submit a browser-compatible request to a loopback-hosted chat server, causing the served agent to run and execute tools with the privileges and credentials of the local process; client-relayed approval decisions also leave requires_approval=True tools exposed. Binding to localhost does not prevent a browser page from reaching the loopback address. This issue is fixed in versions 1.107.4 and 2.28.0.","aliases":["GHSA-h4xc-3qfq-jf93"],"modified":"2026-10-09T02:52:04.167672799Z","published":"2026-10-08T17:02:36.718Z","database_specific":{"cwe_ids":["CWE-352"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/107xxx/CVE-2026-107295.json","cna_assigner":"GitHub_M"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/107xxx/CVE-2026-107295.json"},{"type":"FIX","url":"https://github.com/pydantic/pydantic-ai/commit/d2690201a1834005d382dbf5c47e0ed94ef8bf46"},{"type":"FIX","url":"https://github.com/pydantic/pydantic-ai/commit/dd2abbdfa029c9ad138e7cc0edd2eaeaf9ed69c0"},{"type":"FIX","url":"https://github.com/pydantic/pydantic-ai/pull/7382"},{"type":"FIX","url":"https://github.com/pydantic/pydantic-ai/pull/7383"},{"type":"WEB","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v1.107.4"},{"type":"WEB","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v2.28.0"},{"type":"ADVISORY","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-h4xc-3qfq-jf93"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-107295"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/pydantic/pydantic-ai","events":[{"introduced":"afde1c431371ce24757179ed1cad09af0f382d29"},{"fixed":"f275d5c4c75d9cc96131800099619c5027b62873"},{"introduced":"6001a4549018ad5509f2c11ed6c38d2385159506"},{"fixed":"4096ee8e16353d4252b2a9605b8732f2d0519953"}],"database_specific":{"extracted_events":[{"introduced":"1.34.0"},{"fixed":"1.107.4"},{"introduced":"2.0.0b1"},{"fixed":"2.28.0"}],"source":"AFFECTED_FIELD"}}],"versions":["v1.107.2","v2.27.1","v2.27.0","v1.107.1","v2.26.0","v2.25.0","v2.24.0","v2.23.0","v2.22.0","v2.21.0","v2.20.0","v2.19.0","v2.18.0","v2.17.0","v2.16.0","v2.15.0","v2.14.1","v2.14.0","v2.13.0","v2.12.0","v2.11.0","v2.10.0","v2.9.1","v2.9.0","v1.107.0","v2.8.0","v2.7.0","v2.6.0","v2.5.1","v2.5.0","v2.4.0","v2.3.0","v2.2.0","v2.1.0","v2.0.0","v1.106.0","v1.105.0","v1.104.0","v1.103.0","v1.102.0","v1.91.0","v1.101.0","v1.100.0","v1.99.0","v1.98.0","v1.97.0","v1.96.0","v1.96.1","v1.94.0","v1.95.1","v1.95.0","v1.93.0","v1.92.0","v1.90.0","v1.89.1","v1.89.0","v1.88.0","v1.87.0","v1.86.0","v1.86.1","v1.85.1","v1.85.0","v1.84.1","v1.84.0","v1.83.0","v1.82.0","v1.81.0","v1.80.0","v1.79.0","v1.78.0","v1.77.0","v1.74.0","v1.76.0","v1.75.0","v1.73.0","v1.72.0","v1.70.0","v1.69.0","v1.68.0","v1.67.0","v1.66.0","v1.52.0","v1.65.0","v1.64.0","v1.63.0","v1.62.0","v1.61.0","v1.60.0","v1.59.0","v1.58.0","v1.57.0","v1.56.0","v1.55.0","v1.54.0","v1.53.0","v1.51.0","v1.50.0","v1.46.0","v1.49.0","v1.48.0","v1.47.0","v1.45.0","v1.44.0","v1.43.0","v1.42.0","v1.41.0","v1.40.0","v1.39.1","v1.39.0","v1.38.0","v1.37.0","v1.36.0","v1.35.0","v1.34.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-107295.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L"}]}