MCP TypeScript server SDK: Współdzielone instancje transportu lub serwera przekazywały wiadomości jednego klienta HTTP do innego
Podsumowanie
W wersjach dotkniętych podatnością serwer MCP obsługiwany przez HTTP mógł przekazywać odpowiedzi i powiadomienia jednego klienta innemu klientowi. Działo się tak, gdy klienci współdzielili jeden bezstanowy transport lub pojedynczą instancję McpServer bądź Server.
Komunikaty były dopasowywane do połączenia wyłącznie na podstawie id JSON-RPC. Klienci SDK numerują żądania od 0, przez co identyfikatory kolidują ze sobą podczas standardowego użytkowania.
Czy problem mnie dotyczy?
Tak, jeśli więcej niż jeden klient ma dostęp do punktu końcowego HTTP, a kod tworzy transport lub serwer jednokrotnie podczas uruchomienia, zamiast dla każdego żądania lub dla każdej sesji. Do czasu tego wydania przykłady w dokumentacji README dla @modelcontextprotocol/hono, express, fastify oraz node przedstawiały ten wzorzec.
Wersje dotknięte podatnością: od @modelcontextprotocol/server 2.0.0 do 2.2.0.
Wersje niezagrożone:
createMcpHandler()z fabryką tworzącą nowy serwer przy każdym wywołaniu- serwery stdio
@modelcontextprotocol/sdk1.26.0 i nowsze
Co trzeba zrobić
Zaktualizuj do wersji @modelcontextprotocol/server 2.3.0 lub nowszej.
Wymagana jest również zmiana w kodzie aplikacji. Pakiet SDK uniemożliwia obecnie współdzielenie instancji, dlatego aplikacja objęta problemem po aktualizacji odrzuci kolejne żądania: drugie wywołanie connect() zostanie odrzucone z błędem ALREADY_CONNECTED, a bezstanowy transport odrzuci swoje drugie żądanie.
Zastosuj jedno z poniższych rozwiązań:
createMcpHandler(): przekaż fabrykę, która tworzy noweMcpServerprzy każdym wywołaniu.- Dla każdego żądania: twórz nowe
McpServeroraz nowy transport wewnątrz procedury obsługi żądania. - Dla każdej sesji: ustaw
sessionIdGeneratori utrzymuj jednoMcpServeroraz jeden transport na sesję.
Jeśli nie możesz jeszcze dokonać aktualizacji, wdrożenie powyższych zmian w kodzie eliminuje problem również w wersjach podatnych.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | @modelcontextprotocol/server | >= 2.0.0, < 2.3.0 | 2.3.0 |
Odnośniki
- https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-jm63-cq47-j5jp
- https://github.com/modelcontextprotocol/typescript-sdk/pull/2918
- https://github.com/modelcontextprotocol/typescript-sdk/commit/84804c22e45a662675a198f853b7f00063838a8d
- https://github.com/modelcontextprotocol/typescript-sdk
- Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:H- Słabość (CWE)
CWE-362- Platforma
- npm
- Paczka
@modelcontextprotocol/server- Ujawniono
- 20.10.2026
- Aktualizacja
- 20.10.2026 23:19
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-jm63-cq47-j5jp - CC BY 4.0
Historia podatności: @modelcontextprotocol/server
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 3
- Pierwsza → ostatnia
- 10.2026 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Wysoka 2
- Średnia 1
Ujawnienia w latach
- 2026: 3
-
MCP TypeScript server SDK: Współdzielone instancje transportu lub serwera przekazywały wiadomości jednego klienta HTTP do innego ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.