CVE-2026-18149
Received Received - Intake

Memory Leak in Undici Retry Handler

Vulnerability report for CVE-2026-18149, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-04

Last updated on: 2026-09-04

Assigner: openjs

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-04
Last Modified
2026-09-04
Generated
2026-09-05
AI Q&A
2026-09-04
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
undici undici From 7.11.0 (inc) to 7.29.1 (inc)
undici undici From 8.0.0 (inc) to 8.10.2 (inc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-772 The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

The vulnerability in undici's retry handler allows an attacker to leave a response body exposed indefinitely. When a server sends a partial response with a Content-Length header and closes the connection, the retry handler retries the request. If the retry returns a non-retryable status like 400, the handler forwards the new response but fails to properly end the original response body. This leaves the application holding an unresolved body stream, causing pending operations that never complete and can exhaust system resources.

Detection Guidance

This vulnerability is specific to undici library versions 7.11.0 to 7.29.1 and 8.0.0 to 8.10.2. Check your application's dependencies for undici versions within this range using commands like 'npm list undici' or 'yarn list undici'.

Impact Analysis

This vulnerability can lead to resource exhaustion in your application. Attackers can trigger it with minimal effort, causing pending promises and streams to accumulate. This may result in degraded performance, crashes, or denial of service due to high memory or concurrency usage. Systems relying on undici versions between 7.11.0-7.29.0 or 8.0.0-8.10.1 are particularly vulnerable.

Mitigation Strategies

Upgrade undici to version 7.29.1 or 8.10.2 or later. If using npm, run 'npm update undici'. If using yarn, run 'yarn upgrade undici'. Verify the update with 'npm list undici' or 'yarn list undici'.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-18149. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart