CVE-2025-67726: Tornado is Vulnerable to Quadratic DoS via Crafted Multipart Parameters
Tornado is a Python web framework and asynchronous networking library. Versions 6.5.2 and below use an inefficient algorithm when parsing parameters for HTTP header values, potentially causing a DoS. The parseparam function in httputil.py is used to parse specific HTTP header values, such as those in multipart/form-data and repeatedly calls string.count() within a nested loop while processing quoted semicolons. If an attacker sends a request with a large number of maliciously crafted parameters in a Content-Disposition header, the server's CPU usage increases quadratically (O(n²)) during parsing. Due to Tornado's single event loop architecture, a single malicious request can cause the entire server to become unresponsive for an extended period. This issue is fixed in version 6.5.3.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2025-67726?
CVE-2025-67726 is classified as a critical vulnerability due to its potential to cause a denial-of-service (DoS) condition.
How do I fix CVE-2025-67726?
To fix CVE-2025-67726, upgrade to Tornado version 6.5.3 or later.
What versions are affected by CVE-2025-67726?
CVE-2025-67726 affects Tornado versions 6.5.2 and below.
What type of vulnerability is CVE-2025-67726?
CVE-2025-67726 is a denial-of-service (DoS) vulnerability stemming from an inefficient HTTP header parsing algorithm.
What component of Tornado is impacted by CVE-2025-67726?
The _parseparam function in httputil.py is the component impacted by CVE-2025-67726.