RubySec

Providing security resources for the Ruby community

CVE-2026-67432 (mcp): Unbounded JSON-RPC request body causes uncontrolled memory allocation in StreamableHTTPTransport

Unbounded JSON-RPC request body causes uncontrolled memory allocation in StreamableHTTPTransport

Published: July 07, 2026

SECURITY IDENTIFIERS

GEM

mcp

SEVERITY

CVSS v3.x: 7.5 (High)

PATCHED VERSIONS

>= 0.23.0

DESCRIPTION

Summary

An unauthenticated remote attacker can force any MCP Ruby SDK server using MCP::Server::Transports::StreamableHTTPTransport to allocate gigabytes of memory by sending a single oversized JSON-RPC POST. The transport reads the entire HTTP body into a Ruby String and parses it with JSON.parse(body, symbolize_names: true) with no size limit, no Content-Length pre-check, and no streaming parser, allowing trivial denial of service against the worker process.

Impact

  • Attacker requirements: none beyond TCP reach of the MCP endpoint. No session, no credentials, no prior interaction.

  • Effect: memory-exhaustion denial of service. A single request can take a worker offline; sustained low-rate requests keep the service down across worker restarts. On multi-tenant deployments a single attacker tenant can starve neighbours.

  • Affected deployments: every server mounting MCP::Server::Transports::StreamableHTTPTransport as a Rack app — the canonical HTTP deployment pattern. Both stateful and stateless: true configurations are affected.

RELATED