MCP TypeScript SDK: Uwierzytelnianie bearer serwera akceptuje tokeny wystawione dla innych usług
Podsumowanie
W wersjach objętych podatnością uwierzytelnianie bearer po stronie serwera w MCP TypeScript SDK nie weryfikowało, czy token został wystawiony dla danego serwera (weryfikacja odbiorcy / audience). W sytuacji, gdy jeden serwer autoryzacji wystawia tokeny dla wielu usług, prawidłowy token przeznaczony dla innej usługi był akceptowany również przez Twój serwer MCP.
Czy problem mnie dotyczy?
Podatność występuje, jeśli:
- Serwer HTTP korzysta z
requireBearerAuth()lubverifyBearerToken(), - Wykorzystywany serwer autoryzacji wystawia tokeny także dla innych usług oraz
- Funkcja
verifyAccessToken()nie weryfikuje samodzielnie odbiorcy tokena (aud).
Wersje objęte podatnością:
@modelcontextprotocol/sdk1.6.0 do 1.31.0@modelcontextprotocol/server2.0.0 do 2.2.0@modelcontextprotocol/express2.0.0 do 2.0.1@modelcontextprotocol/server-legacy2.0.0 do 2.3.0
Co trzeba zrobić
Zaktualizuj do:
- 1.x:
@modelcontextprotocol/sdk1.32.0 lub nowszej - 2.x:
@modelcontextprotocol/server2.3.0 lub nowszej, wraz z@modelcontextprotocol/express2.0.2 lub nowszą, jeśli jest używana @modelcontextprotocol/server-legacy2.3.1 lub nowszej
Sama aktualizacja nie rozwiązuje problemu. Poprawione wersje wprowadzają ustawienie expectedResource, które domyślnie jest wyłączone. Aby włączyć weryfikację, należy wprowadzić obie poniższe zmiany łącznie:
- Przekaż odbiorcę (audience), którego serwer autoryzacji umieszcza w tokenach dla Twojego serwera:
requireBearerAuth({ verifier, expectedResource: new URL('https://mcp.example.com/mcp') }). - Zwróć odbiorcę tokena z
verifyAccessToken()jakoAuthInfo.resource, również jakoURL.
Wówczas token przeznaczony dla innej usługi otrzyma 401. Przy wdrożeniu tylko pierwszej zmiany każde żądanie otrzyma 401.
Obejście:
Jeśli natychmiastowa aktualizacja nie jest możliwa, odrzucaj każdy token, którego aud nie zawiera Twojego serwera wewnątrz verifyAccessToken(). Eliminuje to problem w każdej wersji.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | @modelcontextprotocol/express | >= 2.0.0, < 2.0.2 | 2.0.2 |
| Paczka npm | @modelcontextprotocol/sdk | >= 1.6.0, < 1.32.0 | 1.32.0 |
| Paczka npm | @modelcontextprotocol/server | >= 2.0.0, < 2.3.0 | 2.3.0 |
| Paczka npm | @modelcontextprotocol/server-legacy | >= 2.0.0, < 2.3.1 | 2.3.1 |
Odnośniki
- https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-rvq5-wwqv-78pq
- https://github.com/modelcontextprotocol/typescript-sdk/commit/40f8f4e229d963cd7fd2890bda2aeebe7005299a
- https://github.com/modelcontextprotocol/typescript-sdk/commit/5a0724d14cf34a27a3b070224d2996cdd611df9f
- https://github.com/modelcontextprotocol/typescript-sdk/commit/5a1867390b91b8836f49af76c45427279f513325
- https://github.com/modelcontextprotocol/typescript-sdk
- Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N- Słabość (CWE)
CWE-863- Platforma
- npm
- Paczka
@modelcontextprotocol/express, @modelcontextprotocol/sdk, @modelcontextprotocol/server- Ujawniono
- 20.10.2026
- Aktualizacja
- 21.10.2026 10:00
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-rvq5-wwqv-78pq - CC BY 4.0
Historia podatności: @modelcontextprotocol/express
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
To jedyna znana podatność tej paczki.
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.