Skip to main content

MCP Python SDK EUVDEUVD-2026-111366

| CVE-2026-116686 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-27 GitHub_M GHSA-rwrf-2pqf-9j8j
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Victim MCP client connects to attacker-controlled server
  2. Delivery
    Client calls a server tool
  3. Exploit
    Server returns outputSchema with external $ref URL
  4. Execution
    jsonschema resolver fetches http/file URL synchronously
  5. Persist
    Blind SSRF / local-file read from client context
  6. Impact
    Timeout-less fetch stalls every session (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The application must use the SDK as an MCP client - ClientSession over any transport, ClientSessionGroup, or the 2.x Client class - and must call tools on an MCP server the operator does not fully control; server-only applications are not affected. The malicious server must declare a tool outputSchema containing an $id or an out-of-document $ref/$dynamicRef (one not starting with '#') that uses an http://, https:// or file:// scheme. There is no configuration setting that disables this validation, so no non-default option is required on the victim side; the primary limiting factor is that exploitation depends entirely on the client connecting to and invoking tools on an untrusted/compromised server. The blind nature (fetched content is never returned to the server) limits confidentiality impact; the main realistic impact is the event-loop stall affecting all sessions in the process.

Impact

This is a medium-severity, client-side flaw (CVSS 6.5, CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H) in the official Model Context Protocol Python SDK, classified as CWE-918 (SSRF). The signals point to a real but bounded priority. The vuln.today decision label is 'this_month' (not act_now/emergency), it is NOT on CISA KEV, no EPSS score was supplied, and no public exploit was identified - only vendor advisory, PRs and patch commits. The CVSS impact set (C:N/I:N/A:H) is internally consistent and worth highlighting: although a malicious server can make the client read local files and issue internal HTTP(S) requests, the GHSA states the fetched content is used only as a schema and never returned to the server, so confidentiality/integrity impact is scored None and the dominant impact is availability - the synchronous, timeout-less fetch freezes every session in the process. Note two things defenders should verify: (1) CWE-918/SSRF and file:// reads normally imply confidentiality exposure, yet the official vector sets C:N precisely because the read data is not exfiltrated back to the attacker - the SSRF is blind, which lowers real-world severity versus a typical SSRF; (2) exploitation is gated on the victim acting as an MCP client that calls tools on an untrusted server, so this is not an internet-exposed service flaw. Overall: patch within a normal cycle, prioritize if your deployment connects MCP clients to third-party/untrusted servers.

Exploit ScenarioDerived

An attacker operates (or compromises) an MCP server that a victim's client connects to. When the client calls one of the server's tools, the server returns a tool whose declared outputSchema contains a $ref pointing to an attacker-chosen http://, https:// or file:// URL; the client's jsonschema default resolver fetches it, producing a blind internal request or local-file read from the client's network/filesystem position, and - because resolution runs synchronously with no timeout - a server that accepts the connection then stalls will freeze every session in the client process. No public exploit was identified at time of analysis; the attack requires the client to call tools on a server the operator does not fully control (AV:N/AC:L, but UI:R reflecting that the client must actively invoke the tool).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Client-side server-side request forgery and denial of service in the official Model Context Protocol Python SDK: when a connected MCP server declares a tool outputSchema containing an $id or an out-of-document $ref/$dynamicRef (http://, https:// or file://), the SDK's ClientSession, ClientSessionGroup and 2.x Client classes resolve that reference with jsonschema's default resolver, so the client fetches the URL or reads the local file from its own network and filesystem position and blocks the asyncio event loop for every session in the process while doing so. Applications using the SDK purely as a server are not affected; the vulnerable code runs only when a client invokes tools on a server the operator does not fully control. Versions 1.10.0 through 1.29.1 and 2.0.0 through 2.1.1 are affected and are fixed in 1.30.0 and 2.2.0 respectively; no public exploit has been identified at time of analysis, the fetched content is never returned to the malicious server (blind SSRF), and the CVSS 6.5 score reflects availability impact (A:H) rather than confidentiality.

RemediationAI

Vendor-released patch: upgrade to mcp 1.30.0 on the 1.x branch or 2.2.0 on the 2.x branch (or later); both releases resolve references only within the schema document the server sent plus the standard metaschemas, so result validation performs no network or file access. Be aware that after upgrading, a tool whose outputSchema points outside its own document now fails at call time with RuntimeError ("Invalid schema for tool ..."), while in-document references such as #/$defs/... continue to work - this can surface as a functional regression for servers relying on external schema references and should be tested before rollout. Until the upgrade is applied, the vendor's only guidance is to call tools only on MCP servers you trust and, as a partial stopgap, to skip tools whose outputSchema contains an $id, or a $ref / $dynamicRef that does not start with '#'; there is no SDK setting that disables the vulnerable validation. Because the fetch is synchronous and unbounded, clients that must talk to semi-trusted servers should also be isolated in a process or container whose egress to internal HTTP(S) endpoints and whose filesystem view are restricted, so that a stalled resolution or a file:// read cannot affect other sessions or sensitive data. Details are in the advisory https://github.com/modelcontextprotocol/python-sdk/security/advisories/GHSA-rwrf-2pqf-9j8j and the fixes in https://github.com/modelcontextprotocol/python-sdk/pull/3394 and https://github.com/modelcontextprotocol/python-sdk/pull/3396.

Affected VersionsENISA

python-sdk 2.0.0, < 2.2.0
python-sdk 1.10.0, < 1.30.0

Affected Packages

pypi mcp fix: 1.30.0, 2.2.0
euvd python_sdk fix: 1.30.0, 2.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 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

The MCP Python SDK validates structured tool results against a server-supplied JSON Schema outputSchema using the jsonschema library, which delegates reference resolution to the referencing package. In affected versions the validator was constructed without an explicit Registry, so the default resolver fetched any $ref it could not resolve locally by opening the URI, including http://, https:// and file:// schemes (the fallback retriever even emits an "Automatically retrieving remote references" DeprecationWarning). This is CWE-918 (server-side request forgery) applied in the reverse direction: the malicious MCP server supplies the URL, but the request originates from the client, which is why the impacted classes are ClientSession (over any transport), ClientSessionGroup, and the 2.x Client - server-only deployments never reach this code path. Two properties make it worse than a plain SSRF: resolution runs synchronously on the asyncio event loop with no timeout, so a target that accepts the connection and then goes silent freezes every session in the process; and there was no configuration switch to turn the validation off. The fix in PR 3394 constructs the validator with an explicit empty referencing.Registry(), so $refs resolve only within the schema document the server sent plus bundled JSON Schema metaschemas, and catches referencing.exceptions.Unresolvable to surface it as a RuntimeError at call time. The fix commits are 5ebdfed4060d8e5b11b8e2348f86bad4d1fb8836 and 6705402e246dc4eb1fcdf4d9902b78d3c9c36e1b.

Know when Python Sdk 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 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

A remote malicious server triggers the flaw (AV:N/AC:L/PR:N); UI:R because the client must actively call the tool; blind fetch yields C:N/I:N, and the timeout-less event-loop stall gives A:H.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 27, 2026 - 20:03 EUVD

DescriptionCVE.org

The Model Context Protocol Python SDK is the official Python SDK for Model Context Protocol servers and clients. From 1.10.0 until 1.30.0 and 2.2.0, ClientSession, ClientSessionGroup, and Client tool calls validate server-declared outputSchema documents with jsonschema's default resolver, causing an unresolved $ref value to fetch an HTTP, HTTPS, or file URL from the client's network and filesystem context. A server can trigger blind requests or local-file reads and can stall every session in the process because resolution runs synchronously on the event loop without a timeout. This issue is fixed in versions 1.30.0 and 2.2.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 84 pypi packages depend on mcp (66 direct, 18 indirect)

Ecosystem-wide dependent count for version 2.0.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Medium
official MCP Python SDK, common in growing AI-agent ecosystem, not yet ubiquitous
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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