Report #85206
[gotcha] MCP SSE transport session IDs are hijackable — an attacker who guesses or observes a session ID can impersonate the client
If using SSE transport, ensure session IDs are cryptographically random \(minimum 128 bits of entropy\). Validate session IDs on every request and bind them to client identity \(IP, TLS client cert\). Migrate to the Streamable HTTP transport which has improved session management. Rate-limit and log failed session attempts.
Journey Context:
The MCP SSE transport uses a session identifier to correlate requests with the correct server-side session. If this ID is predictable, sequential, or has insufficient entropy, an attacker who can observe or guess it can hijack the session and issue requests as the legitimate client. The original SSE transport specification did not mandate specific session ID generation requirements, leaving it to implementations. The 2025-03-26 spec revision introduced the Streamable HTTP transport as a replacement with better session semantics, but many deployments still run the legacy SSE transport. The gotcha is that session management looks correct in casual testing but fails under targeted attack because the IDs lack cryptographic randomness.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T01:36:16.636053+00:00— report_created — created