Tornado event loop blocking from chunked bodies with many small chunks
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · Low
- Fix status
- Partial Red Hat: 11 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-400.
Summary
Tornado before 6.6.0 decodes chunked transfer encoding without yielding to the event loop. A remote unauthenticated peer can send millions of one-byte chunks to block the event loop and stall all other connections in that process. Handlers without @stream_request_body retain each chunk as a separate object, using roughly twenty times the received body size in memory. SimpleAsyncHTTPClient has the same blocking when reading from a malicious server.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
Description from the CNA
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6.0, Tornado decodes HTTP/1.1 chunked transfer encoding by processing body data that has already arrived without yielding to the event loop. A remote unauthenticated peer can send millions of one-byte chunks to monopolize the process event loop and stall every other connection served by that process, while lowering max_body_size only limits the duration of each request. For handlers that do not use @stream_request_body, retaining each chunk as a separate object can consume roughly twenty times the received body size, and SimpleAsyncHTTPClient has the same event-loop behavior when reading a response from a malicious server. This issue is fixed in version 6.6.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| tornadoweb | tornado | before 6.6.0 | 6.6.0 | Patch available | CNA |
| — | tornado (PyPI) | before 6.6 | 6.6 | Patch available | GHSA-r4j5-9xpp-3985 |
- tornado Vendortornadoweb Affected before 6.6.0 Fixed in 6.6.0 Patch available CNA
- tornado (PyPI) Vendor— Affected before 6.6 Fixed in 6.6 Patch available GHSA-r4j5-9xpp-3985
CPE names Threatist (inferred) · 1
Inferred from how NVD named this product before; not given by a source.
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:tornadoweb:tornado:*:*:*:*:*:*:*:* | — | — | tornadoweb |
- cpe:2.3:a:tornadoweb:tornado:*:*:*:*:*:*:*:* Versions — — ·tornadoweb
Remediation
Upgrade the PyPI package tornado to version 6.6 or later, which contains the fix. Red Hat lists Lightspeed Core, OpenShift Lightspeed, Red Hat Ansible Automation Platform 2, Red Hat Enterprise Linux 10 and Red Hat Enterprise Linux 8 as affected with no fix plan, along with other products.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
- Fix · CNA tornado (tornadoweb) Fixed in 6.6.0
- Fix · GHSA-r4j5-9xpp-3985 tornado (PyPI) Fixed in 6.6 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Lightspeed Core | Affected | No fix yet: Fix deferred |
| OpenShift Lightspeed | Affected | No fix yet: Fix deferred |
| Red Hat Ansible Automation Platform 2 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 10 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 8 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 9 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux AI (RHEL AI) 3 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift AI (RHOAI) | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 4 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 5 | Affected | No fix yet: Fix deferred |
| Red Hat OpenStack Platform 16.2 | Affected | No fix planned: Out of support scope |
Timeline
- 2026-10-26 Threatist record created from CVE-2026-115927
- 2026-10-27 Affected versions changed · Red Hat
- 2026-10-27 CVSS score added · Red Hat
- 2026-10-27 CISA SSVC decision points changed
- 2026-10-28 Alias added: GHSA-r4j5-9xpp-3985
- 2026-10-28 Fix available: PyPI/[email protected] · GHSA-r4j5-9xpp-3985
- 2026-10-28 CVSS score added · GHSA-r4j5-9xpp-3985
- 2026-10-28 Weakness changed · GHSA-r4j5-9xpp-3985
- 2026-10-28 6 new references · GHSA-r4j5-9xpp-3985
- 2026-10-30 Affected versions changed · Red Hat
References
Other 5
- https://github.com/tornadoweb/tornado/security/advisories/GHSA-r4j5-9xpp-3985
- https://github.com/tornadoweb/tornado/pull/3773
- https://github.com/tornadoweb/tornado/commit/ceab33581489751a66fba8566ad6d5960d4b01c8
- https://github.com/tornadoweb/tornado/releases/tag/v6.6.0
- https://github.com/tornadoweb/tornado
More tornadoweb vulnerabilities
- TI-2026-65637 Tornado before 6.5.9 Denial of Service via CurlAsyncHTTPClient CVSS 4.0HIGH 8.7
- TI-2026-62120 Tornado before 6.5.8 Memory Amplification DoS via multipart CVSS 4.0HIGH 8.7
- TI-2024-13023 Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding CVSS 4.0CRITICAL 9.0
- TI-2026-65638 Tornado before 6.5.9 StaticFileHandler Path Traversal via Symlink CVSS 4.0HIGH 8.2
- TI-2026-62122 Tornado before 6.5.7 Credential Leak via Handle Reuse CVSS 4.0HIGH 8.2
- TI-2026-62121 Tornado before 6.5.8 Cookie Attribute Injection via Capitalized kwargs CVSS 4.0MEDIUM 6.3
Sources
- CVE-2026-115927 · CVE Program
- CVE-2026-115927 · NVD
- FIRST EPSS
- GHSA-r4j5-9xpp-3985 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-115927 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences