CVE-2026-16728
Description
undici's retry interceptor can deliver a response whose body length does not match the Content-Length header exposed to the application after a retry or resume of a partial response. In undici before 6.28.0, from 7.0.0 up to before 7.29.0, and from 8.0.0 up to before 8.9.0, a malicious or faulty upstream can return a partial response with a mismatched framing header, close the socket early, and have the retry interceptor assemble a body of a different length while the original Content-Length stays attached. Applications that use the retry interceptor and forward upstream headers and bodies downstream, such as proxies or gateways, may then emit an invalid HTTP response with a stale Content-Length, leading to downstream response desynchronization, connection hangs, or response corruption. Exploitation requires the retry interceptor enabled, an upstream returning a mismatched partial response, and a downstream forwarder that does not remove or recalculate Content-Length. The issue is fixed in undici 6.28.0, 7.29.0, and 8.9.0.
How to fix
- nodejs undici6.28.0, 7.29.0, 8.9.0 or later
- undici6.28.0, 7.29.0, 8.9.0 or later
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| nodejs undici | v < 6.28.0, 7.0.0 ≤ v < 7.29.0, 8.0.0 ≤ v < 8.9.0 | 6.28.0, 7.29.0, 8.9.0 |
| undicinpm | v < 6.28.0, 7.0.0 ≤ v < 7.29.0, 8.0.0 ≤ v < 8.9.0 | 6.28.0, 7.29.0, 8.9.0 |
Check your version
Choose the product and enter the version you run to see whether it falls in the affected range.
Attack Surface Management
See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.