CVE-2026-123807
KrytyczneCVSS 9.8Streszczenie
Signal K Server w wersjach 2.0.0–2.33.x oraz @signalk/resources-provider 1.0.0–1.5.2 posiada trasę REST GET /signalk/v2/api/resources/:resourceType/:resourceId, która przyjmuje niebezpieczny resourceId mogący wyjść poza zamierzony katalog zasobów. Brak odpowiedniego ograniczenia ścieżki pozwala na odczyt dowolnych plików JSON dostępnych dla serwera, a powiązane operacje PUT i DELETE mogą zapisywać lub usuwać pliki poza katalogiem głównym. Odczyt security.json ujawnia sekret podpisywania JWT HS256 i hasła, co umożliwia sfałszowanie tokenu administratora i dalszą eskalację.
Ocena ryzyka
Atakujący może odczytać poufne pliki, w tym sekrety JWT i hasła, a następnie sfałszować token administratora i uzyskać zdolność do wykonywania poleceń na serwerze. W konfiguracjach z allow_readonly atak nie wymaga uwierzytelnienia.
Rekomendacja
Zaktualizuj Signal K Server do wersji 2.34.0 oraz @signalk/resources-provider do 1.5.3. Do czasu aktualizacji ogranicz dostęp do tras zasobów i wyłącz allow_readonly, jeśli to możliwe.
Inne podatności w Signal K Server
Zobacz wszystkie- CVE-2026-118690Krytyczne
Signal K Server przed wersją 2.33.0 zawiera lukę braku uwierzytelniania, która pozwala nieuwierzytelnionym zdalnym atakującym pobierać archiwa logów przez endpoint `/skServer/ziplogs`. Atakujący mogą wyodrębnić `secretKey` JWT z `security.json` w pliku ZIP, sfałszować tokeny administratora i utworzyć trwałe konta administracyjne. Luka jest naprawiona w wersji 2.33.0.
- CVE-2026-33950Krytyczne
Signal K Server przed wersją 2.24.0-beta.4 zawiera podatność eskalacji uprawnień przez wstrzyknięcie roli administratora w endpoint /enableSecurity. Nieuwierzytelniony atakujący może uzyskać pełny dostęp administracyjny.
- CVE-2025-68620Krytyczne
Signal K Server przed wersją 2.19.0 zawiera dwie podatności, które można połączyć w łańcuch ataku, umożliwiający kradzież tokenów JWT bez uwierzytelnienia. Pierwsza dotyczy nieuwierzytelnionego wyliczania żądań przez WebSocket (parametr serverevents=all), a druga nieuwierzytelnionego odpytywania statusu żądań dostępu, co po zatwierdzeniu przez administratora zwraca token JWT w postaci jawnej.
- CVE-2025-66398Krytyczne
Signal K Server przed wersją 2.19.0 pozwala nieuwierzytelnionemu atakującemu na zanieczyszczenie stanu wewnętrznego (restoreFilePath) przez endpoint /skServer/validateBackup, co umożliwia przejęcie funkcji przywracania administratora i nadpisanie krytycznych plików konfiguracyjnych, prowadząc do przejęcia konta i zdalnego wykonania kodu.
- CVE-2026-115752Średnie
Signal K Server od wersji 2.28.0-beta.2 przed 2.34.0 zawiera podatność SSRF w mechanizmie pobierania ikon App Store, który ufa absolutnym URLom signalk.appIcon. Atakujący publikujący pakiety npm ze słowami kluczowymi Signal K może wymusić żądania do loopback, sieci statku lub punktów metadanych chmury, a odpowiedzi obrazów są przechowywane i serwowane przez panel administracyjny.
- CVE-2026-55591Średnie
Signal K Server przed wersją 2.28.0 ma podatność w funkcji makeRemoteRequest(), która akceptuje kontrolowane przez atakującego parametry host, port, useTLS i selfsignedcert bez walidacji celu. Przy braku skonfigurowanego bezpieczeństwa, endpointy testSignalKConnection, requestAccess i checkAccessRequest są dostępne bez uwierzytelnienia, co pozwala na skanowanie portów, eksfiltrację danych z metadata chmury i wewnętrznych usług oraz ruch boczny.
- CVE-2026-41893Wysokie
Signal K Server przed wersją 2.25.0 chroni punkty końcowe logowania HTTP (POST /login i POST /signalk/v1/auth/login) za pomocą express-rate-limit (domyślnie 100 prób na 10 minut). Jednak ścieżka logowania przez WebSocket — wysyłanie wiadomości {login: {username, password}} przez ustanowione połączenie WebSocket — wywołuje app.securityStrategy.login() bezpośrednio bez żadnego ograniczania szybkości. Atakujący może całkowicie ominąć ograniczenia HTTP, otwierając połączenie WebSocket i próbując nieograniczonej liczby haseł z szybkością, na jaką pozwala bcrypt (~20 prób/s przy 10 rundach soli). Problem został naprawiony w wersji 2.25.0.
- CVE-2026-35038Średnie
Signal K Server przed wersją 2.24.0 zawiera podatność na odczyt prototypu przez ominięcie filtrowania pola `from`. Uwierzytelniony użytkownik o niskich uprawnieniach może ominąć filtrowanie granic prototypu i odczytać wewnętrzne funkcje i właściwości z globalnego obiektu prototypu.
- CVE-2026-34083Średnie
Signal K Server to aplikacja serwerowa dla łodzi. Przed wersją 2.24.0 występuje podatność w handlerach logowania i wylogowania OIDC, gdzie niezweryfikowany nagłówek Host jest używany do konstruowania redirect_uri OAuth2. Ponieważ redirectUri jest domyślnie niezdefiniowane, atakujący może podszyć nagłówek Host, aby ukraść kody autoryzacyjne OAuth i przejąć sesje użytkowników.
- CVE-2026-33951Wysokie
Signal K Server przed wersją 2.24.0-beta.1 udostępnia nieuwierzytelniony endpoint HTTP PUT /signalk/v1/api/sourcePriorities, który pozwala zdalnym atakującym modyfikować priorytety źródeł danych nawigacyjnych. Zmiany są natychmiast stosowane i trwale zapisywane.
Oryginalny opis (angielski, źródło NVD)
Signal K Server is a server application that runs on a central hub in a boat. From 2.0.0 until 2.34.0 for Signal K Server and from 1.0.0 until 1.5.3 for @signalk/resources-provider, the v2 REST route GET /signalk/v2/api/resources/:resourceType/:resourceId accepts an unsafe resourceId that can escape the intended resource directory. The route passes the attacker-controlled resourceId through src/api/resources/index.ts to FileStore.getResource() in packages/resources-provider-plugin/src/filestorage.ts without adequate path containment, allowing arbitrary JSON files reachable by the server to be read. Related PUT and DELETE resource operations can write or delete files outside the storage root. Deployments with allow_readonly enabled permit anonymous reads, while other deployments require a readonly user token. Reading security.json exposes the HS256 JWT signing secret and password hashes, allowing an attacker to forge an administrator token. Administrative access to POST /skServer/providers can then create an Execute provider that runs commands with the server process privileges and persists its configuration across restarts. This issue is fixed in Signal K Server 2.34.0 and @signalk/resources-provider 1.5.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

