CVE-2026-79746
WysokieCVSS 8.1Streszczenie
MCPHub przed wersją 1.0.31 ma lukę w autoryzacji dla kluczy bearer z accessType 'servers' lub 'custom' używanych w trasach grupowych. Funkcja isBearerKeyAllowedForRequest przyznaje dostęp do całej grupy, jeśli jakikolwiek serwer w grupie znajduje się na liście allowedServers klucza, bez ponownego sprawdzania po autoryzacji. Klucz ograniczony do jednego serwera daje dostęp do wszystkich serwerów w grupie.
Ocena ryzyka
Organizacja jest narażona na nieautoryzowany dostęp do serwerów MCP, ponieważ klucze API mogą być używane do uzyskania dostępu do serwerów, do których nie były przeznaczone. Może to prowadzić do naruszenia poufności i integralności danych.
Rekomendacja
Zaleca się aktualizację MCPHub do wersji 1.0.31 lub nowszej, która zawiera poprawkę. Należy również przejrzeć konfigurację kluczy i upewnić się, że są one przypisane do właściwych serwerów.
Inne podatności w MCPHub
Zobacz wszystkie- CVE-2026-79750Wysokie
MCPHub przed wersją 1.0.30 nie egzekwuje ograniczeń własności w API wykonywania narzędzi. Każdy uwierzytelniony użytkownik niebędący administratorem może wywoływać narzędzia na serwerach MCP należących do innych użytkowników, nawet jeśli nie widzi tych serwerów w GET /api/servers. Może to prowadzić do odczytu plików (np. /etc/passwd) i SSRF.
- CVE-2026-79749Wysokie
MCPHub przed wersją 1.0.32 ma lukę w zabezpieczeniu SSRF w src/utils/ssrf.ts. Funkcja isBlockedIpv6 sprawdza tylko adresy loopback, link-local, unique-local, IPv4-mapped i IPv4-compatible, ale nie sprawdza adresów przejściowych IPv6 (NAT64, 6to4, Teredo). Atakujący może zakodować prywatny adres IPv4 w tych formach IPv6, aby ominąć zabezpieczenie i dotrzeć do wewnętrznej infrastruktury.
- CVE-2026-79747Wysokie
MCPHub przed wersją 1.0.32 pozwala uwierzytelnionemu użytkownikowi niebędącemu administratorem zarejestrować serwer wskazujący na dowolny URL i wysyłać do niego żądania serwerowe bez filtrowania ruchu wychodzącego (brak blokady loopback, RFC1918, link-local). Przez proxy OpenAPI odpowiedź jest zwracana do wywołującego (pełny SSRF), a przez SSE/streamable-http żądanie jest wysyłane na ślepo.
- CVE-2026-79745Wysokie
MCPHub przed wersją 1.0.32 nie sprawdza ról w wbudowanych kontrolerach promptów i zasobów. Trasy POST/PUT /api/prompts* i /api/resources* są dołączone do uwierzytelnionego routera bez bramki administratora, a handlery nie czytają req.user. Nie-admin może tworzyć, nadpisywać i cieniować globalne szablony promptów i zasobów, które są serwowane wszystkim użytkownikom.
- CVE-2026-79744Wysokie
MCPHub przed wersją 1.0.29 ma lukę w punkcie końcowym PUT /api/system-config (handler updateSystemConfig), który nie wykonuje żadnej kontroli autoryzacji. Jest chroniony tylko przez middleware uwierzytelniający i ogranicznik szybkości, ale nie sprawdza req.user.isAdmin.
- CVE-2026-79743Średnie
MCPHub przed wersją 0.12.13 zawiera podatność w obsłudze plików MCPB. Podczas ekstrakcji pliku ZIP, pole 'name' w manifeście jest bezpośrednio łączone ze ścieżką pliku bez sanityzacji, co pozwala na zapis plików w dowolnej lokalizacji (path traversal). Funkcja cleanupOldMcpbServer również używa niesanityzowanej nazwy, co może umożliwić usunięcie dowolnych katalogów. Problem został naprawiony w wersji 0.12.13.
- CVE-2026-79748Krytyczne
MCPHub przed wersją 0.12.15 nie sprawdza uprawnień administratora przy tworzeniu lub aktualizacji konfiguracji serwerów MCP, a także nie filtruje pól command i args. Każdy uwierzytelniony użytkownik niebędący administratorem może uruchomić dowolny proces jako użytkownik systemowy MCPHub, często root.
Oryginalny opis (angielski, źródło NVD)
MCPHub is a unified hub for centrally managing and dynamically orchestrating multiple MCP servers/APIs into separate endpoints with flexible routing strategies. Prior to version 1.0.31, when a bearer key with accessType: 'servers' (or 'custom') is used against a group route, isBearerKeyAllowedForRequest grants access to the entire group as long as any single server in that group appears in the key's allowedServers list — not only when every server the key is scoped to matches, and critically, without ever re-checking allowedServers again once the group-level connection is authorized. A key explicitly scoped to one specific server therefore also grants full access to every other server that happens to share a group with it, including servers the key was never authorized for. This issue has been patched in version 1.0.31.

