CVE-2023-54397
largeHTTP Request Smuggling via Malformed Content-Length Parsing in Tornado < 6.3.3
Tornado, the open-source Python asynchronous web framework and HTTP server, contains an HTTP request smuggling vulnerability (CWE-444) in all versions before 6.3.3 due to improper parsing of Content-Length headers that accept non-standard characters. An attacker triggers the flaw by sending crafted HTTP requests containing these malformed Content-Length values, which Tornado parses differently than front-end proxies do, allowing the attacker to bypass proxy validation and smuggle a second, hidden request through the proxy to the Tornado backend. Successful exploitation can let an attacker bypass access controls, poison caches, or hijack other users' sessions when Tornado is deployed behind certain proxy configurations; the issue is rated CVSS 4.0 9.0 (critical) but only manifests in specific proxy-fronted deployments. Anyone running Tornado versions prior to 6.3.3 — whether directly as an HTTP server or embedded in Python applications such as web services or Jupyter-based tooling — behind a reverse proxy or load balancer is potentially affected. There is no known public proof-of-concept and no evidence of exploitation in the wild; the flaw is not on the CISA KEV list.
What to do: Upgrade Tornado to version 6.3.3 or later, which enforces strict, standards-compliant Content-Length header parsing; if you cannot upgrade, verify and pin your deployment's dependencies since Tornado is often pulled in transitively. If upgrading is delayed, configure the front-end proxy or load balancer to reject or normalize requests with malformed Content-Length headers (values containing non-standard characters) so both layers interpret requests identically. Audit proxy-to-Tornado deployments for signs of desync such as unexpected 4xx responses, cache misbehavior, or requests attributed to the wrong client.
| Tornado Project (tornadoweb.org) Tornado (Python web framework / HTTP server, PyPI package 'tornado') | before 6.3.3 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Tornado before 6.3.3 contains an HTTP request smuggling vulnerability due to improper parsing of Content-Length headers accepting non-standard characters. Attackers can send crafted HTTP requests with these characters to bypass proxy validation and smuggle requests when deployed behind certain proxies.
- Weakness
- CWE-444
- Vector
- CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.