CVE-2026-15157: undici vulnerable to CRLF Injection via blob-like body 'type' property
When an application passes a duck-typed blob-like body to undici’s HTTP/1.1 dispatcher (via request(), stream(), pipeline(), or dispatch()) with a .type derived from untrusted input, an attacker can inject CRLF sequences (\r\n) to append arbitrary HTTP headers and potentially smuggle a second request past the upstream.
The vulnerable branch in lib/dispatcher/client-h1.js pushes body.type directly into the outgoing headers with no validation, while every other header path in undici goes through isValidHeaderValue():
} else if (util.isBlobLike(body) && request.contentType == null && body.type) {
headers.push('content-type', body.type) // bypasses isValidHeaderValue()
}
The bug requires a hand-rolled duck-typed blob object or a Blob subclass with a controlled .type. Native Blob is safe because its constructor strips CRLF from .type. fetch() is unaffected because it validates via the Headers class. Ecosystem consumers that build duck-typed blob shapes from user input include form-data-encoder, formdata-polyfill, and formdata-node.
Same defect class as CVE-2022-35948 (explicit content-type sink, fixed in undici 5.8.2) and CVE-2026-1527 (upgrade option sink, fixed in 6.24.0 / 7.24.0), both closed by adding isValidHeaderValue() on their respective sinks. This branch was missed.
References
- cna.openjsf.org/security-advisories.html
- github.com/advisories/GHSA-m8rv-5g2x-5cg5
- github.com/nodejs/undici/commit/33928bc24f742ea8422ed90d17f2e0cc83e4d09d
- github.com/nodejs/undici/commit/740a0b7c173cb4a83a5b693e96e8f3a116cfc400
- github.com/nodejs/undici/commit/7d3cf924c262c486bc77f951348f4e5c847b7b42
- github.com/nodejs/undici/releases/tag/v6.28.0
- github.com/nodejs/undici/releases/tag/v7.29.0
- github.com/nodejs/undici/releases/tag/v8.9.0
- github.com/nodejs/undici/security/advisories/GHSA-m8rv-5g2x-5cg5
- nvd.nist.gov/vuln/detail/CVE-2026-15157
Code Behaviors & Features
Detect and mitigate CVE-2026-15157 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →