CVE-2026-31958 Tornado has a DoS due to too many multipart parts
Attackers can cause denial of service in Tornado web framework by sending multipart requests with excessive parts, blocking the main thread.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-31958?
CVE-2026-31958 is a high-severity denial of service vulnerability in tornadoweb tornado, published on 11 Mar 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
Tornado is a Python web framework and asynchronous networking library. In versions of Tornado prior to 6.5.5, the only limit on the number of parts in multipart/form-data is the max_body_size setting (default 100MB). Since parsing occurs synchronously on the main thread, this creates the possibility of denial-of-service due to the cost of parsing very large multipart bodies with many parts. This vulnerability is fixed in 6.5.5.
Weakness: CWE-400
Which versions are affected by CVE-2026-31958?
3 open source packages ship an affected version, including tornado. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
tornado PyPI | All versions | 6.5.5 |
tornado PyPI | All versions | 6.5.5 |
tornado PyPI | All versions | 6.5.5 |
Linux distribution packages (37)
pcs AlmaLinux:8 | All versions | 0.10.18-2.el8_10.9.alma.1 |
pcs-snmp AlmaLinux:8 | All versions | 0.10.18-2.el8_10.9.alma.1 |
pcs Red Hat:enterprise_linux:8::highavailability | All versions | 0:0.10.18-2.el8_10.9 |
pcs-snmp Red Hat:enterprise_linux:8::highavailability | All versions | 0:0.10.18-2.el8_10.9 |
pcs Red Hat:enterprise_linux:8::resilientstorage | All versions | 0:0.10.18-2.el8_10.9 |
pcs-snmp Red Hat:enterprise_linux:8::resilientstorage | All versions | 0:0.10.18-2.el8_10.9 |
pcs Rocky Linux:8 | All versions | 0:0.10.18-2.el8_10.9 |
golang-github-lusitaniae-apache_exporter SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 1.0.10-90002.3.6.1 |
saltbundlepy SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 3.11.13-90002.4.9.1 |
saltbundlepy-core SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 3.11.13-90002.4.9.1 |
saltbundlepy-m2crypto SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 0.45.1-90002.3.9.2 |
saltbundlepy-pyzmq SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 25.1.2-90002.3.9.1 |
saltbundlepy-simplejson SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 3.19.1-90002.3.6.1 |
saltbundlepy-tornado SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 6.3.2-90002.4.6.2 |
spacecmd SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 5.1.13-90002.3.9.1 |
uyuni-tools SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 5.1.26-90002.3.9.1 |
venv-salt-minion SUSE:EL-9:Update:Products:MultiLinuxManagerTools:Update | All versions | 3006.0-90002.5.12.2 |
python-tornado SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise Micro 5.2 | All versions | 4.5.3-150000.3.19.1 |
python-tornado SUSE:Linux Enterprise Micro 5.3 | All versions | 4.5.3-150000.3.19.1 |
python-tornado SUSE:Linux Enterprise Micro 5.4 | All versions | 4.5.3-150000.3.19.1 |
python-tornado SUSE:Linux Enterprise Micro 5.5 | All versions | 4.5.3-150000.3.19.1 |
python-tornado SUSE:Linux Enterprise Module for Basesystem 15 SP7 | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise Module for Python 3 15 SP7 | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise Server 15 SP4-LTSS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise Server 15 SP4-LTSS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise Server 15 SP5-LTSS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise Server 15 SP5-LTSS | All versions | 6.3.2-150400.9.15.1 |
python-tornado SUSE:Linux Enterprise Server 15 SP6-LTSS | All versions | 4.5.3-150000.3.19.1 |
python-tornado6 SUSE:Linux Enterprise Server 15 SP6-LTSS | All versions | 6.3.2-150400.9.15.1 |
Products include Tornadoweb Tornado.
How do I fix CVE-2026-31958?
Upgrade tornado to 6.5.5 or later.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2026-31958 being exploited?
There is no known exploitation of CVE-2026-31958 in the wild and no public exploit code.
Other vulnerabilities in tornadoweb tornado
- CVE-2025-67725 Tornado is Vulnerable to Quadratic DoS via Repeated Header Coalescing
- CVE-2025-67726 Tornado is Vulnerable to Quadratic DoS via Crafted Multipart Parameters
- CVE-2024-52804 Tornado has HTTP cookie parsing DoS vulnerability
- CVE-2026-35536 Tornado has incomplete validation of cookie attributes
- CVE-2014-9720 Tornado XSRF cookie allows side-channel attack against TLS (BREACH attack)
Sources
Also known as ALSA-2026:8093, BELL-CVE-2026-31958, CLEANSTART-2026-KC70248, CLEANSTART-2026-TN75201, DEBIAN-CVE-2026-31958, ECHO-5939-f806-1836 and 34 more.