Read the docs

Tornado event loop blocking from chunked bodies with many small chunks

Priority LOW 30CWE-400Published · Updated

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

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00384 32nd percentileScored 2026-11-07
Fix Partial tornado (tornadoweb): 6.6.0tornado (PyPI): 6.6Red Hat: 11 without a fix

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

VendorProductAffected versionsFixed inStatusSource
tornadowebtornadobefore 6.6.06.6.0Patch availableCNA
—tornado (PyPI)before 6.66.6Patch availableGHSA-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.

CPEVersionsRoleVendor
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 →

ProductStatusPlan or fix
Lightspeed CoreAffectedNo fix yet: Fix deferred
OpenShift LightspeedAffectedNo fix yet: Fix deferred
Red Hat Ansible Automation Platform 2AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 10AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 8AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 9AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux AI (RHEL AI) 3AffectedNo fix yet: Fix deferred
Red Hat OpenShift AI (RHOAI)AffectedNo fix yet: Fix deferred
Red Hat OpenShift Container Platform 4AffectedNo fix yet: Fix deferred
Red Hat OpenShift Container Platform 5AffectedNo fix yet: Fix deferred
Red Hat OpenStack Platform 16.2AffectedNo fix planned: Out of support scope

Timeline

  1. 2026-10-26 Threatist record created from CVE-2026-115927
  2. 2026-10-27 Affected versions changed · Red Hat
  3. 2026-10-27 CVSS score added · Red Hat
  4. 2026-10-27 CISA SSVC decision points changed
  5. 2026-10-28 Alias added: GHSA-r4j5-9xpp-3985
  6. 2026-10-28 Fix available: PyPI/[email protected] · GHSA-r4j5-9xpp-3985
  7. 2026-10-28 CVSS score added · GHSA-r4j5-9xpp-3985
  8. 2026-10-28 Weakness changed · GHSA-r4j5-9xpp-3985
  9. 2026-10-28 6 new references · GHSA-r4j5-9xpp-3985
  10. 2026-10-30 Affected versions changed · Red Hat

References

  • 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
See all 27 →

Sources