Skip to main content

Pydantic AI EUVDEUVD-2026-95095

| CVE-2026-107291 LOW
Improper Removal of Sensitive Information Before Storage or Transfer (CWE-212)
2026-10-08 GitHub_M GHSA-4x9p-g9wm-8q7f
2.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain read access to telemetry backend
  2. Exploit
    Target agent triggers tool error or exception
  3. Execution
    Exception event/stacktrace and model_request_parameters exported unredacted
  4. Impact
    Read sensitive agent content from traces

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V14 - Data Protection Data removal before release
Exploitation Conditions

Exploitation requires the non-default protective setting InstrumentationSettings(include_content=False) to be active (deployments not using this setting are explicitly unaffected by the bypass), OpenTelemetry instrumentation to be enabled, and an error condition - a tool ModelRetry/ToolFailed, a tool-code exception, a validation error, or a failed model request/embedding/image-generation call - to actually occur so that an exception event, stack trace, error status description, or serialized model_request_parameters (instructions / prompted_output_template) is produced. The exposure is further limited because it grants no new access to agent data: the leaked content only reaches parties who already have read access to the configured telemetry backend, so impact depends entirely on that backend's audience being broader than the agent data's intended audience.

Impact

This is a genuinely low-priority issue, and the signals agree. The vendor CVSS 4.0 base score is 2.3 (Low), with VC:L and VI:N/VA:N - a limited confidentiality-only impact and no integrity or availability effect. No EPSS score, KEV listing, or public POC was provided, so exploitation likelihood indicators are absent rather than elevated; per the precision rules this means no public exploit is identified. Critically, the vulnerability does not grant any new access: the leaked content (tool feedback, provider error bodies, runtime instructions, structured-output templates) is only visible to parties who can already read the configured telemetry/observability backend. The vendor's AT:P (Attack Requirement: Present) and PR:L correctly reflect that exploitation is contingent on both a specific defensive configuration (include_content=False) being in use AND an error/exception actually occurring, plus read access to the telemetry destination. The real-world risk is therefore confined to organizations that (a) deliberately enabled include_content=False to withhold sensitive content, and (b) export telemetry to a backend with a broader audience than the agent data itself - for those deployments this is a redaction-bypass/compliance gap rather than a remotely exploitable breach. The one caveat worth verifying: AV:N is assigned because telemetry backends are typically network-accessible, but the actual 'access' is to an observability system, not the agent - defenders should interpret the network vector in that light.

Exploit ScenarioDerived

An organization running Pydantic AI sets InstrumentationSettings(include_content=False) specifically to keep user prompts and model outputs out of its shared observability platform, then grants its broader engineering or SRE team read access to that platform. When an agent tool fails (e.g., a ModelRetry or a provider error), the exception message, stack trace, error status description, and serialized model_request_parameters still flow to the backend, exposing runtime instructions, tool arguments/results, and structured-output templates to telemetry readers who were never meant to see agent content. No public exploit code exists; exploitation is passive observation of leaked trace data rather than an active attack.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 08, 2026

Information disclosure in Pydantic AI's OpenTelemetry instrumentation (vulnerable ranges >= 0.3.4, < 1.107.6 and >= 2.0.0b1, < 2.44.0) lets sensitive agent content reach telemetry backends even when the content-redaction setting InstrumentationSettings(include_content=False) is enabled, because exception events, exception stack traces, error status descriptions, and the serialized model_request_parameters attribute were never covered by that setting. Affected deployments must have OpenTelemetry instrumentation active, must have configured include_content=False, and must actually hit an error path - a tool ModelRetry/ToolFailed, a tool-code exception, a validation error, or a failed model request, embedding, or image-generation call - for the leak to occur; data reaches only parties who already have read access to the configured telemetry backend, so no new access to agent data is granted. There is no public exploit identified at time of analysis, no CISA KEV listing, and the assessed severity is low (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N), with vendor-released patches available in 1.107.6 and 2.44.0.

RemediationAI

