{"answers":{"affected":"It affects 1 product.","exploited":"There is no known exploitation of CVE-2026-65975 in the wild and no public exploit code.","fix":"Upgrade to a fixed version.","what":"CVE-2026-65975 is a medium-severity missing authorization vulnerability in pydantic-ai, published on 29 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-65975 and fix it if it is affected.\n\nWhat it is: CVE-2026-65975 is a medium-severity missing authorization vulnerability in pydantic-ai, published on 29 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-65975 in the wild and no public exploit code.\n\nAffected product: pydantic-ai. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-65975/ (Markdown: https://insights.sbomify.com/CVE-2026-65975/index.md)","id":"CVE-2026-65975","markdown":"https://insights.sbomify.com/CVE-2026-65975/index.md","name":"CVE-2026-65975","record":{"aliases":["CLEANSTART-2026-DV71311","GHSA-jpr8-2v3g-wgf9"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["code_execution","security_bypass"],"network_reachable":"yes","non_default_config":false,"product_category":"Python AI agent framework","requires_auth":"none","summary":"Remote clients can execute server tools with arbitrary arguments by exploiting a sanitization flaw, bypassing model-based guardrails in Pydantic AI.","user_interaction":"not_required","vuln_class":"missing_authorization"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"pydantic_ai","vendor":"pydantic"}],"cvss":{"score":6.5,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","version":"3.1"},"cwes":[{"id":"CWE-863","name":"Incorrect Authorization"}],"description":"Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. In versions 1.88.0 up to but not including 1.107.1 and 2.0.0b1 up to but not including 2.5.0, the UI adapters (AG-UI via Agent.to_ag_ui()/AGUIAdapter, and Vercel AI via VercelAIAdapter) use sanitize_messages to strip unresolved (\"dangling\") client-submitted tool calls from untrusted message history before it reaches the agent, a defense-in-depth default that prevents the agent from executing tool calls the model never emitted. However, the strip anchored to a message index computed before sanitization ran, so when a trailing client message sanitized to empty and was dropped (for example a client system message under the default manage_system_prompt='server'), a preceding assistant response carrying an unresolved tool call became the new tail and was dispatched without inspection. As a result, a remote client could cause a registered, non-approval server tool to run with client-supplied arguments rather than arguments the model produced. The impact is bounded by what the affected tools do and is most significant for applications that gate tool execution in a model-request hook (before_model_request / after_model_request), since a forged call skips the model turn and bypasses that guardrail; approval-gated tools (requires_approval=True) are not auto-executed by this path. This issue has been fixed in versions 1.107.1 and 2.5.0.","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"Missing authorization in pydantic-ai","id":"CVE-2026-65975","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":null,"products":[],"type":"missing_authorization","year":"2026"},"n_packages":0,"n_references":1,"next":{"headline":"Deskflow: Clipboard receiver can accumulate data beyond Deskflow's configured clipboard size limit","id":"CVE-2026-65976"},"packages":[],"prev":{"headline":"ERPNext: Server-Side Template Injection leading to Remote Code Execution","id":"CVE-2026-65974"},"products":["pydantic-ai","pydantic-ai-slim"],"published":"2026-07-29","related":[{"cvss_score":8.6,"headline":"Pydantic AI Affected by Server-Side Request Forgery (SSRF) in URL Download Handling","id":"CVE-2026-25580","kev_date_added":null,"published":"2026-02-06"},{"cvss_score":7.6,"headline":"Pydantic AI Web chat UI (`Agent.to_web()`, `clai web`): a website visited by the developer can trigger agent runs and server-side tool execution on the local chat endpoint","id":"CVE-2026-107295","kev_date_added":null,"published":"2026-10-08"},{"cvss_score":7.5,"headline":"Pydantic AI: Concurrency-limited models can keep their slot when a streamed request ends early","id":"CVE-2026-107286","kev_date_added":null,"published":"2026-10-08"},{"cvss_score":7.1,"headline":"Pydantic AI affected by Stored XSS via Path Traversal in Web UI CDN URL","id":"CVE-2026-25640","kev_date_added":null,"published":"2026-02-06"},{"cvss_score":6.8,"headline":"Pydantic AI: SSRF cloud-metadata blocklist bypass via IPv6 zone identifiers","id":"CVE-2026-107289","kev_date_added":null,"published":"2026-10-08"},{"cvss_score":6.8,"headline":"Pydantic AI: SSRF cloud-metadata blocklist bypass via IPv4-mapped IPv6 (Incomplete fix of CVE-2026-25580)","id":"CVE-2026-46678","kev_date_added":null,"published":"2026-07-29"},{"cvss_score":6.8,"headline":"Pydantic AI: Unvalidated UploadedFile references in UI adapters allow server-side file access using the application's credentials","id":"CVE-2026-54249","kev_date_added":null,"published":"2026-07-29"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"yes","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-07-30","vendors":["pydantic"]},"summary":"Remote clients can execute server tools with arbitrary arguments by exploiting a sanitization flaw, bypassing model-based guardrails in Pydantic AI.","url":"https://insights.sbomify.com/CVE-2026-65975/"}