CVE-2026-59800
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Wysokie ryzykoPercentyl 81 - wyżej niż 81% wszystkich znanych CVE
Streszczenie
9Router przed wersją 0.4.44 zawiera podatność na wstrzykiwanie poleceń systemu operacyjnego w nieuwierzytelnionym punkcie końcowym POST /api/tunnel/tailscale-install. Pole sudoPassword z ciała żądania jest przekazywane do standardowego wejścia procesu 'sudo -S sh', co pozwala zdalnemu, nieuwierzytelnionemu atakującemu na wykonanie dowolnych poleceń systemowych.
Ocena ryzyka
Atakujący może zdalnie przejąć kontrolę nad urządzeniem bez uwierzytelnienia, co prowadzi do pełnej kompromitacji systemu, wycieku danych lub wykorzystania urządzenia w atakach na inne systemy.
Rekomendacja
Należy natychmiast zaktualizować 9Router do wersji 0.4.44 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy zablokować dostęp do punktu końcowego /api/tunnel/tailscale-install dla niezaufanych sieci.
Inne podatności w 9Router
Zobacz wszystkie- CVE-2026-63732Krytyczne
9router 0.4.59 zawiera łańcuch podatności: domyślne hasło (123456), obejście ograniczenia LOCAL_ONLY przez spreparowany nagłówek Host oraz brak walidacji argumentów w child_process.spawn() przy rejestracji wtyczek MCP. Zdalny, nieuwierzytelniony atakujący może zalogować się przy użyciu domyślnych danych, ominąć ograniczenia sieciowe i zarejestrować złośliwą wtyczkę MCP, co prowadzi do zdalnego wykonania kodu na hoście.
- CVE-2026-49352Krytyczne
W 9Router w wersjach od 0.2.21 do 0.4.44 użyto zakodowanego na stałe zapasowego sekretu JWT '9router-default-secret-change-me', co pozwala atakującemu na fałszowanie ciasteczka auth_token, gdy zmienna JWT_SECRET nie jest ustawiona. Problem został naprawiony w wersji 0.4.44.
- CVE-2026-46339Krytyczne
W 9Router w wersjach od 0.4.30 do 0.4.37, middleware w src/proxy.js nie chronił ścieżek /api/cli-tools/* i /api/mcp/*, umożliwiając nieuwierzytelnioną rejestrację wtyczek oraz wykonanie poleceń przez most MCP. Luka została naprawiona w wersji 0.4.37.
- CVE-2026-62327Krytyczne
9Router w wersji do 0.4.41 zawiera nieuwierzytelnioną podatność na ujawnienie informacji, która pozwala zdalnym atakującym na pobranie kluczy API w postaci jawnego tekstu dla wszystkich podłączonych kont dostawców AI poprzez wysłanie pojedynczego żądania do punktu końcowego /api/usage/stats. Atakujący mogą wykorzystać brakujące oprogramowanie pośredniczące uwierzytelniania na trasie API Next.js, aby uzyskać pełne ciągi kluczy API wraz z liczbą tokenów, podziałem kosztów i metadanymi żądań.
- CVE-2026-59801Krytyczne
9Router w wersji do 0.4.41 zawiera lukę umożliwiającą nieuwierzytelniony dostęp do API zarządzania dostawcami. Brak middleware uwierzytelniającego w trasach Next.js API (src/app/api/providers/*) pozwala atakującym na wyliczanie, tworzenie, modyfikowanie lub usuwanie połączeń z dostawcami bez żadnych poświadczeń.
- CVE-2026-55500Krytyczne
W 9Router przed wersją 0.4.80 endpoint /api/settings/database umożliwia pełny eksport bazy danych (zawierającej wszystkie poświadczenia, klucze API, tokeny OAuth i ustawienia) oraz pełny import bazy danych (całkowite nadpisanie) bez żadnego uwierzytelnienia poza sprawdzeniem ALWAYS_PROTECTED, które weryfikuje tylko JWT lub token CLI. Luka została naprawiona w wersji 0.4.80.
- CVE-2026-108593Średnie
9router w wersjach 0.4.1 do 0.5.99 zawiera podatność wstrzyknięcia konfiguracji w punkcie końcowym POST /api/cli-tools/hermes-settings, która pozwala uwierzytelnionym użytkownikom panelu na wstrzyknięcie dowolnych kluczy do pliku konfiguracyjnego Hermes Agent config.yaml. Atakujący mogą przesłać baseUrl zawierający podwójne cudzysłowy i znaki nowej linii, aby dodać hooks_auto_accept oraz polecenie powłoki hooks.post_llm_call, które Hermes Agent wykonuje bez zatwierdzenia po wywołaniu LLM.
- CVE-2026-56682Średnie
W 9Router przed wersją 0.5.6 wdrożenia, które pozwalają żądaniom dotrzeć do Next.js bez sanityzującego wrappera custom-server.js, używają wartości X-9r-Real-Ip dostarczonej przez klienta jako klucza bucketu w getClientIp, checkLock i recordFail w src/lib/auth/loginLimiter.js dla POST /api/auth/login. Zdalny nieuwierzytelniony atakujący może rotować nagłówek przy każdej próbie hasła, przez co każda próba trafia do nowego bucketu i pięciopróbowa blokada progresywna nigdy nie zwraca HTTP 429.
- CVE-2026-56681Wysokie
9Router to router AI i oszczędzacz tokenów. Przed wersją 0.5.6 wdrożenia 9Router, które pozwalają żądaniom dotrzeć do Next.js bez sanityzującego wrappera custom-server.js, ufają nagłówkowi X-9r-Real-Ip dostarczonemu przez klienta w src/dashboardGuard.js, gdy isLocalRequest decyduje, czy canAccessPublicLlmApi może pominąć walidację klucza API dla tras /api/v1/*. Zdalny nieuwierzytelniony atakujący może ustawić X-9r-Real-Ip na 127.0.0.1 i zostać sklasyfikowany jako klient lokalny, w tym na zweryfikowanej trasie GET /api/v1/models. Problem naprawiono w wersji 0.5.6.
- CVE-2026-72860Wysokie
Podatność SSRF w trasie POST /api/provider-nodes/validate w 9router pozwala atakującemu na wysyłanie żądań serwerowych do wewnętrznych adresów, w tym loopback i link-local, z powodu błędów w guardzie assertPublicUrl. Dodatkowo odpowiedzi wewnętrzne mogą być ujawniane, a klucz API jest przekazywany do wewnętrznych celów.
Oryginalny opis (angielski, źródło NVD)
9Router before 0.4.44 contains an OS command injection vulnerability in the unauthenticated POST /api/tunnel/tailscale-install endpoint (this route is not covered by the dashboard middleware matcher, so no authorization check is applied). The sudoPassword field from the request body is written to the stdin of a 'sudo -S sh' child process. When sudo does not prompt for a password (the process runs as root, NOPASSWD is configured, or a recent sudo timestamp cache exists), the sudoPassword value is interpreted by sh as a shell command, allowing a remote unauthenticated attacker to execute arbitrary OS commands. Exploitation evidence was first observed by the Shadowserver Foundation on 2026-07-04 (UTC).
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

