Description
nghttp2's nghttpx proxy through 1.69.0 forwards an HTTP/1.1 Upgrade request that also carries a Content-Length header and body onto reusable keep-alive backend connections, re-adding the Upgrade and Connection headers while passing Content-Length verbatim. A backend that resolves the resulting ambiguous message in the attacker's favor enables HTTP request/response smuggling and cross-client response-queue poisoning.
Problem types
Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')
Product status
Any version
Credits
ashdfrkl
References
github.com/.../main/nghttp2-nghttpx-upgrade-queue-poison-poc (Proof of Concept)
github.com/...ommit/ab28105c4a0197da24f8bfc414bc116055249e1e (Fix commit (master))
www.vulncheck.com/...via-upgrade-request-with-content-length (VulnCheck Advisory: nghttp2 nghttpx - HTTP Request/Response Smuggling via Upgrade Request with Content-Length)