Every CVE Search/ Get API key

CVE-2026-18149

undici vulnerable to Denial of Service via orphaned RetryHandler response body

5.9 MediumFix available

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.48%Up 0.2 points since Sep 5, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.9

undici vulnerable to Denial of Service via orphaned RetryHandler response body

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
CVE-2026-18149
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-772
Updated
2026-11-02
EUVDEUVD-2026-71617 5.9

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
EUVD-2026-71617
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-pmjh-fq2x-6v4x 5.9

undici vulnerable to Denial of Service via orphaned RetryHandler response body

Impact

undici's RetryHandler can leave a response body pending indefinitely. When a retried request receives a non-retryable response after a truncated one, the original response.body held by the application is never settled, so reads such as response.body.text() hang and bodyTimeout does not fire. A malicious server can repeat this to accumulate pending promises and streams, leading to denial of service.

Patches

Patched in undici v7.29.1 and v8.10.2.

Workarounds

Impose an independent request deadline and destroy the response body when it expires. bodyTimeout alone does not prevent this.

Record
GHSA-pmjh-fq2x-6v4x
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-772
Updated
2026-11-02
NVD 5.9

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
CVE-2026-18149
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-772
Updated
2026-11-02
OSV 5.9

undici vulnerable to Denial of Service via orphaned RetryHandler response body

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
CVE-2026-18149
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-772
Updated
2026-11-02
OSVDEBIAN-CVE-2026-18149 5.9

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
DEBIAN-CVE-2026-18149
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 11 moreShow less
OSVGHSA-pmjh-fq2x-6v4x 5.9

undici vulnerable to Denial of Service via orphaned RetryHandler response body

Impact

undici's RetryHandler can leave a response body pending indefinitely. When a retried request receives a non-retryable response after a truncated one, the original response.body held by the application is never settled, so reads such as response.body.text() hang and bodyTimeout does not fire. A malicious server can repeat this to accumulate pending promises and streams, leading to denial of service.

Patches

Patched in undici v7.29.1 and v8.10.2.

Workarounds

Impose an independent request deadline and destroy the response body when it expires. bodyTimeout alone does not prevent this.

Record
GHSA-pmjh-fq2x-6v4x
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-772
Updated
2026-11-02
OSVRHSA-2026:54389 7.5

Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update

Record
RHSA-2026:54389
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2026:54438 7.4

Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update

Record
RHSA-2026:54438
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVRHSA-2026:66008 8.8

Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update

Record
RHSA-2026:66008
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-18149 5.9

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
UBUNTU-CVE-2026-18149
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVAZL-99942 No score

CVE-2026-18149 affecting package nodejs for versions less than 24.21.0-1

undici's retry handler can leave an already-exposed response body pending forever. When a server returns a successful response that declares a Content-Length, sends only part of the body, and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status such as 400, the handler forwards that new response downstream and replaces its internal response stream, but the original response body that the application still holds is never ended or destroyed. As a result calls that read that body never settle, and the configured body timeout does not fire because its timer is tied to the connection parser rather than the orphaned body. An attacker-controlled server can trigger this with two short responses without keeping a connection open, and repeated requests accumulate pending promises and streams that can exhaust application concurrency or memory. This affects undici versions from 7.11.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.

Record
AZL-99942
Updated
2026-11-02
OSVCLSA-2026-1790719646 No score

TuxCare security update for undici (7 CVEs)

TuxCare rebuilt undici to address 7 CVEs. Fixed in 7.29.0-tuxcare.2.

Record
CLSA-2026-1790719646
Updated
2026-11-02
OSVCLSA-2026-1790756064 No score

TuxCare security update for undici (6 CVEs)

TuxCare rebuilt undici to address 6 CVEs. Fixed in 7.28.0-tuxcare.3.

Record
CLSA-2026-1790756064
Updated
2026-11-02
OSVCLSA-2026-1792478858 No score

TuxCare security update for undici (15 CVEs)

TuxCare rebuilt undici to address 15 CVEs. Fixed in 7.24.4-tuxcare.2.

Record
CLSA-2026-1792478858
Updated
2026-11-05
OSVCLSA-2026-1792867308 No score

TuxCare security update for undici-types (7 CVEs)

TuxCare rebuilt undici-types to address 7 CVEs. Fixed in 7.29.0-tuxcare.2.

Record
CLSA-2026-1792867308
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2026-18149 No score

CVE-2026-18149 in undici - Patched by Root

Root has patched CVE-2026-18149 in the undici package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-18149
Updated
2026-11-06

Affected products

Affected packages

