CVE-2026-56681
WysokieCVSS 7.3Streszczenie
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.
Ocena ryzyka
Atakujący może nieautoryzowanie korzystać ze skonfigurowanych dostawców LLM właściciela instancji, zużywać płatne kredyty oraz enumerować skonfigurowanych dostawców i modele. Może to prowadzić do strat finansowych i ujawnienia informacji.
Rekomendacja
Zaktualizuj 9Router do wersji 0.5.6 lub nowszej. Upewnij się, że żądania przechodzą przez sanityzujący wrapper custom-server.js i nie ufaj nagłówkom klienta do klasyfikacji lokalności.
Inne podatności w 9Router
Zobacz wszystkie- CVE-2026-56675Wysokie
9Router w wersji przed 0.5.2 traktuje żądania z pętli zwrotnej jako zaufane i zezwala na dostęp do /v1/* bez klucza API. Gdy odwrotne proxy przekierowuje ruch publiczny przez 127.0.0.1, src/dashboardGuard.js błędnie klasyfikuje żądania zewnętrzne jako lokalne, co umożliwia zdalnemu, nieuwierzytelnionemu atakującemu dostęp do API /v1, w tym do /v1/models oraz potencjalne nadużycie skonfigurowanych poświadczeń dostawcy upstream.
- CVE-2026-55638Wysokie
9Router w wersji przed 0.5.2 nie zabezpiecza ścieżki /codex, co pozwala zdalnemu, nieuwierzytelnionemu atakującemu ominąć bramę klucza API i wysyłać żądania do /codex/*, które są przepisywane na /api/v1/responses. Atakujący może wykorzystać to do wywoływania zewnętrznych dostawców LLM przy użyciu zapisanych poświadczeń operatora.
- CVE-2026-55501Wysokie
W 9Router przed wersją 0.4.80 mechanizm ograniczania prób logowania do panelu administracyjnego opiera się na nagłówku X-Forwarded-For, który może być kontrolowany przez atakującego. Pozwala to na ominięcie limitu 5 nieudanych prób i blokad progresywnych poprzez zmianę wartości tego nagłówka przy każdej próbie logowania.
- 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-59800Krytyczne
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.
Oryginalny opis (angielski, źródło NVD)
9Router is an AI router & token saver. Prior to 0.5.6, 9Router deployments that allow requests to reach Next.js without the sanitizing custom-server.js wrapper trust the client-supplied X-9r-Real-Ip header in src/dashboardGuard.js when isLocalRequest decides whether canAccessPublicLlmApi may skip API-key validation for /api/v1/* routes. A remote unauthenticated attacker can set X-9r-Real-Ip to 127.0.0.1 and be classified as a local client, including on the verified GET /api/v1/models route. This permits unauthorized use of the instance owner's configured LLM providers, consumption of paid credits, and enumeration of configured providers and models. This issue is fixed in version 0.5.6.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

