|
| 1 | +```toml |
| 2 | +[advisory] |
| 3 | +id = "RUSTSEC-0000-0000" |
| 4 | +package = "rmcp" |
| 5 | +date = "2026-04-29" |
| 6 | +url = "https://github.com/modelcontextprotocol/rust-sdk/security/advisories/GHSA-89vp-x53w-74fx" |
| 7 | +cvss = "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H" |
| 8 | +keywords = ["dns-rebinding", "mcp", "http"] |
| 9 | +aliases = ["CVE-2026-42559", "GHSA-89vp-x53w-74fx"] |
| 10 | +related = ["RUSTSEC-2026-0140", "GHSA-fvh2-gm75-j4j7"] |
| 11 | +references = [ |
| 12 | + "https://github.com/modelcontextprotocol/rust-sdk/pull/764", |
| 13 | + "https://github.com/modelcontextprotocol/rust-sdk/issues/815", |
| 14 | + "https://github.com/modelcontextprotocol/rust-sdk/issues/822", |
| 15 | + "https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#security-warning", |
| 16 | +] |
| 17 | + |
| 18 | +[versions] |
| 19 | +patched = [">= 1.4.0"] |
| 20 | +``` |
| 21 | + |
| 22 | +# DNS rebinding vulnerability in rmcp Streamable HTTP server transport |
| 23 | + |
| 24 | +Prior to version 1.4.0, the `rmcp` crate's Streamable HTTP server transport did |
| 25 | +not validate the incoming `Host` header. |
| 26 | + |
| 27 | +This allowed a malicious public website, via a DNS rebinding attack, to send |
| 28 | +requests to an MCP server running on the victim's loopback or private-network |
| 29 | +interface. |
| 30 | + |
| 31 | +An attacker who convinced a victim to visit a malicious page could enumerate and |
| 32 | +invoke tools exposed by a locally running rmcp-based MCP server, read resources |
| 33 | +and prompts, and trigger side effects limited by the tools exposed by that |
| 34 | +server. |
| 35 | + |
| 36 | +Non-HTTP transports such as stdio and child-process transports are not affected. |
| 37 | + |
| 38 | +## Patches |
| 39 | + |
| 40 | +The issue was fixed in `rmcp` 1.4.0 by adding default loopback-only host |
| 41 | +allowlist validation for the Streamable HTTP server transport. Incoming HTTP |
| 42 | +requests now validate the `Host` header and return HTTP 403 when the host is not |
| 43 | +allowed. |
| 44 | + |
| 45 | +Users should upgrade to `rmcp >= 1.4.0`. |
| 46 | + |
| 47 | +## Workarounds |
| 48 | + |
| 49 | +If upgrading is not possible, place the MCP server behind a reverse proxy |
| 50 | +configured to reject requests whose `Host` header is not one of the expected |
| 51 | +hostnames. Do not bind the MCP server to `0.0.0.0` without such validation. |
0 commit comments