Skip to content
Fencer Intel
medium 6.5

GHSA-c9f9-cp8h-jcj5 json

Unbounded response body buffering in Streamable HTTP clients

published 8d ago modified 4d ago also RUSTSEC-2026-0462

cvss
6.5
version 3.1, OSV
cisa kev
Not listed
not in CISA's catalog
epss
—
no score, EPSS covers CVEs only
public exploits
0
none known

Summary

Before 3.9.0, the built-in Streamable HTTP clients in rmcp read non-streaming HTTP response bodies into memory with no size limit. Both the reqwest client (`transport-streamable-http-client-reqwest`) and the Unix socket client (`transport-streamable-http-client-unix-socket`) were affected:

- `application/json` responses to POST requests were read in full before parsing. - Non-2xx responses were read in full for error reporting.

A malicious or compromised MCP server can answer with a body that never ends, for example a chunked `application/json` response that streams whitespace. The client buffers it until the process runs out of memory. This works during `initialize`, before any authentication. On desktop or agent hosts, this terminates the whole host application.

Server-sent event streams are not affected. Each event is already capped by `max_sse_event_size`, and events are not accumulated.

The flaw was corrected in 3.9.0. Successful JSON bodies are limited to 16 MiB and non-success bodies to 64 KiB. Bytes are counted while streaming, after decompression. An oversized `Content-Length` is rejected before the body is read, and an oversized body is rejected with `StreamableHttpError::ResponseBodyTooLarge` instead of being truncated.

If you cannot upgrade, use a custom `StreamableHttpClient` that enforces a response body limit, or connect only to trusted MCP servers.

Patch / fix

  • crates.io rmcp 3.9.0

Is GHSA-c9f9-cp8h-jcj5 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

CVSS scores

assigned by version score vector
OSV 3.1 6.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H

Affected packages

ecosystem package affected fixed in
crates.io rmcp
>=0.2.0, <3.9.0
3.9.0

References

Sources

Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.