Vendor-released patch: upgrade pydantic-ai and pydantic-ai-slim to 1.107.6 (1.x line) or 2.44.0 (2.x line); the fixes were delivered in the upstream pull requests https://github.com/pydantic/pydantic-ai/pull/8403, https://github.com/pydantic/pydantic-ai/pull/8404, https://github.com/pydantic/pydantic-ai/pull/8408, https://github.com/pydantic/pydantic-ai/pull/8428 and https://github.com/pydantic/pydantic-ai/pull/8429, with representative commits including 4e013c51a50659aba2adf7853bfb22bb77f6a518 and de4e61515327bd80a19cd8552001c30933e6acc3, and details in GHSA-4x9p-g9wm-8q7f. Where an immediate upgrade is not possible, the most effective compensating control is to narrow the audience of the telemetry backend: tighten RBAC on the observability platform, rotate or scope the ingestion credentials, and separate traces from agents handling sensitive prompts into a dedicated project or tenant - the trade-off is added operational overhead and the need to duplicate dashboards per tenant. Because the leaked content travels in span exception events, error status descriptions, and the model_request_parameters attribute, an OpenTelemetry Collector can be placed in front of the backend with an attributes/transform processor that drops exception.message and exception.stacktrace and strips the status description and model_request_parameters; the trade-off is loss of error diagnostics and stack traces for legitimate debugging. Disabling instrumentation entirely (removing Agent.instrument_all or setting include_content=False with no exporter configured) removes the exposure at the cost of losing all observability. Finally, avoid echoing tool arguments, tool results, or provider error bodies inside exception messages raised by tool code, since the pre-fix code paths export those messages verbatim.

Affected VersionsENISA

pydantic-ai-slim 0.3.4, < 1.107.6
pydantic-ai 0.3.4, < 1.107.6
pydantic-ai 2.0.0b1, < 2.44.0
pydantic-ai-slim 2.0.0b1, < 2.44.0

Affected Packages

pypi pydantic-ai fix: 1.107.6, 2.44.0
pypi pydantic-ai-slim fix: 1.107.6, 2.44.0
euvd pydantic_ai_2_0_0b1 fix: 2.44.0
euvd pydantic_ai_slim_2_0_0b1 fix: 2.44.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

Pydantic AI is a Python agent framework for Generative AI applications, distributed on PyPI as both pydantic-ai and pydantic-ai-slim (reflected in the CPEs cpe:2.3:a:pydantic:pydantic-ai and cpe:2.3:a:pydantic:pydantic-ai-slim). Its instrumentation layer builds OpenTelemetry spans for agent runs, tool executions, model requests, embeddings, image generation, and realtime sessions, and offers InstrumentationSettings(include_content=False) so that prompts, completions, tool arguments, and tool results are not exported to an observability backend. The root cause maps to CWE-212 (Improper Removal of Sensitive Information Before Storage or Transfer): the message attributes (gen_ai.input.messages, gen_ai.tool.call.arguments, gen_ai.tool.call.result) honoured the setting, but three other export paths did not, because they derive from OpenTelemetry SDK defaults or from generic parameter serialization rather than from explicit content handling. First, Span.record_exception was used with SDK defaults, so exception events carried both the exception message and the stack trace; a ModelRetry or ToolFailed exception's message is literally the feedback text sent back to the model and can quote tool arguments and results, and a run-ending error chained from the last retry repeated that text inside its stack trace, while provider failures surfaced the provider's error response body. Second, the SDK derives the span's ERROR status description from the exception type and message, so the same text was transmitted a second time via set_status_on_exception. Third, model_request_parameters serialized the request's instruction parts in full - static instructions and those assembled from dependencies at request time - along with the prompted_output_template used for structured output. The fix introduces a shared _record_exception helper that, when include_content is False, emits only an 'exception' event with exception.type and exception.escaped (matching the SDK's own formatting) and sets status with a null description, and it disables the two SDK hooks (record_exception=False, set_status_on_exception=False) on the run span so the redaction cannot be bypassed. Because no exploitation primitive or authentication bypass is involved, the practical impact is confined to the audience of the telemetry backend.

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 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.1 LOW

AC:H because exploitation needs the non-default include_content=False config plus an error to occur; PR:L and AV:N reflect required read access to a network-reachable telemetry backend; only limited confidentiality impact, no integrity/availability.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

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

DescriptionCVE.org

Pydantic AI is a Python agent framework for building applications and workflows with Generative AI. From 0.3.4 until 1.107.6 and 2.44.0, OpenTelemetry instrumentation configured with InstrumentationSettings(include_content=False) can still export sensitive agent content through exception.message and exception.stacktrace events, error status descriptions, and model_request_parameters containing instructions or the prompted_output_template. The exposed data is available to readers of the configured telemetry backend and can include tool feedback, provider error bodies, runtime instructions, and structured-output templates even though message attributes are redacted. This issue does not grant new access to agent data, and deployments that do not use include_content=False are not affected by the setting bypass. This issue is fixed in versions 1.107.6 and 2.44.0.

Blast Radius

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

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

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Medium
popular but relatively new Python GenAI agent framework, growing adoption
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-107287 MEDIUM
6.5 Oct 08

Denial of service in Pydantic AI's local web_fetch_tool and WebFetch local fallback allows an attacker-controlled HTML p

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

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