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 central hub server application used in maritime environments, suffers from a critical authentication bypass vulnerability (CVE-2025-68620) in versions prior to 2.19.0. The vulnerability exploits two unauthenticated features that can be chained to steal JWT authentication tokens without prior authentication. First, the server's WebSocket stream endpoint with the `serverevents=all` parameter broadcasts cached server events, including sensitive ACCESS_REQUEST events, to readonly users, which can include unauthenticated clients if the `allow_readonly` setting is enabled. This allows attackers to enumerate pending access requests, revealing request IDs, client identifiers, requested permissions, and IP addresses. Second, the REST API endpoint `/signalk/v1/access/requests/:id` returns the full state of an access request, including the issued JWT token upon administrator approval, without requiring authentication. This endpoint uses readonly authentication, permitting unauthenticated access. Attackers can exploit these flaws in two ways: by creating spoofed access requests (leveraging IP spoofing) and polling their request status until approval, or by passively monitoring WebSocket streams to discover legitimate request IDs and polling those to steal 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 was addressed in SignalK version 2.19.0 by enforcing proper authorization checks on WebSocket event delivery and access request polling. No known exploits are currently in the wild, but the high CVSS score (9.1) reflects the critical nature of the flaw and ease of exploitation.
Potential Impact
For European organizations, particularly those in the maritime sector using SignalK signalk-server to manage connected boat systems, this vulnerability poses a severe risk. Attackers can gain unauthorized access to device credentials, enabling them to impersonate legitimate devices or users, manipulate data streams, and potentially disrupt navigation or monitoring systems. The confidentiality breach of JWT tokens could lead to further lateral movement within maritime IoT networks, exposing sensitive operational data. Integrity of system data is compromised as attackers can issue commands or alter device states under stolen credentials. Although availability is not directly impacted, the loss of trust and control over critical maritime systems could have operational and safety consequences. European maritime companies, port authorities, and service providers relying on SignalK infrastructure must consider this vulnerability a high priority due to the critical nature of maritime operations and regulatory compliance requirements around cybersecurity.
Mitigation Recommendations
The primary mitigation is to upgrade all SignalK signalk-server instances to version 2.19.0 or later, where the vulnerability is fixed. Until upgrades can be performed, organizations should: 1) Disable or restrict the `allow_readonly` setting to prevent unauthenticated readonly WebSocket connections. 2) Restrict network access to the WebSocket stream endpoint and the `/signalk/v1/access/requests/:id` REST API endpoint using firewall rules or network segmentation to trusted clients only. 3) Monitor access logs for unusual WebSocket connections or polling activity indicative of enumeration attempts. 4) Implement strict IP filtering and validation to prevent IP spoofing attacks that facilitate creating convincing spoofed access requests. 5) Educate administrators to promptly review and approve access requests only after thorough validation to reduce risk of token issuance to attackers. 6) Employ network intrusion detection systems tuned to detect anomalous WebSocket and REST API usage patterns. These targeted mitigations go beyond generic advice by focusing on configuration hardening and network-level controls specific to the vulnerability's exploitation vectors.
Affected Countries
Norway, United Kingdom, Netherlands, Germany, France, Italy, Spain
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 central hub server application used in maritime environments, suffers from a critical authentication bypass vulnerability (CVE-2025-68620) in versions prior to 2.19.0. The vulnerability exploits two unauthenticated features that can be chained to steal JWT authentication tokens without prior authentication. First, the server's WebSocket stream endpoint with the `serverevents=all` parameter broadcasts cached server events, including sensitive ACCESS_REQUEST events, to readonly users, which can include unauthenticated clients if the `allow_readonly` setting is enabled. This allows attackers to enumerate pending access requests, revealing request IDs, client identifiers, requested permissions, and IP addresses. Second, the REST API endpoint `/signalk/v1/access/requests/:id` returns the full state of an access request, including the issued JWT token upon administrator approval, without requiring authentication. This endpoint uses readonly authentication, permitting unauthenticated access. Attackers can exploit these flaws in two ways: by creating spoofed access requests (leveraging IP spoofing) and polling their request status until approval, or by passively monitoring WebSocket streams to discover legitimate request IDs and polling those to steal 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 was addressed in SignalK version 2.19.0 by enforcing proper authorization checks on WebSocket event delivery and access request polling. No known exploits are currently in the wild, but the high CVSS score (9.1) reflects the critical nature of the flaw and ease of exploitation.
Potential Impact
For European organizations, particularly those in the maritime sector using SignalK signalk-server to manage connected boat systems, this vulnerability poses a severe risk. Attackers can gain unauthorized access to device credentials, enabling them to impersonate legitimate devices or users, manipulate data streams, and potentially disrupt navigation or monitoring systems. The confidentiality breach of JWT tokens could lead to further lateral movement within maritime IoT networks, exposing sensitive operational data. Integrity of system data is compromised as attackers can issue commands or alter device states under stolen credentials. Although availability is not directly impacted, the loss of trust and control over critical maritime systems could have operational and safety consequences. European maritime companies, port authorities, and service providers relying on SignalK infrastructure must consider this vulnerability a high priority due to the critical nature of maritime operations and regulatory compliance requirements around cybersecurity.
Mitigation Recommendations
The primary mitigation is to upgrade all SignalK signalk-server instances to version 2.19.0 or later, where the vulnerability is fixed. Until upgrades can be performed, organizations should: 1) Disable or restrict the `allow_readonly` setting to prevent unauthenticated readonly WebSocket connections. 2) Restrict network access to the WebSocket stream endpoint and the `/signalk/v1/access/requests/:id` REST API endpoint using firewall rules or network segmentation to trusted clients only. 3) Monitor access logs for unusual WebSocket connections or polling activity indicative of enumeration attempts. 4) Implement strict IP filtering and validation to prevent IP spoofing attacks that facilitate creating convincing spoofed access requests. 5) Educate administrators to promptly review and approve access requests only after thorough validation to reduce risk of token issuance to attackers. 6) Employ network intrusion detection systems tuned to detect anomalous WebSocket and REST API usage patterns. These targeted mitigations go beyond generic advice by focusing on configuration hardening and network-level controls specific to the vulnerability's exploitation vectors.
Affected Countries
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/8/2026, 10:12:23 PM
Last updated: 2/5/2026, 6:04:08 PM
Views: 124
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-1707: Vulnerability in pgadmin.org pgAdmin 4
HighCVE-2025-68121: CWE-295: Improper Certificate Validation in Go standard library crypto/tls
UnknownCVE-2025-58190: CWE-835: Loop with Unreachable Exit Condition in golang.org/x/net golang.org/x/net/html
UnknownCVE-2025-47911: CWE-400: Uncontrolled Resource Consumption in golang.org/x/net golang.org/x/net/html
UnknownCVE-2025-15557: CWE-295 Improper Certificate Validation in TP-Link Systems Inc. Tapo H100 v1
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.