CVE Vulnerabilities

CVE-2026-18149

Missing Release of Resource after Effective Lifetime

Published: Sep 04, 2026 | Modified: Sep 16, 2026
CVSS 3.x
N/A
Source:
NVD
CVSS 2.x
RedHat/V2
RedHat/V3
5.9 MODERATE
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Ubuntu
MEDIUM
root.io logo minimus.io logo echo.ai logo

undicis 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.

Weakness

The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.

Affected Software

NameVendorStart VersionEnd Version
UndiciNodejs7.11.0 (including)7.29.1 (excluding)
UndiciNodejs8.0.0 (including)8.10.2 (excluding)
Red Hat Hardened ImagesRedHatnodejs26-main-11.19.0-1.26.7.0.1.5.2.hum1*
Red Hat Hardened ImagesRedHatnodejs26-main-26.7.0-1.5.2.hum1*
Red Hat Hardened ImagesRedHatnodejs24-main-11.16.0-1.24.18.1.0.2.2.hum1*
Red Hat Hardened ImagesRedHatnodejs24-main-24.18.1-0.2.2.hum1*
Red Hat Hardened ImagesRedHatgrafana12-4-main-12.4.10-0.2.hum1*
Node-undiciUbuntuupstream*

Potential Mitigations

  • Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • For example, languages such as Java, Ruby, and Lisp perform automatic garbage collection that releases memory for objects that have been deallocated.
  • Use resource-limiting settings provided by the operating system or environment. For example, when managing system resources in POSIX, setrlimit() can be used to set limits for certain types of resources, and getrlimit() can determine how many resources are available. However, these functions are not available on all operating systems.
  • When the current levels get close to the maximum that is defined for the application (see CWE-770), then limit the allocation of further resources to privileged users; alternately, begin releasing resources for less-privileged users. While this mitigation may protect the system from attack, it will not necessarily stop attackers from adversely impacting other users.
  • Ensure that the application performs the appropriate error checks and error handling in case resources become unavailable (CWE-703).

References