Skip to content

Deno: Denial of service via non-ASCII bytes in WebSocket response headers

Moderate severity GitHub Reviewed Published Jun 17, 2026 in denoland/deno

Package

cargo deno (Rust)

Affected versions

<= 2.7.4

Patched versions

2.7.5

Description

Summary

A Deno program that opens a client WebSocket connection could be crashed by
the remote server. While handling the WebSocket handshake response, Deno parsed
the Sec-WebSocket-Protocol and Sec-WebSocket-Extensions response headers in
a way that assumed their bytes were always printable ASCII. A response header
containing non-visible-ASCII bytes (0x80-0xFF) caused a panic that aborted
the entire Deno process.

Details

When establishing a client WebSocket connection, Deno read the
Sec-WebSocket-Protocol and Sec-WebSocket-Extensions headers from the
server's 101 Switching Protocols response and converted them to strings
without handling the failure case. HeaderValue::to_str() returns an error for
any value containing bytes outside the visible-ASCII range, so a header carrying
such bytes triggered an unrecoverable error during conversion.

Because the client initiates the outbound connection, the handshake response is
fully controlled by the server. A server that returns bytes such as 0xFF 0xFE
in either header could therefore crash any client that connected to it.

This is purely an availability issue. There is no information disclosure and no
memory-safety impact; the only effect is termination of the current process.

Impact

Remote denial of service. Any Deno application that establishes WebSocket
connections to untrusted or potentially-compromised endpoints could be
terminated by the remote peer. Exploitation requires the victim application to
initiate the outbound WebSocket connection. An attacker who controls the
WebSocket endpoint, or who can man-in-the-middle a plaintext ws:// connection,
could trigger the crash. The effect is confined to crashing the process that
opened the connection.

Patch

The issue is fixed in Deno 2.7.5. The header values are now parsed with
graceful fallbacks: values that cannot be represented as ASCII strings are
skipped instead of aborting the process. A regression test covers a server that
returns non-ASCII bytes in Sec-WebSocket-Protocol.

Users should upgrade to Deno 2.7.5 or later.

Workarounds

Until you can upgrade, only connect to trusted WebSocket endpoints and prefer
wss:// (TLS) over ws://, which prevents a network man-in-the-middle from
injecting malicious header bytes into the handshake response.

References

@bartlomieju bartlomieju published to denoland/deno Jun 17, 2026
Published to the GitHub Advisory Database Jun 17, 2026
Reviewed Jun 17, 2026

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L

EPSS score

Weaknesses

Uncaught Exception

An exception is thrown from a function, but it is not caught. Learn more on MITRE.

CVE ID

CVE-2026-55517

GHSA ID

GHSA-x2qc-cmh9-f4hf

Source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.