Node.js: HTTP Request Splitting protection only works halfway

Research by Martino Spagnuolo shows a limitation in the fix for CVE-2018-12116 (HTTP Request Splitting). Node.js validates the HTTP request path for CRLF characters only once — when the request object is created. However, some libraries allow the request path to be modified later through library hooks or middleware, and this change is not revalidated.
As a result, an attacker may introduce CRLF sequences after the initial check, potentially leading to HTTP request splitting. Node.js maintainers do not classify this behavior as a vulnerability, but the article provides a detailed analysis and proof-of-concept exploitation.
Vulnerable libraries: node-http-proxy, http-proxy-middleware, http-proxy-3 (Vite), httpxy (Nitro/Nuxt), superagent, request, @hapi/wreck
💬 Discuss
Vulnerabilities
7.8
CVE-2018-12116
Researchers
Arkadiy Tetelman
Vendors
Node.Js
Vite
Nitro
Nuxt
Hapi
Products
@Hapi/Wreck
Http-Proxy-3
Http-Proxy-Middleware
Httpxy
Node-Http-Proxy
Node.Js
More
Published
2026-03-04, 08:40