CVE-2026-52869

MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal

Published Jul 15, 2026 CVSS 3.1 · 7.1 High EPSS < 1% KEV · Not listed
Description
The MCP Python SDK, called mcp on PyPI, is a Python implementation of the Model Context Protocol (MCP). Prior to 1.27.2, the SSE and stateful Streamable HTTP transports mcp.server.sse.SseServerTransport and mcp.server.streamable_http_manager.StreamableHTTPSessionManager route requests to existing sessions using only the session_id query parameter or Mcp-Session-Id header without verifying the authenticated principal that created the session, allowing a different bearer-token-authenticated client with a known session ID to inject JSON-RPC messages into that session. This issue is fixed in version 1.27.2.

Analysis

AI-generated

Technical impact

The MCP Python SDK, in versions earlier than 1.27.2, contains a flaw in its SSE and stateful Streamable HTTP transports that permits the server to route requests to an existing session based solely on the session_id query parameter or the Mcp-Session-Id header, without verifying the authenticated principal that created the session. Because of this mis‑authorization, an attacker who knows a valid session ID can inject arbitrary JSON‑RPC messages into that session, potentially enabling execution of any server‑exposed commands and leading to data tampering or unintended actions.

Affected Systems

Affected systems are the Model Context Protocol Python SDK (PyPI package mcp) versions earlier than 1.27.2. The issue is present in the SSE and stateful Streamable HTTP transports before the 1.27.2 release. Users of any older SDK version that relies on these transports are at risk until they upgrade.

Risk and Exploitability

The vulnerability carries a CVSS score of 7.1, indicating moderate to high severity, and an EPSS <1%, suggesting that the likelihood of exploitation is currently low but not negligible. The vulnerability is not listed in CISA’s KEV catalog. Exploitation would require an attacker to obtain the session identifier, which may be done through traffic sniffing or session ID reuse. Once an ID is known, a bearer‑token‑authenticated client can send malicious JSON‑RPC traffic to the server, and because the system fails to verify the authenticated principal, the injected commands are accepted without restriction.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Model Context Protocol Python SDK to version 1.27.2 or later, which contains the fix for the session validation flaw.
  • Immediately rotate or invalidate known session IDs that may have been exposed, and enforce secure session handling in downstream applications.
  • Implement application‑level checks to confirm that the authenticated principal matches the session owner before processing any JSON‑RPC requests, mitigating the improper authorization weakness.

Generated by OpenCVE AI on July 31, 2026 at 02:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-jpw9-pfvf-9f58 MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Modelcontextprotocol
Modelcontextprotocol python-sdk
Vendors & Products Modelcontextprotocol
Modelcontextprotocol python-sdk
Type Values Removed Values Added
Description The MCP Python SDK, called mcp on PyPI, is a Python implementation of the Model Context Protocol (MCP). Prior to 1.27.2, the SSE and stateful Streamable HTTP transports mcp.server.sse.SseServerTransport and mcp.server.streamable_http_manager.StreamableHTTPSessionManager route requests to existing sessions using only the session_id query parameter or Mcp-Session-Id header without verifying the authenticated principal that created the session, allowing a different bearer-token-authenticated client with a known session ID to inject JSON-RPC messages into that session. This issue is fixed in version 1.27.2.
Title MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal
Weaknesses CWE-639
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L'}

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 16, 2026, 1:00 PM
Reserved
Jun 8, 2026, 9:44 PM
Status
Analyzed
Published
Jul 15, 2026, 8:17 PM
Modified
Oct 24, 2026, 9:10 PM