MCP TypeScript client SDK: transporty HTTP i żądania OAuth podążały za przekierowaniami cross-origin
Podsumowanie
W wersjach dotkniętych problemem mechanizmy transportowe klienta HTTP oraz żądania OAuth w SDK podążały za przekierowaniami do dowolnego źródła (origin).
Jeśli serwer MCP lub serwer autoryzacyjny przekierował żądanie do innego źródła, źródło to otrzymywało niestandardowe nagłówki żądania (takie jak X-API-Key ustawiony w requestInit.headers) oraz nagłówek mcp-session-id. W przypadku kodów 307 lub 308 przesyłana była również treść żądania, w tym żądania tokenów OAuth wraz z ich refresh_token oraz client_secret.
W nowoczesnych środowiskach uruchomieniowych fetch domyślnie odrzuca już nagłówek Authorization pomiędzy różnymi źródłami.
Czy problem mnie dotyczy?
Tak, jeśli aplikacja korzysta z StreamableHTTPClientTransport, SSEClientTransport lub funkcji klienta OAuth z SDK, takich jak auth(). Klienci korzystający ze stdio nie są dotknięci tą podatnością.
Podatne wersje:
- Wszystkie wersje
@modelcontextprotocol/sdkdo 1.31.0 włącznie @modelcontextprotocol/clientod wersji 2.0.0 do 2.2.0
Co trzeba zrobić
Zaktualizuj do:
- 1.x:
@modelcontextprotocol/sdk1.32.0 lub nowszej - 2.x:
@modelcontextprotocol/client2.3.0 lub nowszej
Przekierowania są teraz obsługiwane wyłącznie w ramach tego samego źródła (same-origin), a w przeglądarkach nie są realizowane wcale. Jeśli serwer MCP lub serwer autoryzacyjny celowo przekierowuje do innego źródła, należy skonfigurować docelowy adres URL. Ustawienie właściwości redirectPolicy: 'follow' w konfiguracji transportu przywraca dawne zachowanie oraz wiążące się z nim ryzyko.
Jeśli przekierowanie mogło dotrzeć do hosta, nad którym nie sprawujesz kontroli, zmień klucze API i client_secret przechowywane przez aplikację oraz unieważnij jej tokeny.
Jeśli aktualizacja nie jest jeszcze możliwa, przekaż parametr fetch odrzucający przekierowania, na przykład (url, init) => fetch(url, { ...init, redirect: 'error' }).
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | @modelcontextprotocol/client | >= 2.0.0, < 2.3.0 | 2.3.0 |
| Paczka npm | @modelcontextprotocol/sdk | < 1.32.0 | 1.32.0 |
Odnośniki
- https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-6prh-2h8m-c8cw
- https://github.com/modelcontextprotocol/typescript-sdk/pull/2901
- https://github.com/modelcontextprotocol/typescript-sdk/pull/2902
- https://github.com/modelcontextprotocol/typescript-sdk/commit/30bfe5139f4b0825c90cd725f9a7e3f9af5e120d
- https://github.com/modelcontextprotocol/typescript-sdk/commit/433eb413dc305ebeb93b8ebcde0095a8fc0d5fa0
- 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:N- Słabość (CWE)
CWE-200- Platforma
- npm
- Paczka
@modelcontextprotocol/client, @modelcontextprotocol/sdk- Ujawniono
- 20.10.2026
- Aktualizacja
- 20.10.2026 21:37
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-6prh-2h8m-c8cw - CC BY 4.0
Historia podatności: @modelcontextprotocol/client
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 2
- Pierwsza → ostatnia
- 10.2026 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Wysoka 1
- Średnia 1
Ujawnienia w latach
- 2026: 2
-
MCP TypeScript client SDK: transporty HTTP i żądania OAuth podążały za przekierowaniami cross-origin 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.