Luka oznaczona jako CVE-2026-59800 otrzymała ocenę 9.8 w skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki) 1. Dotyczy oprogramowania 9Router w wersjach starszych niż 0.4.44 2. Zaobserwowaliśmy dowody aktywnej eksploatacji w publicznie dostępnych danych telemetrycznych 3. Atakujący może zdalnie i bez uwierzytelnienia wykonać dowolne polecenia na serwerze, na którym działa podatne oprogramowanie 4.

TL;DR

  • Produkt: 9Router, wersje przed 0.4.44 2.
  • Wektor: Wstrzyknięcie poleceń systemu operacyjnego (OS Command Injection) 2.
  • CVE-ID: CVE-2026-59800 5.
  • Wskaźniki kompromitacji: Żądania POST do nieautoryzowanego punktu końcowego /api/tunnel/tailscale-install 6.
  • Kogo dotyczy: Administratorzy i firmy, w tym polskie MŚP, wykorzystujące 9Router do zarządzania siecią.
  • Pierwszy ruch: Natychmiastowa aktualizacja do wersji 0.4.44 lub nowszej. Jeśli to niemożliwe, blokada dostępu do interfejsu zarządzania z publicznego internetu.

Wektor ataku

Podatność sklasyfikowano jako CWE-78 (Common Weakness Enumeration — klasyfikacja typów luk), czyli niewłaściwą neutralizację znaków specjalnych w poleceniu systemowym 7. Atakujący wykorzystuje publicznie dostępny i niezabezpieczony punkt końcowy API 8.

Analiza pokazuje, że ścieżka POST /api/tunnel/tailscale-install jest dostępna bez logowania 6. Funkcja ta została zaprojektowana do instalacji klienta Tailscale, ale zawiera błąd logiczny. Przyjmuje ona w ciele żądania pole sudoPassword 9. Wartość tego pola jest następnie przekazywana bezpośrednio na standardowe wejście (stdin) procesu sudo -S sh 9.

Problem pojawia się w scenariuszu, gdy proces sudo nie wymaga podania hasła. Może się tak zdarzyć z kilku powodów:

  1. Proces 9Router działa z uprawnieniami użytkownika root.
  2. Konfiguracja sudoers zawiera wpis NOPASSWD dla danego użytkownika lub polecenia.
  3. W systemie istnieje aktywna sesja sudo (tzw. timestamp cache), która przez krótki czas nie wymaga ponownego wpisywania hasła 10.

W takiej sytuacji sudo nie konsumuje danych ze stdin jako hasła. Zamiast tego, zawartość pola sudoPassword jest przekazywana dalej i interpretowana bezpośrednio przez powłokę sh jako polecenie do wykonania 10. Pozwala to zdalnemu, nieautoryzowanemu atakującemu na wykonanie dowolnych poleceń z uprawnieniami, z jakimi uruchomiono proces sh 4. W praktyce może to prowadzić do pełnego przejęcia kontroli nad systemem operacyjnym, czyli RCE (Remote Code Execution — zdalne wykonanie kodu na komputerze ofiary).

Wskaźniki kompromitacji

Podstawowym wskaźnikiem kompromitacji (IoC — Indicators of Compromise) lub próby ataku jest analiza logów serwera WWW. Należy szukać żądań typu POST kierowanych na poniższy punkt końcowy, zwłaszcza jeśli pochodzą z nieznanych lub publicznych adresów IP.

POST /api/tunnel/tailscale-install

Telemetria z Shadowserver Foundation potwierdza, że pierwsze próby wykorzystania tej luki zaobserwowano już 4 lipca 2026 roku 3. Oznacza to, że luka jest aktywnie wykorzystywana „in the wild”.

Co zrobić w 24-48h

Rekomendowane podejście zakłada natychmiastowe działanie. Poniższe kroki nie zastępują pełnej konsultacji bezpieczeństwa, ale stanowią pierwszą linię obrony.

  1. Identyfikacja zasobów. Zidentyfikuj wszystkie instancje 9Router w swojej infrastrukturze. Dotyczy to zarówno środowisk produkcyjnych, jak i deweloperskich czy testowych. Polskie firmy często zapominają o zasobach „w cieniu” (shadow IT), które również mogą być podatne.

  2. Natychmiastowa aktualizacja. Zaktualizuj oprogramowanie 9Router do wersji 0.4.44 lub nowszej. Jest to jedyny skuteczny sposób na permanentne zamknięcie luki.

  3. Ograniczenie dostępu (jeśli aktualizacja jest niemożliwa). Jeśli natychmiastowa aktualizacja nie jest możliwa, należy bezzwłocznie zablokować dostęp do interfejsu webowego 9Router z publicznego internetu. Dostęp powinien być ograniczony wyłącznie do zaufanych adresów IP (np. przez reguły firewalla) lub realizowany przez VPN (Virtual Private Network — szyfrowane połączenie do internetu).

  4. Analiza logów. Przejrzyj logi serwera pod kątem żądań do ścieżki /api/tunnel/tailscale-install. Sprawdź, czy takie żądania występowały w przeszłości. W przypadku znalezienia śladów, należy założyć kompromitację systemu i rozpocząć procedurę reagowania na incydenty. Dla podmiotów objętych dyrektywą NIS2 (unijna dyrektywa o bezpieczeństwie sieci, obowiązuje od 2024), taki incydent może wymagać zgłoszenia do właściwego CSIRT.

Źródła

Zobacz też

Przypisy

  1. Podstawowy wynik CVSS 9.8 został przypisany. — feedly.com › CVE 2026 59800

  2. 9Router przed wersją 0.4.44 zawiera lukę typu OS command injection. — nvd.nist.gov › CVE 2026 59800 2 3

  3. Dowody eksploatacji zostały po raz pierwszy zaobserwowane przez Shadowserver Foundation 4 lipca 2026 roku (UTC). — nvd.nist.gov › CVE 2026 59800 2

  4. Pozwala to zdalnemu, nieautoryzowanemu atakującemu na wykonanie dowolnych poleceń systemowych. — nvd.nist.gov › CVE 2026 59800 2

  5. NVD opublikowało pierwsze szczegóły dotyczące CVE-2026-59800. — feedly.com › CVE 2026 59800

  6. Luka znajduje się w nieautoryzowanym punkcie końcowym POST /api/tunnel/tailscale-install. — nvd.nist.gov › CVE 2026 59800 2

  7. Luka jest klasyfikowana jako Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) (CWE-78). — feedly.com › CVE 2026 59800

  8. Trasa /api/tunnel/tailscale-install nie jest objęta mechanizmem autoryzacji dashboardu. — nvd.nist.gov › CVE 2026 59800

  9. Pole sudoPassword z treści żądania jest zapisywane do stdin procesu potomnego ‘sudo -S sh’. — nvd.nist.gov › CVE 2026 59800 2

  10. Gdy sudo nie prosi o hasło (proces działa jako root, skonfigurowano NOPASSWD lub istnieje świeża pamięć podręczna sudo timestamp), wartość sudoPassword jest interpretowana przez sh jako polecenie powłoki. — nvd.nist.gov › CVE 2026 59800 2