CVE-2026-115752
Signal K Server 2.28.0-beta.2 before 2.34.0 SSRF via App Store appIcon
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
2.3
Signal K Server 2.28.0-beta.2 before 2.34.0 SSRF via App Store appIcon
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
- Record
CVE-2026-115752- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-918
- Updated
- 2026-11-02
EUVDEUVD-2026-108960
2.3
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
- Record
EUVD-2026-108960- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7wpf-ch8f-5f4x
4.2
signalk-server has SSRF via absolute signalk.appIcon URL in the app store icon fetcher
Summary
The app store icon code (dist/appstore/icon-probe.js around line 200 and icon-bytes.js around line 138) resolves a plugin's declared signalk.appIcon. Relative paths are pinned to the CDN, but an absolute http(s) URL is used as-is: the server fetches it, follows redirects, and stores any image/* response as the plugin's icon, which is then served to the admin UI. Unrelated to GHSA-q59x-jc9f-gfqf.
Affected
signalk-server 2.33.0 (latest).
Reproduction
The real dist modules driven directly, Docker with --network none; a local "internal" service on 127.0.0.1 logs requests:
[CONTROL relative] declared=../../icon.png
resolved=null
internal-service hits: [] stored: null
[ATTACK absolute] declared=http://127.0.0.1:35013/latest/meta-data/iam
resolved=http://127.0.0.1:35013/latest/meta-data/iam
internal-service hits: ["GET /latest/meta-data/iam"] stored: .../icon-bytes/[email protected] (70 bytes)
[ATTACK redirect] declared=http://127.0.0.1:35013/redir
internal-service hits: ["GET /redir","GET /internal-secret-via-redirect.png"] stored: .../icon-bytes/[email protected] (70 bytes)
The modules were tested directly rather than through a full running server.
Impact
Anyone who can get a plugin listed in the app store (publishing an npm package with the signalk keywords) can make every signalk-server that browses the app store send requests to internal addresses on the vessel network and to cloud metadata endpoints. Responses with an image content type are stored and served back to the user.
Suggested fix
Only accept relative icon paths resolved against the CDN (or an https allowlist of known hosts), do not follow redirects to other hosts, and reject private, loopback and link-local addresses after resolution.
- Record
GHSA-7wpf-ch8f-5f4x- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-918
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-rjvc-ghm7-354c
2.3
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery...
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
- Record
GHSA-rjvc-ghm7-354c- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-918
- Updated
- 2026-11-02
NVD
2.3
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
- Record
CVE-2026-115752- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-918
- Updated
- 2026-11-02
OSV
2.3
Signal K Server 2.28.0-beta.2 before 2.34.0 SSRF via App Store appIcon
Signal K Server from 2.28.0-beta.2 before 2.34.0 contains a server-side request forgery vulnerability in the App Store icon fetcher that trusts absolute signalk.appIcon URLs. Attackers publishing npm packages with Signal K keywords can make servers request loopback, vessel network, or cloud metadata endpoints, storing image-typed responses served back via the admin UI.
- Record
CVE-2026-115752- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-918
- Updated
- 2026-11-02
OSVGHSA-7wpf-ch8f-5f4x
4.2
signalk-server has SSRF via absolute signalk.appIcon URL in the app store icon fetcher
Summary
The app store icon code (dist/appstore/icon-probe.js around line 200 and icon-bytes.js around line 138) resolves a plugin's declared signalk.appIcon. Relative paths are pinned to the CDN, but an absolute http(s) URL is used as-is: the server fetches it, follows redirects, and stores any image/* response as the plugin's icon, which is then served to the admin UI. Unrelated to GHSA-q59x-jc9f-gfqf.
Affected
signalk-server 2.33.0 (latest).
Reproduction
The real dist modules driven directly, Docker with --network none; a local "internal" service on 127.0.0.1 logs requests:
[CONTROL relative] declared=../../icon.png
resolved=null
internal-service hits: [] stored: null
[ATTACK absolute] declared=http://127.0.0.1:35013/latest/meta-data/iam
resolved=http://127.0.0.1:35013/latest/meta-data/iam
internal-service hits: ["GET /latest/meta-data/iam"] stored: .../icon-bytes/[email protected] (70 bytes)
[ATTACK redirect] declared=http://127.0.0.1:35013/redir
internal-service hits: ["GET /redir","GET /internal-secret-via-redirect.png"] stored: .../icon-bytes/[email protected] (70 bytes)
The modules were tested directly rather than through a full running server.
Impact
Anyone who can get a plugin listed in the app store (publishing an npm package with the signalk keywords) can make every signalk-server that browses the app store send requests to internal addresses on the vessel network and to cloud metadata endpoints. Responses with an image content type are stored and served back to the user.
Suggested fix
Only accept relative icon paths resolved against the CDN (or an https allowlist of known hosts), do not follow redirects to other hosts, and reject private, loopback and link-local addresses after resolution.
- Record
GHSA-7wpf-ch8f-5f4x- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-918
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
signalk-servernpm |
2.28.0-beta.2 up to 2.34.0 | 2.34.0 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-115752 is a low vulnerability (CVSS 2.3) in Signalk Signalk-server, published October 23, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.18%, the 7th percentile. Fixed in signalk-server 2.34.0.
References
github.com/SignalK/signalk-server/security/advisories/GHSA-7wpf-ch8f-5f4x
github.com/SignalK/signalk-server/commit/535104f655304c697d535252da397948e5101dc6
github.com/SignalK/signalk-server/releases/tag/v2.34.0
vulncheck.com/advisories/signal-k-server-2.28.0-beta.2-before-2.34.0-ssrf-via-app-store-appicon
github.com/SignalK/signalk-server/commit/7eeae00ac4aee5f04e21e3ff9527f57823e65a4d
github.com/advisories/GHSA-7wpf-ch8f-5f4x