5.3
CVSS V3
Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') in tornado
When Tornado receives a request with two Transfer-Encoding: chunked
headers, it ignores them both. This enables request smuggling when Tornado is deployed behind a proxy server that emits such requests. Pound does this.
Transfer-Encoding: chunked
headers:This is because Tornado believes that the request has no message body, so it tries to interpret 1\r\nZ\r\n0\r\n\r\n
as its own request, which causes a 400 response. With a little cleverness involving chunk-ext
s, you can get Tornado to instead respond 405, which has the potential to desynchronize the connection, as opposed to 400 which should always result in a connection closure.
Anyone using Tornado behind a proxy that forwards requests containing multiple Transfer-Encoding: chunked
headers is vulnerable to request smuggling, which may entail ACL bypass, cache poisoning, or connection desynchronization.