CVE-2025-66398: Signal K Server has Unauthenticated State Pollution leading to Remote Code Execution (RCE)

CVE-2025-66398 · Severity: critical · CVSS 9.6 · Published 2026-01-01

Signal K Server is a middleware engine for vessel data management commonly used in maritime systems. An unauthenticated attacker can manipulate the server's internal state through an unprotected backup validation endpoint, then hijack the administrator's restore function to inject malicious configuration files. This enables account takeover and arbitrary command execution with full server privileges, potentially compromising the entire vessel's automation and navigation systems.

Technologies: signalk-server (npm), Signalk Signal K Server. Vendors: npm, Signalk.

Quick answers

Is CVE-2025-66398 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-66398 being exploited in the wild.
How severe is CVE-2025-66398?
Critical severity, with a CVSS score of 9.6, published 1 January 2026.
Which products and versions are affected?
signalk-server (npm) < 2.19.0, SEMVER:introduced=0,fixed=2.19.0.
Is there a fix for CVE-2025-66398?
Yes. signalk-server (npm): upgrade to 2.19.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-66398 attacked?
It is attacked over the network, in a hosted service.
Am I affected by CVE-2025-66398?
Check whether you run signalk-server (npm) or Signalk Signal K Server at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • signalk-server (npm): upgrade to 2.19.0 or later
    npm install signalk-server@2.19.0

Technical details

The vulnerability is a state pollution flaw in src/serverroutes.ts where a module-level global variable restoreFilePath is shared across all requests and updated by the unauthenticated /skServer/validateBackup endpoint. An attacker uploads a malicious zip file to validateBackup, which sets restoreFilePath to point to attacker-controlled content. When the /skServer/restore endpoint is triggered (either by the attacker or waiting for admin action), it extracts files from the polluted path, allowing the attacker to overwrite security.json with a backdoor administrator account. The attacker then leverages a separate command injection vulnerability in /skServer/appstore/install/ to execute arbitrary system commands. Attack vector is network-based with no authentication required for the initial state pollution; user interaction is not required if the restore endpoint is also unprotected, or limited if waiting for admin to manually restore. Patch available: version 2.19.0 and later.

Affected products

  • Signal K Server <= 2.18.0

Identifiers

  • CVE-2025-66398
  • GHSA-w3x5-7c4c-66p9

Timeline

  • 2026-01-02: disclosed
  • 2026-01-02: patched: Version 2.19.0 patches the vulnerability

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.