CVE-2025-68620: CWE-288: Authentication Bypass Using an Alternate Path or Channel in SignalK signalk-server
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.
AI Analysis
Technical Summary
SignalK signalk-server, a server application used on central hubs in boats for marine data communication, suffers from a critical authentication bypass vulnerability identified as CVE-2025-68620. The flaw arises from two chained issues present in versions prior to 2.19.0. First, the server allows unauthenticated WebSocket clients connecting to the stream endpoint with the 'serverevents=all' parameter to receive all cached server events, including sensitive ACCESS_REQUEST events. These events contain detailed information such as request IDs, client identifiers, requested permissions, and IP addresses. This occurs because the 'startServerEvents' function indiscriminately sends cached events to any connected client without verifying authorization, and readonly access is allowed for unauthenticated users when 'allow_readonly' is true. Second, the access request status REST endpoint at '/signalk/v1/access/requests/:id' returns the full state of an access request, including the issued JWT token in plaintext once an administrator approves the request. This endpoint uses readonly authentication, permitting unauthenticated access. Exploitation can occur via two paths: an attacker can create a spoofed access request (leveraging IP spoofing to appear legitimate) and poll the request status until approval, or passively monitor the WebSocket stream to discover legitimate request IDs and poll those to steal JWT tokens. Both methods require no authentication or user interaction, enabling complete authentication bypass and credential theft. The vulnerability impacts confidentiality and integrity severely but does not affect availability. The issue is resolved in version 2.19.0 of signalk-server.
Potential Impact
For European organizations, particularly those involved in maritime operations, yacht management, and marine IoT deployments, this vulnerability poses a severe risk. Compromise of JWT tokens allows attackers to impersonate legitimate devices or users, potentially leading to unauthorized access to sensitive marine data, manipulation of vessel control systems, or disruption of navigation and communication services. This could result in operational disruptions, safety hazards, and significant financial losses. Additionally, stolen credentials could be leveraged for lateral movement within maritime networks or to launch further attacks on connected infrastructure. The exposure of sensitive access request details also raises privacy concerns. Given the criticality and ease of exploitation without authentication, organizations relying on signalk-server must prioritize patching to prevent potential breaches.
Mitigation Recommendations
1. Immediate upgrade of all signalk-server instances to version 2.19.0 or later, which contains the fix for this vulnerability. 2. If immediate upgrade is not feasible, disable the 'allow_readonly' setting to prevent unauthenticated readonly WebSocket connections. 3. Restrict network access to the signalk-server endpoints, especially the WebSocket stream and access request REST API, using firewall rules or network segmentation to limit exposure to trusted clients only. 4. Implement monitoring and alerting for unusual access request patterns or repeated polling of access request statuses. 5. Employ network-level authentication or VPNs for remote access to marine hubs to reduce exposure to unauthenticated attackers. 6. Review and tighten administrative approval workflows to detect and prevent approval of suspicious access requests. 7. Conduct regular audits of issued JWT tokens and revoke any tokens suspected to be compromised. 8. Educate administrators on the risks of approving access requests without verification.
Affected Countries
United Kingdom, Norway, Netherlands, Germany, France, Italy, Spain, Greece, Denmark, Finland
CVE-2025-68620: CWE-288: Authentication Bypass Using an Alternate Path or Channel in SignalK signalk-server
Description
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.
AI-Powered Analysis
Technical Analysis
SignalK signalk-server, a server application used on central hubs in boats for marine data communication, suffers from a critical authentication bypass vulnerability identified as CVE-2025-68620. The flaw arises from two chained issues present in versions prior to 2.19.0. First, the server allows unauthenticated WebSocket clients connecting to the stream endpoint with the 'serverevents=all' parameter to receive all cached server events, including sensitive ACCESS_REQUEST events. These events contain detailed information such as request IDs, client identifiers, requested permissions, and IP addresses. This occurs because the 'startServerEvents' function indiscriminately sends cached events to any connected client without verifying authorization, and readonly access is allowed for unauthenticated users when 'allow_readonly' is true. Second, the access request status REST endpoint at '/signalk/v1/access/requests/:id' returns the full state of an access request, including the issued JWT token in plaintext once an administrator approves the request. This endpoint uses readonly authentication, permitting unauthenticated access. Exploitation can occur via two paths: an attacker can create a spoofed access request (leveraging IP spoofing to appear legitimate) and poll the request status until approval, or passively monitor the WebSocket stream to discover legitimate request IDs and poll those to steal JWT tokens. Both methods require no authentication or user interaction, enabling complete authentication bypass and credential theft. The vulnerability impacts confidentiality and integrity severely but does not affect availability. The issue is resolved in version 2.19.0 of signalk-server.
Potential Impact
For European organizations, particularly those involved in maritime operations, yacht management, and marine IoT deployments, this vulnerability poses a severe risk. Compromise of JWT tokens allows attackers to impersonate legitimate devices or users, potentially leading to unauthorized access to sensitive marine data, manipulation of vessel control systems, or disruption of navigation and communication services. This could result in operational disruptions, safety hazards, and significant financial losses. Additionally, stolen credentials could be leveraged for lateral movement within maritime networks or to launch further attacks on connected infrastructure. The exposure of sensitive access request details also raises privacy concerns. Given the criticality and ease of exploitation without authentication, organizations relying on signalk-server must prioritize patching to prevent potential breaches.
Mitigation Recommendations
1. Immediate upgrade of all signalk-server instances to version 2.19.0 or later, which contains the fix for this vulnerability. 2. If immediate upgrade is not feasible, disable the 'allow_readonly' setting to prevent unauthenticated readonly WebSocket connections. 3. Restrict network access to the signalk-server endpoints, especially the WebSocket stream and access request REST API, using firewall rules or network segmentation to limit exposure to trusted clients only. 4. Implement monitoring and alerting for unusual access request patterns or repeated polling of access request statuses. 5. Employ network-level authentication or VPNs for remote access to marine hubs to reduce exposure to unauthenticated attackers. 6. Review and tighten administrative approval workflows to detect and prevent approval of suspicious access requests. 7. Conduct regular audits of issued JWT tokens and revoke any tokens suspected to be compromised. 8. Educate administrators on the risks of approving access requests without verification.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2025-12-19T18:50:09.991Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6956c3e8db813ff03e77f106
Added to database: 1/1/2026, 6:58:48 PM
Last enriched: 1/1/2026, 7:13:49 PM
Last updated: 1/7/2026, 4:12:50 AM
Views: 77
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Related Threats
CVE-2026-20893: Origin validation error in Fujitsu Client Computing Limited Fujitsu Security Solution AuthConductor Client Basic V2
HighCVE-2025-14891: CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in ivole Customer Reviews for WooCommerce
MediumCVE-2025-14059: CWE-73 External Control of File Name or Path in roxnor EmailKit – Email Customizer for WooCommerce & WP
MediumCVE-2025-12648: CWE-552 Files or Directories Accessible to External Parties in cbutlerjr WP-Members Membership Plugin
MediumCVE-2025-14631: CWE-476 NULL Pointer Dereference in TP-Link Systems Inc. Archer BE400
HighActions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console in Console -> Billing for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.