RMCP: Unauthenticated permanent session-table leak in rmcp Streamable HTTP server transport leads to remote denial-of-service
RMCP is an official Rust SDK for the Model Context Protocol. Prior to 2.0.0, the rmcp crate's stateful Streamable HTTP server in crates/rmcp/src/transport/streamable_http_server/tower.rs allows an unauthenticated client to send a well-formed JSON-RPC POST that is not an initialization request, or an initialization request with a mismatched protocol header, causing StreamableHttpService::handle_post to call LocalSessionManager.create_session before validating the message. An early validation failure returns without removing the inserted LocalSessionHandle from LocalSessionManager.sessions, permanently retaining session and channel state for the server process lifetime. Repeated requests can grow the shared session table without bound, degrade legitimate-client latency through lock contention, exhaust memory, and terminate the server. This issue is fixed in version 2.0.0.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-63128
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 21:56 UTC · Revision 1
Source evidence
RMCP: Unauthenticated permanent session-table leak in rmcp Streamable HTTP server transport leads to remote denial-of-service
core-osv · Original sourcePublished 16 Sept 2026, 14:49 UTC
RMCP is an official Rust SDK for the Model Context Protocol. Prior to 2.0.0, the rmcp crate's stateful Streamable HTTP server in crates/rmcp/src/transport/streamable_http_server/tower.rs allows an unauthenticated client to send a well-formed JSON-RPC POST that is not an initialization request, or an initialization request with a mismatched protocol header, causing StreamableHttpService::handle_post to call LocalSessionManager.create_session before validating the message. An early validation failure returns without removing the inserted LocalSessionHandle from LocalSessionManager.sessions, permanently retaining session and channel state for the server process lifetime. Repeated requests can grow the shared session table without bound, degrade legitimate-client latency through lock contention, exhaust memory, and terminate the server. This issue is fixed in version 2.0.0.
osv:CVE-2026-63128
Complete source record
{
"id": "93f2c71c4574b85023db18d22459bcd1bc224b6f409759fd881bf7b717a0cf94",
"url": "https://osv.dev/vulnerability/CVE-2026-63128",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "RMCP: Unauthenticated permanent session-table leak in rmcp Streamable HTTP server transport leads to remote denial-of-service",
"summary": "RMCP is an official Rust SDK for the Model Context Protocol. Prior to 2.0.0, the rmcp crate's stateful Streamable HTTP server in crates/rmcp/src/transport/streamable_http_server/tower.rs allows an unauthenticated client to send a well-formed JSON-RPC POST that is not an initialization request, or an initialization request with a mismatched protocol header, causing StreamableHttpService::handle_post to call LocalSessionManager.create_session before validating the message. An early validation failure returns without removing the inserted LocalSessionHandle from LocalSessionManager.sessions, permanently retaining session and channel state for the server process lifetime. Repeated requests can grow the shared session table without bound, degrade legitimate-client latency through lock contention, exhaust memory, and terminate the server. This issue is fixed in version 2.0.0.",
"evidence": "osv:CVE-2026-63128",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-63128",
"aliases": [
"CVE-2026-63128",
"GHSA-9pj6-vhgr-3mwh"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/modelcontextprotocol/rust-sdk",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "67a30859443ab0fe79f2d50307c7d7bc9518f7e3"
},
{
"fixed": "dfa7fd6f9309deab60bea230b041be9a3fcda846"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.0.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "dfa7fd6f9309deab60bea230b041be9a3fcda846"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "67a30859443ab0fe79f2d50307c7d7bc9518f7e3"
}
],
"source": "REFERENCES_TAG",
"original_tag": "rmcp-v2.0.0"
}
]
}
}
],
"versions": [
"rmcp-v1.8.0",
"rmcp-macros-v1.8.0",
"rmcp-v1.7.0",
"rmcp-macros-v1.7.0",
"rmcp-v1.6.0",
"rmcp-macros-v1.6.0",
"rmcp-v1.5.0",
"rmcp-macros-v1.5.0",
"rmcp-v1.4.0",
"rmcp-macros-v1.4.0",
"rmcp-v1.3.0",
"rmcp-macros-v1.3.0",
"rmcp-v1.2.0",
"rmcp-macros-v1.2.0",
"rmcp-v1.1.1",
"rmcp-macros-v1.1.1",
"rmcp-v1.1.0",
"rmcp-macros-v1.1.0",
"rmcp-v1.0.0",
"rmcp-macros-v1.0.0",
"rmcp-v1.0.0-alpha",
"rmcp-macros-v1.0.0-alpha",
"rmcp-v0.17.0",
"rmcp-macros-v0.17.0",
"rmcp-v0.16.0",
"rmcp-macros-v0.16.0",
"rmcp-v0.15.0",
"rmcp-macros-v0.15.0",
"rmcp-v0.14.0",
"rmcp-macros-v0.14.0",
"rmcp-v0.13.0",
"rmcp-macros-v0.13.0",
"rmcp-v0.12.0",
"rmcp-macros-v0.12.0",
"rmcp-v0.11.0",
"rmcp-macros-v0.11.0",
"rmcp-v0.10.0",
"rmcp-macros-v0.10.0",
"rmcp-v0.9.1",
"rmcp-macros-v0.9.1",
"rmcp-v0.9.0",
"rmcp-macros-v0.9.0",
"rmcp-v0.8.5",
"rmcp-macros-v0.8.5",
"rmcp-v0.8.4",
"rmcp-macros-v0.8.4",
"rmcp-v0.8.3",
"rmcp-macros-v0.8.3",
"rmcp-v0.8.2",
"rmcp-macros-v0.8.2",
"rmcp-v0.8.1",
"rmcp-macros-v0.8.1",
"rmcp-v0.8.0",
"rmcp-macros-v0.8.0",
"rmcp-v0.7.0",
"rmcp-macros-v0.7.0",
"rmcp-v0.6.3",
"rmcp-macros-v0.6.3",
"rmcp-v0.6.2",
"rmcp-macros-v0.6.2",
"rmcp-v0.6.1",
"rmcp-macros-v0.6.1",
"rmcp-v0.6.0",
"rmcp-macros-v0.6.0",
"rmcp-v0.5.0",
"rmcp-macros-v0.5.0",
"rmcp-v0.4.1",
"rmcp-macros-v0.4.1",
"rmcp-v0.4.0",
"rmcp-macros-v0.4.0",
"rmcp-v0.3.2",
"rmcp-macros-v0.3.2",
"rmcp-v0.3.1",
"rmcp-macros-v0.3.1",
"rmcp-v0.3.0",
"rmcp-macros-v0.3.0",
"rmcp-v0.2.1",
"rmcp-macros-v0.2.1",
"rmcp-v0.2.0",
"rmcp-macros-v0.2.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-63128.json"
}
}
],
"modified": "2026-10-28T02:30:32.092951554Z",
"provider": "osv",
"references": [
"https://github.com/modelcontextprotocol/rust-sdk/releases/tag/rmcp-v2.0.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63128.json",
"https://github.com/modelcontextprotocol/rust-sdk/security/advisories/GHSA-9pj6-vhgr-3mwh",
"https://nvd.nist.gov/vuln/detail/CVE-2026-63128",
"https://github.com/modelcontextprotocol/rust-sdk/commit/dfa7fd6f9309deab60bea230b041be9a3fcda846",
"https://github.com/modelcontextprotocol/rust-sdk/pull/934"
],
"provider_metadata": {
"cwe_ids": [
"CWE-400",
"CWE-401",
"CWE-772"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63128.json"
}
},
"related_cves": [
{
"value": "CVE-2026-63128",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 499094,
"published_at": "2026-09-16T14:49:04.401+00:00"
}