Skip to main content
← Vulnerabilities

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.

7.7HighCNA
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.

Published
Last modified
20/100 · provisional
Specific setups only
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

20Pcve.now Index 20 of 100 · methodology v3 · provisional
  • 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

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  4. 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

  1. Advisory
  2. Exploit
  3. Repository
  4. Repository
  5. Repository
  6. 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