Affected packages
PackageAffectedFixed
undici
npm
7.11.0 up to 7.29.1
7.29.1
undici
npm
8.0.0 up to 8.10.2
8.10.2
nodejs
Azure Linux:3
before 24.21.0-1
24.21.0-1
undici
TuxCare:npm
From an advisory covering 7 CVEs
7.29.0-tuxcare.0 up to 7.29.0-tuxcare.2, plus listed versions
7.29.07.29.0-tuxcare.1
7.29.0-tuxcare.2
undici
TuxCare:npm
From an advisory covering 6 CVEs
7.28.0-tuxcare.0 up to 7.28.0-tuxcare.3, plus listed versions
7.28.07.28.0-tuxcare.17.28.0-tuxcare.2
7.28.0-tuxcare.3
undici
TuxCare:npm
From an advisory covering 13 CVEs
7.24.4-tuxcare.0 up to 7.24.4-tuxcare.2, plus listed versions
7.24.47.24.4-tuxcare.1
7.24.4-tuxcare.2
undici-types
TuxCare:npm
From an advisory covering 7 CVEs
7.29.0-tuxcare.0 up to 7.29.0-tuxcare.2, plus listed versions
7.29.07.29.0-tuxcare.1
7.29.0-tuxcare.2
node-undici
Debian:12
All versions, plus listed versions
5.15.0+dfsg1+~cs20.10.9.3-15.15.0+dfsg1+~cs20.10.9.3-1+deb12u15.15.0+dfsg1+~cs20.10.9.3-1+deb12u25.15.0+dfsg1+~cs20.10.9.3-1+deb12u35.15.0+dfsg1+~cs20.10.9.3-1+deb12u4
Show 35 moreShow less
5.19.1+dfsg1+~cs20.10.9.5-15.19.1+dfsg1+~cs20.10.9.5-25.22.1+dfsg1+~cs20.10.10.2-15.26.3+dfsg1+~cs23.10.12-15.26.3+dfsg1+~cs23.10.12-25.26.3+dfsg1+~cs23.10.12-35.28.0+dfsg1+~cs23.11.12.3-15.28.0+dfsg1+~cs23.11.12.3-25.28.2+dfsg1+~cs23.11.12.3-15.28.2+dfsg1+~cs23.11.12.3-25.28.2+dfsg1+~cs23.11.12.3-35.28.2+dfsg1+~cs23.11.12.3-45.28.2+dfsg1+~cs23.11.12.3-55.28.2+dfsg1+~cs23.11.12.3-65.28.4+dfsg1+~cs23.12.11-15.28.4+dfsg1+~cs23.12.11-27.1.0+dfsg1+~cs24.12.10-17.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-17.2.3+dfsg1+~cs24.12.11-17.2.3+dfsg1+~cs24.12.11-27.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.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
None known
node-undici
Debian:13
All versions, 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 11 moreShow less
7.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.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
None known
node-undici
Debian:14
before 8.10.2+dfsg+~cs3.2.2-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 10 moreShow less
7.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.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.10.2+dfsg+~cs3.2.2-1
Show 23 moreShow less
Affected packages
PackageAffectedFixed
nodejs26
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-bin
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-devel
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-docs
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-full-i18n
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-libs
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
nodejs26-npm
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:11.19.0-1.26.7.0.1.5.2.hum1
0:11.19.0-1.26.7.0.1.5.2.hum1
nodejs26-npm-bin
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:26.7.0-1.5.2.hum1
0:26.7.0-1.5.2.hum1
v8-14.6-devel
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:14.6.202.34-1.26.7.0.1.5.2.hum1
0:14.6.202.34-1.26.7.0.1.5.2.hum1
nodejs24
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-bin
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-devel
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-docs
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-full-i18n
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-libs
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
nodejs24-npm
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:11.16.0-1.24.18.1.0.2.2.hum1
0:11.16.0-1.24.18.1.0.2.2.hum1
nodejs24-npm-bin
Red Hat:hummingbird:1
From an advisory covering 9 CVEs
before 0:24.18.1-0.2.2.hum1
0:24.18.1-0.2.2.hum1
grafana12.4
Red Hat:hummingbird:1
From an advisory covering 12 CVEs
before 0:12.4.10-0.2.hum1
0:12.4.10-0.2.hum1
undici
Root:npm
before 8.10.2-aikido.1
8.10.2-aikido.18.10.2-aikido.28.10.2-aikido.37.29.1-aikido.17.29.1-aikido.28.10.2-aikido.4
@rootio/undici
Root:npm
before 8.10.2-root.io.1
8.10.2-root.io.18.10.2-root.io.28.10.2-root.io.37.29.1-root.io.17.29.1-root.io.28.10.2-root.io.4
node-undici
Ubuntu: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-undici
Ubuntu: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-undici
Ubuntu: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

History
RecordedChangedSources
affected
affectedOSV
factsOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-18149 is a medium vulnerability (CVSS 5.9) in Nodejs Undici, published August 13, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.48%, the 41st percentile. Fixed in undici 7.29.1.

References

Show 99 moreShow less
MoveEnter Open