Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed Signal K server
-
DeliverySend unauthenticated GET /skServer/ziplogs
-
ExploitExtract secretKey from security.json in ZIP
-
ExecutionForge admin JWT with HS256 key
-
PersistCreate persistent admin account
-
ImpactFull server/vessel control
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires network reachability to the Signal K server's HTTP interface and the presence of the unauthenticated /skServer/ziplogs endpoint, whose handler zips getFullLogDir(app) - normally the config directory - and therefore includes security.json containing the HS256 secretKey. The practical prerequisite is that security is enabled so that security.json with a signing key exists; the sibling /skServer/logfiles/ route is admin-protected while ziplogs was not, so no credentials, configuration change, or user interaction is needed. Limiting factors: the server must be reachable by the attacker (the GHSA notes many instances run on the default port and are internet-discoverable, but non-exposed LAN/vessel deployments are not remotely reachable), and all versions before 2.33.0 are affected (confirmed on 2.32.0). |
| Impact | All available signals align toward high real-world risk, with one caveat about exposure scale. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a network-reachable, low-complexity flaw requiring no privileges and no user interaction, and the vuln.today Decision label is act_now - the strongest urgency signal in the input. The source-code evidence is unusually strong: the fixing commit adds exactly one line (addAdminMiddleware on the /skServer/ziplogs route), confirming the root cause is a missing authentication check (CWE-306) rather than a theoretical weakness, and the GHSA advisory walks the full chain from unauthenticated ZIP download to secretKey (CWE-312) disclosure to forged admin JWT to persistent admin account. Impact is genuinely VC:H/VI:H/VA:H: full administrative takeover of the Signal K server. The tempering factors are exposure and exploitation status: no CISA KEV entry, no EPSS score, and no confirmed public exploit are present in the input, and the GHSA notes only around 66 internet-exposed servers found via Shodan - so this is a critical flaw in a small, niche population rather than a mass-exploitation event. No signals conflict; the only missing data is EPSS and any active-exploitation telemetry. |
| Exploit ScenarioDerived | A remote attacker on the network issues a single unauthenticated GET request to /skServer/ziplogs and receives a ZIP archive containing security.json, which holds the HS256 JWT secretKey. Using that symmetric key the attacker forges a valid admin JWT, creates a persistent administrator account through the authenticated API, and then logs in normally - gaining lasting control over NMEA routing, plugins, and alarms. No public working exploit is identified in the input, but the GHSA advisory documents the exact steps and the trigger is a simple HTTP request against a default endpoint. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Unauthenticated remote attackers can pull a ZIP of the Signal K Server log/config directory from the /skServer/ziplogs route in every signalk-server release before 2.33.0, and that archive contains security.json with the server's HS256 JWT signing key. Possession of the secretKey lets an attacker forge administrator tokens or create a persistent admin account and then authenticate through the normal login flow, yielding full control over NMEA routing, plugin configuration and alarms on affected installations, including vessel deployments. The endpoint was confirmed reachable without credentials on a live signalk-server 2.32.0 instance and roughly 66 potentially affected servers were visible to Shodan at disclosure; no public exploit identified at time of analysis, and the vendor addressed the issue in 2.33.0 by placing the route behind admin middleware.
RemediationAI
Upgrade to signalk-server 2.33.0 or later (release https://github.com/SignalK/signalk-server/releases/tag/v2.33.0, fix commit 728bab82742d16c54e50525b95dc9b6e32396107), which applies admin middleware to /skServer/ziplogs so unauthenticated requests receive 401. Because secretKey disclosure is equivalent to admin compromise, patching alone is not sufficient where the endpoint may have been reachable: rotate the secretKey in security.json and audit for unknown admin accounts, since forged tokens remain valid until the signing key changes. Where an immediate upgrade is not possible, block /skServer/ziplogs at the reverse proxy or firewall and avoid exposing the Signal K HTTP interface to the internet (the trade-off is that administrators lose the bundled log-download convenience and must retrieve logs directly from the host, and proxy rules must be maintained as routes change); the vendor's own guidance notes that updating is the complete fix, and excluding security.json from downloadable archives is a supplementary hardening step rather than a substitute for the middleware.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Signal K Server is a Node.js/Express application that acts as a marine data hub, and this is a CWE-306 missing authentication for a critical function compounded by CWE-312 cleartext storage of sensitive information. In src/interfaces/logfiles.js the sibling route /skServer/logfiles/ is registered with app.securityStrategy.addAdminMiddleware(), but the /skServer/ziplogs handler is not; it calls sendZip() over getFullLogDir(app), which is normally the config directory and therefore sweeps security.json into the archive (e.g. sk-logs--<timestamp>/security.json). That file holds the symmetric HMAC key used by src/tokensecurity.ts, where tokens are validated with jwt.verify(token, configuration.secretKey) and extracted from an 'Authorization: JWT <token>' header, with the payload 'id' claim mapped to an admin username. Because HS256 is symmetric, disclosure of the verification key is equivalent to disclosure of the signing key: any token the attacker mints with a matching admin 'id' claim is accepted exactly like a legitimate session. The upstream commit 728bab82742d16c54e50525b95dc9b6e32396107 fixes the root cause with a one-line addition of addAdminMiddleware(${SERVERROUTESPREFIX}/ziplogs), and the advisory additionally suggests excluding security.json from downloadable archives regardless of authentication.
Know when Signalk Server gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Unauthenticated network request to a default endpoint (AV:N/AC:L/PR:N/UI:N) leaks the JWT signing key enabling full admin takeover, giving C:H/I:H/A:H; scope stays within the same server authority (S:U).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Signal K Server before 2.33.0 contains a missing authentication vulnerability that allows unauthenticated remote attackers to download log archives via the /skServer/ziplogs endpoint. Attackers can extract the JWT secretKey from security.json in the ZIP, forge administrator tokens, and create persistent admin accounts for full server control.
Technical POC Analysis
Bug class: CWE-306, Missing Authentication for Critical Function.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-118690 is a critical unauthenticated vulnerability in Signal K Server (all releases before 2.33.0) that allows remote attackers to download a configuration archive containing the JWT signing key, enabling administrator token forgery and persistent admin account creation. This affects marine, vessel, and industrial deployments relying on Signal K for NMEA routing and alarms, exposing them to full system compromise. Leadership should prioritize immediate patching because the vulnerability is remotely exploitable without credentials and affects safety-critical operations.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Signalk Server
View allUnauthenticated privilege escalation in SignalK Server (versions prior to 2.24.0-beta.4) allows remote attackers to inje
Signal K Server versions before 2.25.0 allow remote unauthenticated attackers to crash the server via Regular Expression
SignalK Server prior to version 2.24.0-beta.1 allows unauthenticated remote attackers to modify navigation data source p
SignalK Server versions prior to 2.24.0 allow unauthenticated attackers to hijack OAuth2 sessions and steal authorizatio
SSRF in Signal K Server's App Store icon fetcher allows anyone who can publish an npm package carrying Signal K keywords
Signal K Server prior to version 2.24.0 permits low-privileged authenticated users to bypass prototype boundary filterin
EUVD-2026-112491
GHSA-4r6j-f6gv-fqcx
NVD
CVE.org
Exploit-DB