Description
undici's experimental WebSocketStream client crashes the whole Node.js process when a remote peer closes the TCP connection without a WebSocket close handshake. On an unclean close the internal socket-close handler calls abort on the writable stream unconditionally and discards the returned promise, but per the WHATWG Streams standard aborting a locked writable returns a promise that rejects with a TypeError. Because the application holds a writer on that writable, which is the only way to write, the rejection is never observed and Node's default unhandled-rejection behavior terminates the process. An untrusted server can therefore crash a client with a single abrupt disconnect, with no authentication and no application mistake. This affects undici versions from 7.0.0 up to 7.29.1 and from 8.0.0 up to 8.10.2. Users should upgrade to undici 7.29.1 or 8.10.2.
Published: 2026-09-04
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability lies in undici’s experimental WebSocketStream client. When a remote peer closes the TCP connection without sending a WebSocket close handshake, the socket‑close handler unconditionally aborts the writable stream. According to the WHATWG Streams standard, aborting a locked writable stream returns a promise that rejects with a TypeError. Because the application holds the writer, the rejection is never observed. Node’s default unhandled‑rejection policy terminates the process, resulting in a denial of service. This flaw maps to CWE‑248 (Unchecked Return Value) and CWE‑754 (Dependency on Functions That Can Raise Exceptions).

Affected Systems

Version ranges of the undici library are affected. All releases from 7.0.0 through 7.29.1 inclusive, and from 8.0.0 through 8.10.2 inclusive, contain the vulnerable WebSocketStream implementation. Users should update to undici 7.29.1 or 8.10.2, which include a corrected abort handling path.

Risk and Exploitability

The CVSS score of 5.9 indicates a moderate severity vulnerability. EPSS information is not available and the issue is not listed in the CISA KEV catalog, suggesting no publicly known exploitation yet. The attack vector is remote: any untrusted server communicating over a WebSocket can trigger an abrupt disconnect without a close handshake, leading to an unobserved promise rejection and a process crash. No authentication or privileged access is required. The impact is local to the affected process and results in a denial of service for the running application.

Generated by OpenCVE AI on September 4, 2026 at 18:10 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the undici package to version 7.29.1 or 8.10.2, which contains the fixed WebSocketStream abort logic.
  • If an upgrade cannot be performed immediately, add an uncaughtException or unhandledRejection handler in the Node.js application that logs the error and restarts the WebSocket client or the process instead of allowing the default termination.
  • Implement a health‑check or process supervisor (e.g., PM2, systemd, Docker restart policies) to detect and recover from the abrupt termination caused by an unclean close.

Generated by OpenCVE AI on September 4, 2026 at 18:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 04 Sep 2026 16:45:00 +0000

Type Values Removed Values Added
Description undici's experimental WebSocketStream client crashes the whole Node.js process when a remote peer closes the TCP connection without a WebSocket close handshake. On an unclean close the internal socket-close handler calls abort on the writable stream unconditionally and discards the returned promise, but per the WHATWG Streams standard aborting a locked writable returns a promise that rejects with a TypeError. Because the application holds a writer on that writable, which is the only way to write, the rejection is never observed and Node's default unhandled-rejection behavior terminates the process. An untrusted server can therefore crash a client with a single abrupt disconnect, with no authentication and no application mistake. This affects undici versions from 7.0.0 up to 7.29.1 and from 8.0.0 up to 8.10.2. Users should upgrade to undici 7.29.1 or 8.10.2.
Title undici vulnerable to Denial of Service via WebSocketStream unclean close
Weaknesses CWE-248
CWE-754
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: openjs

Published:

Updated: 2026-09-04T19:30:14.192Z

Reserved: 2026-09-02T19:16:57.905Z

Link: CVE-2026-85014

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T17:17:02.470

Modified: 2026-09-04T20:17:31.027

Link: CVE-2026-85014

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T18:15:04Z

Weaknesses
  • CWE-248

    Uncaught Exception

  • CWE-754

    Improper Check for Unusual or Exceptional Conditions