CVE-2026-115927: Tornado: Event loop blocking and excess memory use from chunked bodies with many small chunks

Published Oct 26, 2026
·
Updated

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 maxbodysize only limits the duration of each request. For handlers that do not use @streamrequestbody, 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.

Affected Software

1 affected component
pypi/tornado<6.6.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Tornado to a version that resolves this vulnerability.

    Fixed in 6.6.0

Event History

Oct 26, 2026
CVE Published
via MITRE·07:37 PM
Data Sourced
via MITRE·07:37 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which deployments are exposed to remote exploitation?

Any Tornado deployment prior to 6.6.0 that accepts HTTP/1.1 chunked request bodies may be affected by an unauthenticated remote peer. SimpleAsyncHTTPClient is also affected when it reads a response from a malicious server.

2

What does an attacker need to send to trigger the issue?

The attacker can send a chunked HTTP/1.1 body containing millions of very small, such as one-byte, chunks. No authentication or user interaction is required.

3

Does reducing max_body_size mitigate the problem?

No. Lowering max_body_size limits the duration of an individual request, but does not prevent the request from monopolizing the process event loop while already-arrived chunk data is processed.

4

When is memory consumption especially significant?

Handlers that do not use @stream_request_body retain each chunk as a separate object. In that case, memory usage can reach roughly twenty times the received body size.

5

What version resolves the issue?

Upgrade Tornado to version 6.6.0, which fixes the chunk-processing behavior.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203