CVE-2026-123807SignalK signalk-server path traversal
CVE-2026-123807 is a path traversal in SignalK signalk-server, rated critical (9.8 on CVSS 3.1).
Why this priority: Critical, and reachable over the network without an account.
Published · Updated · NVD status: Received
What it is
A file name from the request can climb out of the intended folder with sequences like ../, reaching files the service never meant to expose.
How it is reached
An attacker can exploit it over the network, without an account, and nobody has to click anything.
What an attacker gains
A successful attack can read the data it protects, change data or behaviour and take it offline. In practice, this kind of flaw lets an attacker read or write files outside the folders the service meant to expose.
Is it being exploited?
CISA's SSVC assessment notes a public proof of concept. It can be exploited automatically, at scale.
What to do
- Upgrade SignalK signalk-server to 2.34.0 or later. Other affected products have their own fixed versions on this page.
- Until it is patched, keep it off the internet or behind a VPN, allowlist or authenticating proxy.
Description from NVD
Signal K Server is a server application that runs on a central hub in a boat. From 2.0.0 until 2.34.0 for Signal K Server and from 1.0.0 until 1.5.3 for @signalk/resources-provider, the v2 REST route GET /signalk/v2/api/resources/:resourceType/:resourceId accepts an unsafe resourceId that can escape the intended resource directory. The route passes the attacker-controlled resourceId through src/api/resources/index.ts to FileStore.getResource() in packages/resources-provider-plugin/src/filestorage.ts without adequate path containment, allowing arbitrary JSON files reachable by the server to be read. Related PUT and DELETE resource operations can write or delete files outside the storage root. Deployments with allow_readonly enabled permit anonymous reads, while other deployments require a readonly user token. Reading security.json exposes the HS256 JWT signing secret and password hashes, allowing an attacker to forge an administrator token. Administrative access to POST /skServer/providers can then create an Execute provider that runs commands with the server process privileges and persists its configuration across restarts. This issue is fixed in Signal K Server 2.34.0 and @signalk/resources-provider 1.5.3.
What this means for your architecture.
A CVE names a product. Whether it matters depends on where that product sits in your systems: what reaches it, which trust boundary it guards and what it can reach once compromised. Veriom maps your components, their relationships and your trust boundaries from your code, cloud and delivery evidence, so you can see where a component like this sits. The radar itself does not look at your systems.
Components it touches
- File storage the service can read or write. The flaw sits between the application and the file system it can reach.
Trust boundaries in play
- Internet-facing entry points. No account is needed. Any instance reachable from outside your perimeter, through a load balancer, gateway, VPN or exposed admin port, is in scope.
- Between the application and the file system it can reach. An attacker who crosses it can read or write files outside the folders the service meant to expose.
Questions to answer about your own systems
- Where does SignalK signalk-server run in your systems, and at which version?
- Which of those instances can be reached from the internet or partner networks?
- What can it reach once compromised: which data stores, secrets and services?
Sources
- CVE records and CVSS scores from the NVD CVE API. This product uses the NVD API but is not endorsed or certified by the NVD.
- Exploitation status from CISA’s Known Exploited Vulnerabilities catalog.
- Exploit likelihood from FIRST’s Exploit Prediction Scoring System (EPSS), refreshed daily.
- Explanations are written by Veriom from fixed templates over each record’s data, not by a person reviewing each CVE. Descriptions are quoted from the records as published.