RubySec

Providing security resources for the Ruby community

CVE-2026-67430 (mcp): Unbounded session retention in StreamableHTTPTransport allows memory exhaustion via initialize flood

Unbounded session retention in StreamableHTTPTransport allows memory exhaustion via initialize flood

Published: July 07, 2026

SECURITY IDENTIFIERS

GEM

mcp

SEVERITY

CVSS v3.x: 5.3 (Medium)

PATCHED VERSIONS

>= 0.23.0

DESCRIPTION

Summary

In its default configuration, MCP::Server::Transports::StreamableHTTPTransport never expires sessions. Every successful initialize request stores a new ServerSession and a session record under a fresh UUID, and the only path that removes them is an explicit client-issued HTTP DELETE. An unauthenticated attacker can repeatedly initialize new sessions and immediately disconnect, forcing the server to retain an unbounded number of ServerSession objects until memory is exhausted.

Impact

  • Attacker requirements: unauthenticated TCP reach of the MCP endpoint. No session, no credentials.

  • Effect: memory-exhaustion denial of service. A sustained or distributed attacker can OOM the worker; on services that recycle workers, the attacker simply repeats. On multi-tenant gateways, one tenant can starve all others.

  • Affected deployments: every deployment that does not opt into session_idle_timeout. Because the README presents this as an opt-in mitigation rather than a default, real-world deployments are likely to ship vulnerable.

RELATED