
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2025-69203 is an access request spoofing vulnerability in Signal K Server, a maritime hub application, classified as Authentication Bypass by Spoofing (CWE-290). It affects all versions prior to 2.19.0, including beta releases up to 2.19.0-beta.4. The vulnerability was published on January 1, 2026, and patched in v2.19.0 released the same day. The CNA (GitHub) assigned a CVSS v3.1 score of 6.3 (Medium), while NVD's independent assessment scored it 8.8 (High) (Github Advisory, SignalK Advisory).
The vulnerability stems from two compounding weaknesses in src/tokensecurity.js and the admin UI (packages/server-admin-ui/src/views/security/AccessRequests.js). First, the access request handler unconditionally trusts the X-Forwarded-For HTTP header to determine client IP — const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress — allowing any unauthenticated client to spoof an arbitrary IP address. Second, the admin UI prominently displays the attacker-controlled description field while the permissions field (which determines actual access level) is less visually prominent, enabling an attacker to request admin permissions while the description reads as readonly. When combined with a companion information disclosure vulnerability that allows unauthenticated enumeration of device/source names via /signalk/v1/api/sources, an attacker can impersonate a known legitimate device with a convincing description and a spoofed internal IP to trick an administrator into approving elevated access (Github Advisory, SignalK Advisory).
Successful exploitation requires an administrator to approve the spoofed access request, after which the attacker gains unauthorized administrative control over the Signal K Server and any connected maritime systems aboard the vessel. This results in full confidentiality, integrity, and availability compromise of the hub and its connected sensors, navigation systems, and other onboard infrastructure. The advisory notes that when combined with a token theft vulnerability, this attack provides a complete authentication bypass requiring only a single administrator click (SignalK Advisory).
A public proof-of-concept (PoC) exploit is included in the GitHub Security Advisory, demonstrating the full attack chain in Python using the requests library. There is no evidence of in-the-wild exploitation at this time. The EPSS score is approximately 0.021% (6th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA KEV catalog (Github Advisory).
/signalk/v1/api/sources on the target Signal K Server to retrieve a list of known device/source names.clientId in the spoofed request, increasing the appearance of legitimacy.clientId set to the legitimate device name, description set to a misleading string (e.g., "<device_name> - Read Only"), and permissions set to "admin".X-Forwarded-For header set to a trusted internal IP address (e.g., 192.168.1.100) to make the request appear to originate from within the local network./signalk/v1/access/requests. A 202 Accepted response confirms the request is queued for administrator review./signalk/v1/access/requests from external IP addresses containing an X-Forwarded-For header set to an internal IP range (e.g., 192.168.x.x, 10.x.x.x); unauthenticated GET requests to /signalk/v1/api/sources from unfamiliar hosts.permissions: admin but a description suggesting readonly or limited access.clientId values matching known device names but originating from unexpected network locations; newly issued admin tokens for device identifiers that do not correspond to known physical devices.Upgrade Signal K Server to version 2.19.0 or later, which includes fixes for trusted proxy handling, prominent display of the requested permissions field in the admin UI, and restriction of access request events to authenticated admin users only (SignalK Release). As interim mitigations, configure the server to only trust X-Forwarded-For headers from known reverse proxy IP addresses using Express.js trust proxy settings, and restrict network access to the Signal K Server's admin interface to trusted internal hosts only. Administrators should be educated to carefully verify both the description and permissions fields of any access request and to confirm device legitimacy through out-of-band communication before approving elevated access (Github Advisory).
The vulnerability was reported by security researcher atsc11 and published by Signal K maintainer tkurki on January 1, 2026, with the patch released the same day. The release notes for v2.19.0 explicitly flag the release as containing important security fixes and recommend immediate updates for internet-facing servers (SignalK Release). No significant broader media coverage or notable community debate has been identified beyond the advisory and standard vulnerability database entries.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."