ZeroHour

CVE-2026-91990

large

Unauthenticated Memory-Amplification DoS in Tornado Multipart Form Parsing

CVSS 4.0
8.7 high
EPSS
Published
()
Modified
AI analysis

Tornado, a widely used asynchronous Python web framework, contains a memory amplification vulnerability in its parse_multipart_form_data function in all versions before 6.5.8. The flaw occurs because multipart request data is split into parts before the configured max_parts limit is enforced, so an unauthenticated attacker can send a crafted multipart request containing a very large number of parts, causing the server to build large transient lists in memory. Successful exploitation exhausts server memory and produces denial of service, with no impact on confidentiality or integrity (CVSS 4.0: 8.7, driven entirely by availability). Any application built on an affected Tornado release that accepts multipart form data (e.g., file uploads) from untrusted clients is exposed. No public proof of concept exists and the vulnerability is not listed in CISA's KEV, so exploitation in the wild is not currently indicated.

What to do: Upgrade to Tornado 6.5.8 or later, which validates the max_parts limit before splitting multipart data. If immediate patching is not possible, place a reverse proxy or WAF in front to cap request body size and rate-limit multipart requests per client. Audit any Tornado-based endpoints that accept file uploads or multipart form data, since exploitation requires no authentication and leaves few traces beyond memory pressure and OOM crashes.

Affected
Tornado (open-source project) Tornadobefore 6.5.8
Estimated exposure
large≈100,000+ internet-exposed Tornado-backed services, plus a larger unknown population of internal deployments — Tornado is a top-tier Python web framework (also embedded in Jupyter and many API services), and public scan engines such as Shodan/FOFA typically show tens of thousands to low hundreds of thousands of servers advertising Tornado/Jupyter…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Tornado before 6.5.8 contains a memory amplification vulnerability in parse_multipart_form_data that splits multipart data before validating the max_parts limit. Attackers can send crafted multipart requests with many parts to create large transient lists, exhausting server memory and causing denial of service.

Weakness
CWE-770
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/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 news

No ingested article mentions this CVE yet.