GHSA-7m8x-x364-m26j: Signal K Server: Buffered logs exposed to unauthenticated WebSocket clients

Published Nov 12, 2026
·
Updated

Summary

An unauthenticated WebSocket client can subscribe to the log path and receive buffered server logs.

WebSocket connections are intentionally permitted before authentication because login occurs over the WebSocket connection. However, the log subscription path does not enforce an authorization check.

processSubscribe handles subscriptions to the log path separately, without applying access control:

ts if ( Array.isArray(msg.subscribe) && msg.subscribe.length > 0 && msg.subscribe[0].path === 'log' ) { if (!spark.logUnsubscribe) { spark.logUnsubscribe = startServerLog(app, spark) } } else { // normal subscriptions go through subscriptionmanager, which applies // securityStrategy.filterReadDelta }

startServerLog then replays the whole buffer to that socket:

ts app.logging.getLog().forEach((log) => { spark.write({ type: 'LOG', data: log }) })

The asymmetry is inside this one file. Writes are gated by securityStrategy.shouldAllowWrite (ws.ts:961), normal delta subscriptions are filtered by securityStrategy.filterReadDelta (ws.ts:1159, the else branch of this same function), and the log branch consults neither.

An unauthenticated socket, which is legitimately open for login, can subscribe to log and receive buffered server logs.

Fix: Requires an administrator principal, before startServerLog, in the same way the other branch defers to securityStrategy. The fix was released with version 2.31.0-beta.1.

The investigated code path was reviewed at commit 26ab199. No server was run and no WebSocket frames were captured. AI assistance was used during the investigation.

Affected Software

1 affected componentFixes available
npm/signalk-server<2.31.0-beta.1
2.31.0-beta.1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/signalk-server to a version that resolves this vulnerability.

    Fixed in 2.31.0-beta.1
  2. Upgrade

    Upgrade Signal K Server to a version that resolves this vulnerability.

    Fixed in 2.31.0-beta.1

Event History

Nov 12, 2026
Advisory Published
via GitHub·07:14 PM
Data Sourced
via GitHub·07:14 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What does an attacker need to exploit this issue?

An attacker only needs to establish a WebSocket connection and subscribe to the log path. No authentication, privileges, or user interaction are required.

2

Are deployments using the normal WebSocket login flow exposed?

Yes. WebSocket connections are intentionally allowed before authentication because login occurs over the WebSocket connection, and the log subscription path does not perform an authorization check.

3

What information can be disclosed?

The server replays its entire buffered log to the unauthenticated WebSocket client. The specific sensitivity of the exposed information depends on what the server has recorded in those logs.

4

How can I determine whether a server is affected?

Test whether an unauthenticated WebSocket client can subscribe to the log path and receive messages of type LOG, including previously buffered entries. The affected behavior is in the separate log-subscription handling path rather than normal delta subscriptions.

5

Which release addresses this issue?

Signal K Server v2.31.0 is identified in the provided release reference. The referenced commit is 1bee85114a4cb7403aba71632d9902792d6b4f0c.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203