CVE-2026-49855
High · 7.5CVSS
7.5
EPSS
0.6%
Published
Jul 14, 2026
CISA due date
—
Cloudanix analysis
A web library used by many Python applications could be tricked into using up all available memory, causing the program to crash or become unavailable.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Tornado's gzip decompression in SimpleAsyncHTTPClient and HTTPServer (with decompress_request=True) processes small chunks without enforcing a cumulative limit on decompressed output, enabling unbounded memory allocation.
Why it matters to the business
Applications can be forced into denial-of-service through memory exhaustion, causing outages or degraded service for users and backend systems.
How an attack unfolds
An attacker controls or compromises a server that responds to requests from a vulnerable Tornado client or server. The server sends gzip-encoded responses split into many small chunks whose decompressed total exceeds available memory, triggering repeated allocation until the process is killed or becomes unresponsive.
How to fix it
Upgrade Tornado to version 6.5.6 or later. If immediate upgrade is not possible, disable decompress_request on HTTPServer and avoid using SimpleAsyncHTTPClient against untrusted origins.
How to confirm the fix worked
Confirm the installed Tornado version is 6.5.6 or newer. Test decompression behavior with a server that emits many small gzip chunks whose total uncompressed size exceeds a few hundred megabytes and verify memory usage remains bounded.
Typical attack path
- Identify a target using Tornado's SimpleAsyncHTTPClient or an HTTPServer with decompress_request enabled.
- Serve a malicious gzip response whose decompressed size is crafted to grow without bound across multiple chunks.
- Trigger repeated requests or a single long-lived connection that forces the client/server to fully decompress the payload.
- Observe memory growth leading to OOM kill or severe performance degradation.
How to detect it
Monitor Python process memory usage for sudden unbounded growth correlated with incoming or outgoing HTTP traffic; review logs for repeated gzip decompression on connections from a single origin.
What your security team should do
- Upgrade all Tornado installations to 6.5.6 immediately.
- Audit code for any use of decompress_request=True and remove or guard it.
- Implement resource limits and monitoring for Python processes to detect abnormal memory growth.
- Review outbound HTTP clients that may contact untrusted servers and add allow-listing where feasible.
The record
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.6, Tornado gzip decompression routines processed limited-size chunks but did not enforce an overall limit on accumulated decompressed chunks, allowing a malicious server accessed by SimpleAsyncHTTPClient or an HTTPServer configured with decompress_request=True to consume effectively unlimited memory. This issue is fixed in version 6.5.6.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Leap 16.0 | python-tornado6 | 0 | 6.5-160000.5.1 |
| openSUSE:Tumbleweed | python-tornado6 | 0 | 6.5.7-1.1 |
Related vulnerabilities
- CVE-2026-49853 Tornado is a Python web framework and asynchronous networking library. Also affects python-tornado6
- CVE-2026-49854 Tornado is a Python web framework and asynchronous networking library. Also affects python-tornado6
- CVE-2026-31958 Tornado is a Python web framework and asynchronous networking library. Also affects python-tornado6
- CVE-2025-67726 Tornado is Vulnerable to Quadratic DoS via Crafted Multipart Parameters Also affects python-tornado6
- CVE-2025-67725 Tornado is Vulnerable to Quadratic DoS via Repeated Header Coalescing Also affects python-tornado6
- CVE-2025-67724 Tornado vulnerable to Header Injection and XSS via reason argument Also affects python-tornado6
- CVE-2025-47287 Tornado vulnerable to excessive logging caused by malformed multipart form data Also affects python-tornado6
- CVE-2024-52804 Tornado has an HTTP cookie parsing DoS vulnerability Also affects python-tornado6