Model Context Protocol TypeScript SDK: Shared transport or server instances delivered one HTTP client's messages to another
Affects @modelcontextprotocol/server 2.0.0 through 2.2.0 when one HTTP transport or server instance is shared across clients. Fixed in 2.3.0.
Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.
- Exploited
- No known exploitation
- Fix
- Fixed in typescript-sdk 1.32.0 · server 2.3.0
- Who is exposed
- Specific setups only
Do first: Check whether your setup matches what the bug needs. Affected versions of @modelcontextprotocol/server from 2.0.0 through 2.2.0 (fixed in 2.3.0). The MCP server is reached over HTTP by more than one client. The application creates the transport or the server once at startup and shares it across clients, instead of once per request or per session.
- Last modified
- A 0-100 score for how much a CVE matters across the industry: exploitation, exposure, how widely the software is used, severity and whether a fix exists.What do these mean? →
- 20/100 · provisional
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Specific setups only
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- 1 proof of concept on GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
The Model Context Protocol TypeScript SDK (@modelcontextprotocol/server) can deliver one HTTP client's responses and notifications to another client when a single stateless transport or server instance is shared among multiple clients. An attacker can reach the affected HTTP server remotely without logging in and receive another client's responses and notifications, because messages are matched to connections only by request ID, which can collide.
Read the original description
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. From 2.0.0 until 2.3.0 in @modelcontextprotocol/server, applications that shared one stateless HTTP transport or one McpServer or Server instance among multiple clients could deliver responses and notifications to the wrong client. The affected surface is an MCP server reached over HTTP by multiple clients. The trigger is reuse of one stateless transport or server instance. Messages were associated with a connection using only the JSON-RPC request identifier. SDK clients start request identifiers at zero, so collisions occur in normal operation. Cross-client delivery exposes one client's responses and notifications to another client. The issue requires an HTTP endpoint reachable by more than one client and an application that constructs the server or transport once at startup instead of once per request or session. stdio servers and factory-created per-call servers are not affected. Upgrading causes reused instances to fail and therefore requires an application code change. This issue is fixed in @modelcontextprotocol/server 2.3.0.
cve.now Index
- Exploitation0/40No signal
- Exposure12/25Specific setups only, reachable over the network without a login
- Reach?/20Unknown. No tracked technology or package matched
- Severity7.7/10CVSS 7.7
- No patch0/5No signal
What would change the score
- Would score about 70 if added to CISA KEV
- Would score about 65 if CISA's SSVC rates exploitation active
What to do
Check whether your setup matches what the bug needs.
Affected versions of @modelcontextprotocol/server from 2.0.0 through 2.2.0 (fixed in 2.3.0). The MCP server is reached over HTTP by more than one client. The application creates the transport or the server once at startup and shares it across clients, instead of once per request or per session.Upgrade to a fixed version: typescript-sdk 1.32.0 · server 2.3.0.
Workaround: If you cannot upgrade yet, the same change fixes affected versions. The change is to build a new McpServer and transport per request or per session, as described in the advisory.
Timeline
- CVE published
- First seen by cve.now
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- modelcontextprotocol typescript-sdk
fixed in 1.32.0
- @modelcontextprotocol server
From 2.0.0 · fixed in 2.3.0
Evidence 6
- Advisory
- Exploit
- Repository
- Repository
- Repository
- Repository
Corrections
None so far.
Something wrong on this page? Report an error. Every fix is listed here.
Questions about CVE-2026-111770
Is CVE-2026-111770 being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data
What does this mean?
An MCP server reached over HTTP could deliver one client's responses and notifications to another client, which exposes one client's data to another.Source: github.com
Which versions are affected by CVE-2026-111770?
typescript-sdk: before 1.32.0. server: from 2.0.0 before 2.3.0.Source: cve.now feed data
Am I affected, and how do I check?
The issue applies to @modelcontextprotocol/server versions 2.0.0 through 2.2.0 when the application creates the transport or the server once at startup and shares it across clients, instead of once per request or per session. Check the installed @modelcontextprotocol/server version in the project's dependencies and check where the transport or server is created in the code.Source: github.com
How do I fix CVE-2026-111770?
Upgrade to @modelcontextprotocol/server 2.3.0 or later. If an upgrade is not yet possible, the advisory says the code change fixes affected versions: build a new McpServer and transport per request or per session.Source: github.com