CVE-2025-68620
KrytyczneCVSS 9.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 44 - wyżej niż 44% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może całkowicie ominąć uwierzytelnienie, przechwytując tokeny JWT uprawnionych urządzeń lub tworząc własne żądanie i czekając na jego zatwierdzenie. To prowadzi do przejęcia kontroli nad systemem Signal K na łodzi, w tym dostępu do danych i funkcji sterowania.
Rekomendacja
Należy natychmiast zaktualizować Signal K Server do wersji 2.19.0 lub nowszej, która naprawia te luki. Dodatkowo warto rozważyć wyłączenie opcji allow_readonly, jeśli nie jest wymagana, oraz ograniczenie dostępu do portów serwera.
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-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.
- CVE-2025-69203Średnie
Signal K Server przed wersją 2.19.0 ma podatność w systemie żądań dostępu, która łączy dwa powiązane problemy: nieprawidłowe wyświetlanie pola `permissions` (mniej widoczne niż opis) oraz bezwarunkowe zaufanie do nagłówka `X-Forwarded-For` przy określaniu adresu IP klienta. Atakujący może wykorzystać te luki, aby stworzyć przekonujący atak socjotechniczny na administratora, podszywając się pod zaufane urządzenie i żądając podwyższonych uprawnień.
Oryginalny opis (angielski, źródło NVD)
Signal K Server is a server application that runs on a central hub in a boat. Versions prior to 2.19.0 expose two features that can be chained together to steal JWT authentication tokens without any prior authentication. The attack combines WebSocket-based request enumeration with unauthenticated polling of access request status. The first is Unauthenticated WebSocket Request Enumeration: When a WebSocket client connects to the SignalK stream endpoint with the `serverevents=all` query parameter, the server sends all cached server events including `ACCESS_REQUEST` events that contain details about pending access requests. The `startServerEvents` function iterates over `app.lastServerEvents` and writes each cached event to any connected client without verifying authorization level. Since WebSocket connections are allowed for readonly users (which includes unauthenticated users when `allow_readonly` is true), attackers receive these events containing request IDs, client identifiers, descriptions, requested permissions, and IP addresses. The second is Unauthenticated Token Polling: The access request status endpoint at `/signalk/v1/access/requests/:id` returns the full state of an access request without requiring authentication. When an administrator approves a request, the response includes the issued JWT token in plaintext. The `queryRequest` function returns the complete request object including the token field, and the REST endpoint uses readonly authentication, allowing unauthenticated access. An attacker has two paths to exploit these vulnerabilities. Either the attacker creates their own access request (using the IP spoofing vulnerability to craft a convincing spoofed request), then polls their own request ID until an administrator approves it, receiving the JWT token; or the attacker passively monitors the WebSocket stream to discover request IDs from legitimate devices, then polls those IDs and steals the JWT tokens when administrators approve them, hijacking legitimate device credentials. Both paths require zero authentication and enable complete authentication bypass. Version 2.19.0 fixes the underlying issues.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

