CVE-2026-116577
Medium · 5.3CVSS
5.3
EPSS
0.4%
Published
Oct 26, 2026
CISA due date
—
Cloudanix analysis
A flaw in a popular Python web server lets anyone send specially crafted web requests that can slow the server to a crawl and stop it from handling normal traffic.
- 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
The HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, resulting in quadratic CPU consumption on the IOLoop thread before any application code executes.
Why it matters to the business
An unauthenticated remote attacker can exhaust CPU resources on the server process, blocking legitimate connections and causing denial of service with no data compromise or code execution.
How an attack unfolds
An unauthenticated client crafts an HTTP request containing a large number of obsolete line-folding header continuations sized to approach max_header_size; the server parses the headers on the IOLoop thread, triggering repeated string concatenations that consume excessive CPU and stall other connections.
How to fix it
Upgrade Tornado to version 6.6 or later; alternatively, place the service behind a reverse proxy that rejects or normalizes folded headers and enforces strict header size limits.
How to confirm the fix worked
Confirm the installed Tornado version is 6.6 or newer; test by sending a folded-header request and verifying that CPU usage remains linear rather than quadratic.
Typical attack path
- Attacker connects to a Tornado-based HTTP server
- Sends a single request whose headers contain many folded continuation lines
- Server parser performs quadratic work before handing control to application handlers
- IOLoop thread becomes CPU-bound, starving other clients
How to detect it
Inspect web server access logs for unusually long or repetitive header blocks; correlate with process CPU spikes on the Tornado IOLoop thread; look for requests that exceed normal header sizes but are accepted.
What your security team should do
- Immediately upgrade all Tornado deployments to 6.6 or newer
- Add WAF or proxy rules to drop or normalize obsolete line-folded headers
- Monitor for sudden CPU spikes on IOLoop threads serving Tornado processes
- Review downstream dependents and schedule upgrades according to ecosystem prevalence
The record
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62160 Daptin is a GraphQL/JSON-API headless CMS. CWE-407
- CVE-2026-87768 DateTime::Lite versions before 0.8.1 for Perl allow CPU exhaustion via a per-day loop… CWE-407
- CVE-2026-119196 pyasn1 is a generic ASN.1 library for Python. CWE-407
- CVE-2026-119194 pyasn1 is a generic ASN.1 library for Python. CWE-407
- CVE-2026-119195 pyasn1 is a generic ASN.1 library for Python. CWE-407
- CVE-2026-119197 pyasn1 is a generic ASN.1 library for Python. CWE-407
- CVE-2019-25781 Python-Markdown 3.0 through 3.11.2 contains an algorithmic complexity vulnerability in… CWE-407
- CVE-2026-118694 python-markdown2 through 2.5.5 contains a denial of service vulnerability that allows… CWE-407