CVE-2026-109855
undici WebSocket client vulnerable to Denial of Service via failed HTTP/2 handshake
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
undici WebSocket client vulnerable to Denial of Service via failed HTTP/2 handshake
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
CVE-2026-109855- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-754
- Updated
- 2026-11-02
EUVDEUVD-2026-101959
7.5
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
EUVD-2026-101959- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-qq8j-7v2v-3rwp
7.5
undici WebSocket client vulnerable to Denial of Service via failed HTTP/2 handshake
Impact
undici's experimental WebSocket client (enabled by default via allowH2: true) crashes the Node.js process when it connects to a malicious server over HTTP/2. If the server answers the WebSocket upgrade with a response that fails handshake validation, undici aborts the request, but the abort is a no-op because the request is already marked completed, so the underlying ClientHttp2Stream is left open with no error listener. When the server then destroys the connection, the orphaned stream emits an unhandled error and the process exits. A remote, unauthenticated server can therefore deny service to any client that opens a WebSocket to it over HTTP/2. undici 8.11.0 and 8.11.1 are affected; the regression was introduced in 8.11.0.
Patches
Upgrade to 8.11.2.
Workarounds
Set allowH2: false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers, until upgrading.
- Record
GHSA-qq8j-7v2v-3rwp- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-754
- Updated
- 2026-11-02
NVD
7.5
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
CVE-2026-109855- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-754
- Updated
- 2026-11-02
OSV
7.5
undici WebSocket client vulnerable to Denial of Service via failed HTTP/2 handshake
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
CVE-2026-109855- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-754
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-109855
7.5
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
DEBIAN-CVE-2026-109855- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-qq8j-7v2v-3rwp
7.5
undici WebSocket client vulnerable to Denial of Service via failed HTTP/2 handshake
Impact
undici's experimental WebSocket client (enabled by default via allowH2: true) crashes the Node.js process when it connects to a malicious server over HTTP/2. If the server answers the WebSocket upgrade with a response that fails handshake validation, undici aborts the request, but the abort is a no-op because the request is already marked completed, so the underlying ClientHttp2Stream is left open with no error listener. When the server then destroys the connection, the orphaned stream emits an unhandled error and the process exits. A remote, unauthenticated server can therefore deny service to any client that opens a WebSocket to it over HTTP/2. undici 8.11.0 and 8.11.1 are affected; the regression was introduced in 8.11.0.
Patches
Upgrade to 8.11.2.
Workarounds
Set allowH2: false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers, until upgrading.
- Record
GHSA-qq8j-7v2v-3rwp- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-754
- Updated
- 2026-11-02
OSVRHSA-2026:76677
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:76677- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:83198
6.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:83198- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-109855
7.5
undici is an HTTP client library for Node.js. In versions 8.11.0 and 8.11.1, its experimental WebSocket client, which is enabled by default when HTTP/2 is allowed, mishandles a failed WebSocket handshake over HTTP/2: the request is already marked completed, so the abort becomes a no-op and the underlying HTTP/2 stream is left open with no error listener. When a malicious server then destroys the connection, the orphaned stream emits an unhandled error and the Node.js process exits. A remote, unauthenticated server can therefore crash any client that opens a WebSocket to it over HTTP/2, resulting in a denial of service. The issue is fixed in undici 8.11.2, and users should upgrade to 8.11.2 or later. As a workaround, set allowH2 to false to disable HTTP/2 for WebSocket connections, or avoid opening WebSocket connections to untrusted servers.
- Record
UBUNTU-CVE-2026-109855- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-109855 No score
CVE-2026-109855 in undici - Patched by Root
Root has patched CVE-2026-109855 in the undici package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-109855- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
undicinpm |
8.11.0 up to 8.11.2 | 8.11.2 |
node-undiciDebian:14 |
before 8.12.2+dfsg+~cs3.2.3-1, plus listed versions 7.15.0+dfsg+~cs3.2.0-17.15.0+dfsg+~cs3.2.0-37.16.0+dfsg+~cs3.2.0-17.16.0+dfsg+~cs3.2.0-27.18.2+dfsg+~cs3.2.0-1 Show 12 moreShow less7.24.5+dfsg+~cs3.2.0-17.24.6+dfsg+~cs3.2.0-17.24.6+dfsg+~cs3.2.0-27.24.6+dfsg+~cs3.2.0-37.3.0+dfsg1+~cs24.12.11-17.3.0+dfsg1+~cs24.12.11-28.10.2+dfsg+~cs3.2.2-18.12.1+dfsg+~cs3.2.3-18.5.0+dfsg+~cs3.2.0-18.5.0+dfsg+~cs3.2.0-28.5.0+dfsg+~cs3.2.0-38.9.0+dfsg+~cs3.2.0-1 |
8.12.2+dfsg+~cs3.2.3-1 |
grafana12.4Red Hat:hummingbird:1 From an advisory covering 12 CVEs |
before 0:12.4.12-0.4.hum1 | 0:12.4.12-0.4.hum1 |
nodejs26Red Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-binRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-develRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-docsRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-full-i18nRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-libsRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
nodejs26-npmRed Hat:hummingbird:1 |
before 0:11.20.0-1.26.11.1.0.3.hum1 | 0:11.20.0-1.26.11.1.0.3.hum1 |
Show 6 moreShow less
| Package | Affected | Fixed |
|---|---|---|
nodejs26-npm-binRed Hat:hummingbird:1 |
before 0:26.11.1-0.3.hum1 | 0:26.11.1-0.3.hum1 |
undiciRoot:npm |
before 8.11.2-aikido.1 | 8.11.2-aikido.1 |
@rootio/undiciRoot:npm |
before 8.11.2-root.io.1 | 8.11.2-root.io.1 |
node-undiciUbuntu:24.04:LTS |
All versions, plus listed versions 5.22.1+dfsg1+~cs20.10.10.2-1ubuntu15.26.3+dfsg1+~cs23.10.12-2 |
None known |
node-undiciUbuntu:26.10 |
All versions, plus listed versions 7.18.2+dfsg+~cs3.2.0-1build17.24.6+dfsg+~cs3.2.0-38.5.0+dfsg+~cs3.2.0-28.5.0+dfsg+~cs3.2.0-38.9.0+dfsg+~cs3.2.0-1 |
None known |
node-undiciUbuntu:26.04:LTS |
All versions, plus listed versions 7.3.0+dfsg1+~cs24.12.11-27.16.0+dfsg+~cs3.2.0-27.18.2+dfsg+~cs3.2.0-17.18.2+dfsg+~cs3.2.0-1build1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| 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-109855 is a high vulnerability (CVSS 7.5) in Nodejs Undici, published October 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.28%, the 20th percentile. Fixed in undici 8.11.2.
References
github.com/nodejs/undici/security/advisories/GHSA-qq8j-7v2v-3rwp
cna.openjsf.org/security-advisories.html
nvd.nist.gov/vuln/detail/CVE-2026-109855
github.com/nodejs/undici/pull/5873
github.com/nodejs/undici/commit/dd28c5c55f4a25f7c441fd4365b1191f96c3b8bf
github.com/nodejs/undici/releases/tag/v8.11.2
Show 88 moreShow less
github.com/advisories/GHSA-qq8j-7v2v-3rwp
github.com/CVEProject/cvelistV5/tree/main/cves/2026/109xxx/CVE-2026-109855.json
security-tracker.debian.org/tracker/CVE-2026-109855
github.com/nodejs/undici
access.redhat.com/errata/RHSA-2026:76677
images.redhat.com
access.redhat.com/security/cve/CVE-2026-56851
access.redhat.com/security/updates/classification
access.redhat.com/security/cve/CVE-2026-61801
access.redhat.com/security/cve/CVE-2024-24786
access.redhat.com/security/cve/CVE-2026-95502
access.redhat.com/security/cve/CVE-2026-101899
access.redhat.com/security/cve/CVE-2026-109855
access.redhat.com/security/cve/CVE-2026-100347
access.redhat.com/security/cve/CVE-2026-100348
access.redhat.com/security/cve/CVE-2026-100349
access.redhat.com/security/cve/CVE-2026-100350
access.redhat.com/security/cve/CVE-2026-100351
access.redhat.com/security/cve/CVE-2026-97394
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_76677.json
bugzilla.redhat.com/show_bug.cgi?id=2268046
cve.org/CVERecord?id=CVE-2024-24786
nvd.nist.gov/vuln/detail/CVE-2024-24786
go.dev/cl/569356
groups.google.com/g/golang-announce/c/ArQ6CDgtEjY
pkg.go.dev/vuln/GO-2024-2611
bugzilla.redhat.com/show_bug.cgi?id=2547607
cve.org/CVERecord?id=CVE-2026-56851
nvd.nist.gov/vuln/detail/CVE-2026-56851
go.dev/cl/793360
go.dev/issue/80112
pkg.go.dev/vuln/GO-2026-6629
bugzilla.redhat.com/show_bug.cgi?id=2548048
cve.org/CVERecord?id=CVE-2026-61801
nvd.nist.gov/vuln/detail/CVE-2026-61801
github.com/moby/sys/commit/85a71bbe1faa36c552a960e6a5f3d0cfb632fbbe
github.com/moby/sys/pull/221
github.com/moby/sys/security/advisories/GHSA-mjcv-p78q-w5fw
bugzilla.redhat.com/show_bug.cgi?id=2550709
cve.org/CVERecord?id=CVE-2026-95502
nvd.nist.gov/vuln/detail/CVE-2026-95502
grafana.com/security/security-advisories/cve-2026-95502
bugzilla.redhat.com/show_bug.cgi?id=2553575
cve.org/CVERecord?id=CVE-2026-97394
nvd.nist.gov/vuln/detail/CVE-2026-97394
github.com/getkin/kin-openapi/commit/30e292371a89ca6d1f91a9553e0aa518b49f838d
github.com/getkin/kin-openapi/releases/tag/v0.143.0
github.com/getkin/kin-openapi/security/advisories/GHSA-p6wj-qrr4-pgh5
bugzilla.redhat.com/show_bug.cgi?id=2553580
cve.org/CVERecord?id=CVE-2026-100347
nvd.nist.gov/vuln/detail/CVE-2026-100347
github.com/getkin/kin-openapi/commit/f1a5b523b82868d2d9be2e116b4e942892be72c3
github.com/getkin/kin-openapi/releases/tag/v0.145.0
github.com/getkin/kin-openapi/security/advisories/GHSA-fh4f-47mf-f2gj
bugzilla.redhat.com/show_bug.cgi?id=2553571
cve.org/CVERecord?id=CVE-2026-100348
nvd.nist.gov/vuln/detail/CVE-2026-100348
github.com/getkin/kin-openapi/commit/88aa64c7cbd03ecadbb419c473bdcaa8b0124c6b
github.com/getkin/kin-openapi/security/advisories/GHSA-mh7x-f8wq-4jhx
bugzilla.redhat.com/show_bug.cgi?id=2553589
cve.org/CVERecord?id=CVE-2026-100349
nvd.nist.gov/vuln/detail/CVE-2026-100349
github.com/getkin/kin-openapi/commit/f5441d67f855ed34d975b3b85665764644ab1459
github.com/getkin/kin-openapi/releases/tag/v0.146.0
github.com/getkin/kin-openapi/security/advisories/GHSA-74vm-87hj-r66f
bugzilla.redhat.com/show_bug.cgi?id=2553584
cve.org/CVERecord?id=CVE-2026-100350
nvd.nist.gov/vuln/detail/CVE-2026-100350
github.com/getkin/kin-openapi/commit/d090e36b2f1c42c898ba2a687a8f6e25f5ca727f
github.com/getkin/kin-openapi/security/advisories/GHSA-h4r5-mxv5-8mjc
bugzilla.redhat.com/show_bug.cgi?id=2553587
cve.org/CVERecord?id=CVE-2026-100351
nvd.nist.gov/vuln/detail/CVE-2026-100351
github.com/getkin/kin-openapi/commit/eda80e2676e9f577ceed2dd80e64f16083edb041
github.com/getkin/kin-openapi/releases/tag/v0.147.0
github.com/getkin/kin-openapi/security/advisories/GHSA-23vg-4cjm-66q5
bugzilla.redhat.com/show_bug.cgi?id=2550659
cve.org/CVERecord?id=CVE-2026-101899
nvd.nist.gov/vuln/detail/CVE-2026-101899
github.com/axios/axios/commit/d19040bda7a8be2f82c3c6e1a5bc03917daee39a
github.com/axios/axios/pull/11141
github.com/axios/axios/releases/tag/v1.20.0
github.com/axios/axios/security/advisories/GHSA-44g4-m2mj-wpvx
bugzilla.redhat.com/show_bug.cgi?id=2553103
cve.org/CVERecord?id=CVE-2026-109855
access.redhat.com/errata/RHSA-2026:83198
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_83198.json
ubuntu.com/security/CVE-2026-109855