CVE-2026-18540
Fixed in a distro release EPSS <1%CVSS 3.7
undici's retry interceptor can append the body of a ranged retry response to bytes already delivered from an earlier partial response while still presenting the original response's status and headers. This happens when an upstream server delivers part of a body without a trustworthy resume checkpoint, for example a non-success response whose headers were already sent or a partial-content response with an unusable content range, then closes the connection and answers the resumed range request with more bytes. As a result the response body can be longer than the Content-Length that the application observes. An application that relays such a response to a downstream HTTP/1.1 peer without normalizing the framing can emit a body that exceeds the forwarded Content-Length, and the excess bytes can be interpreted as the start of a following response, which enables downstream response splitting or desynchronization. Exploitation requires an attacker-controlled upstream server and an application that forwards the response through a framing-sensitive path. This affects undici versions before 6.28.1, from 7.0.0 up to 7.29.1, and from 8.0.0 up to 8.10.2. Users should upgrade to undici 6.28.1, 7.29.1, or 8.10.2.
Products: undici
Fixed upstream
| Ecosystem | Package | Fixed in |
|---|---|---|
| npm | undici | 6.28.1 |
| npm | undici | 7.29.1 |
| npm | undici | 8.10.2 |
Distro releases
| Release | Package | Fixed in |
|---|---|---|
| Chainguard | actions-runner | 2.337.0-r2 |
| Chainguard | code-server | 4.139.1-r2 |
| Chainguard | commercial-gitlab-rails-ee-19.1 | 19.1.7-r3 |
| Chainguard | commercial-gitlab-rails-ee-19.2 | 19.2.7-r1 |
| Chainguard | commercial-gitlab-rails-ee-19.3 | 19.3.3-r1 |
| Chainguard | commercial-gitlab-rails-ee-19.4 | 19.4.1-r1 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.1 | 19.1.9-r0 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.2 | 19.2.7-r1 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.3 | 19.3.3-r1 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.4 | 19.4.1-r1 |
| Chainguard | homepage | 2.4.0-r1 |
| Chainguard | kibana-8.19 | 8.19.23-r2 |
| Chainguard | kibana-8.19-bitnami | 8.19.23-r2 |
| Chainguard | kibana-9.2 | 9.2.8-r23 |
| Chainguard | lerna | 10.0.1-r11 |
| Chainguard | npm-11 | 11.20.0-r3 |
| Chainguard | prism | 5.16.0-r14 |
| Chainguard | renovate | 44.131.0-r1 |
| Chainguard | renovate | 44.133.0-r0 |
| Debian 12 | node-undici | no fix |
| Debian 13 | node-undici | no fix |
| Debian 14 | node-undici | 8.10.2+dfsg+~cs3.2.2-1 |
| Red Hat hummingbird 1 | grafana12.4 | 0:12.4.10-0.2.hum1 |
| Red Hat hummingbird 1 | nodejs24 | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-bin | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-devel | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-docs | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-full-i18n | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-libs | 0:24.21.0-1.hum1 |
| Red Hat hummingbird 1 | nodejs24-npm | 0:11.19.0-1.24.21.0.1.hum1 |
| Red Hat hummingbird 1 | nodejs24-npm-bin | 0:11.19.0-1.24.21.0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26 | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-bin | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-devel | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-docs | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-full-i18n | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-libs | 0:26.8.2-0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-npm | 0:11.19.1-1.26.8.2.0.1.hum1 |
| Red Hat hummingbird 1 | nodejs26-npm-bin | 0:26.8.2-0.1.hum1 |
| Ubuntu 24.04 LTS | node-undici | no fix |
| Ubuntu 26.04 LTS | node-undici | no fix |
| Ubuntu 26.10 | node-undici | no fix |
| Wolfi | code-server | 4.139.1-r2 |
| Wolfi | lerna | 10.0.1-r11 |
| Wolfi | prism | 5.16.0-r14 |
| Wolfi | renovate | 44.133.0-r0 |
| Wolfi | renovate | 44.131.0-r1 |