CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-67430

mediumCVSS 5.3covered by 2 sourcesfirst seen 2026-07-29
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. Affected component lib/mcp/server/transports/streamable_http_transport.rb: - Line 27, constructor: def initialize(server, stateless: false, enable_json_response: false, session_idle_timeout: nil) — the default for session_idle_timeout is nil. - Line 46: start_reaper_thread if @session_idle_timeout — when the timeout is nil, the reaper that prunes idle sessions is never started. - Lines 604–643 (handle_initialization): every successful initialize inserts a new session record; the only removal sites are handle_delete (client-controlled) and stream-error paths. The project README acknowledges the insecure default (line 1605): By default, sessions do not expire. To mitigate session hijacking risks, you can set a session_idle_timeout (in seconds). Per-session memory cost is non-trivial: each entry contains a ServerSession instance (with its own Mutex, @in_flight hash, capabilities hash, and server reference), a top-level hash entry under the session UUID, and per-pending-request Queue allocations. Proof of concept Server (session_poc_server.rb) Starts the transport in its default configuration (no session_idle_timeout) and reports the in-memory session count plus process RSS every two seconds. require "bundler/setup" require "mcp" require "mcp/server/transports/streamable_http_transport" require "rackup" require "webrick" require "rackup/handler/webrick" server = MCP::Server.new(name: "session-poc-target", tools: []) transport = MCP::Server::Transports::StreamableHTTPTransport.ne

⚡ Watch CVE-2026-67430

Get an email if CVE-2026-67430 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Exploitation outlook

Advisory coverage (2)

External references

NVD record for CVE-2026-67430

CVE.org record

Embed the live status

CVE-2026-67430 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-67430 status](https://www.csirts.com/badge/CVE-2026-67430)](https://www.csirts.com/cve/CVE-2026-67430)