Executive brief
NATS Server is a high-performance messaging system used for cloud and edge computing. A vulnerability in its WebSocket handling allows an unauthenticated attacker to crash the server remotely by sending a single malicious message. This results in a complete service outage, disconnecting all clients and disrupting operations that rely on the messaging infrastructure.
Technical details
A vulnerability exists in the NATS Server WebSocket implementation (wsRead in server/websocket.go) due to a missing sanity check on 64-bit extended payload lengths. The server fails to validate that the most significant bit (MSB) of the length field is zero as required by RFC 6455. When an attacker sends a frame with the MSB set, the uint64-to-int conversion results in a negative value that bypasses bounds clamping logic, eventually triggering an unrecovered slice bounds out-of-range panic in the Go runtime. This occurs before authentication, allowing any network-reachable attacker to terminate the nats-server process. The issue is fixed in versions 2.11.14 and 2.12.5.
Affected products
- NATS.io NATS Server >= 2.2.0, < 2.11.14; >= 2.12.0, < 2.12.5
- Red Hat Multicluster Global Hub 1.4.5, 1.5.4, 1.6.2
Timeline
- 2026-03-09: patched: Internal fix date identified in advisory
- 2026-03-25: disclosed: Public disclosure of CVE-2026-27889
- 2026-05-28: advisory: Red Hat released security updates for Multicluster Global Hub
References
- https://advisories.nats.io/CVE/secnote-2026-03.txt
- https://github.com/nats-io/nats-server/security/advisories/GHSA-pq2q-rcw4-3hr6
- https://access.redhat.com/errata/RHSA-2026:21769
- https://access.redhat.com/errata/RHSA-2026:22347
- https://access.redhat.com/errata/RHSA-2026:23345
- https://access.redhat.com/security/cve/CVE-2026-27889
- https://bugzilla.redhat.com/show_bug.cgi?id=2451447