Raw vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NSummary
CVE-2025-68620 is a critical-severity Authentication Bypass Using an Alternate Path or Channel (CWE-288) vulnerability in Signalk Signal K Server. Its CVSS base score is 9.1 (Critical).
Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 40th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
The strongest mitigations our analysis identified map to AC-25 (Reference Monitor) and AC-3 (Access Enforcement) — see the control section below for these in your framework.
Deeper analysis AI-assisted summary
Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.
CVE-2025-68620 affects Signal K Server, a server application running on central hubs in boats, in versions prior to 2.19.0. The vulnerability (CVSS 9.1, AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N; CWE-288) arises from two chainable features that enable theft of JWT authentication tokens without prior authentication. The first is unauthenticated WebSocket request enumeration: connecting to the Signal K stream endpoint with the `serverevents=all` query parameter causes the server to send all cached server events, including `ACCESS_REQUEST` events with request IDs, client identifiers, descriptions, permissions, and IP addresses, due to the `startServerEvents` function iterating over `app.lastServerEvents` without authorization checks. WebSocket connections are permitted for readonly users, including unauthenticated ones when `allow_readonly` is true. The second is unauthenticated token polling: the `/signalk/v1/access/requests/:id` endpoint returns the full access request state, including issued JWT tokens in plaintext upon approval, as the `queryRequest` function exposes the complete object and the endpoint requires only readonly authentication.
Unauthenticated attackers with network access to the server can exploit this in two ways. They can create their own access request—potentially spoofing it convincingly via a separate IP spoofing vulnerability—then poll the request ID until an administrator approves it, receiving the JWT token directly. Alternatively, attackers can passively monitor the WebSocket stream for `ACCESS_REQUEST` events from legitimate devices, harvest the request IDs, and poll those endpoints to steal JWT tokens when approvals occur, hijacking the credentials of legitimate devices. Both paths require zero authentication and enable complete authentication bypass, granting high confidentiality and integrity impact.
The Signal K Server release notes for version 2.19.0 and the associated security advisory (GHSA-fq56-hvg6-wvm5) confirm that the issues are fixed in this version by addressing the unauthorized exposure of server events and access request details. Security practitioners should upgrade to 2.19.0 or later and review configurations like `allow_readonly` to limit exposure until patching is complete.
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2025-206136
Vulnerability Data
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…
more
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.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise Techniques
CVEs Like This One
Affected Assets
Mitigating Controls
Control response
—
—
- 7 hardening rules · 3 OS baselines
V6.4.3V6.6.1V12.1.3
Mitigating Controls (NIST 800-53 r5) AI
Requires a tamperproof, always-invoked reference monitor that structurally blocks bypass via any alternate path.
Enforces authorization checks on every logical access path, eliminating unauthenticated alternate channels.
Mandates unique identification and authentication for all organizational users, covering the primary authentication requirement.
Controls all external and key internal interfaces, reducing the chance of unauthenticated alternate channels.
Mitigating Controls (NIST CSF 2.0) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.
Requiring authentication on every channel and path directly eliminates alternate-path bypasses.
Enforcing authorizations and least privilege across all access vectors prevents unauthenticated alternate paths.
Protecting networks and environments from unauthorized logical access blocks bypass via undocumented channels.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
Security testing can detect alternate-path bypasses but does not prevent them in production.
Secure authentication control directly mitigates bypass by requiring strong, consistent authentication on all paths.
Access control policy directly addresses alternate authentication paths by requiring all channels to enforce authentication.
Authentication information management ensures credentials and mechanisms are consistently applied across all access paths.
Access rights provisioning and review prevent bypass via unmonitored or alternate channels.
Privileged access rights control reduces risk of bypass through elevated or alternate paths.
Hardening callouts derived
Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (authoritative rows only; rows rated `none` are excluded).
Oracle Linux 8 (2 rules)
- V-248598 There must be no ".shosts" files on the OL 8 operating system. prevents CWE-288
- V-248827 OL 8 must not have the rsh-server package installed. prevents CWE-288
Oracle Linux 9 (2 rules)
- V-271757 OL 9 file systems must not contain shosts.equiv files. prevents CWE-288
- V-271758 OL 9 file systems must not contain .shosts files. prevents CWE-288
RHEL 7 (3 rules)
- V-204440 Red Hat Enterprise Linux operating systems version 7.2 or newer using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes. prevents CWE-288
- V-204442 The Red Hat Enterprise Linux operating system must not have the rsh-server package installed. prevents CWE-288
- V-204424 The Red Hat Enterprise Linux operating system must not allow accounts configured with blank or null passwords. prevents CWE-288