CVE-2026-115927: Tornado: Event loop blocking and excess memory use from chunked bodies with many small chunks
When Tornado reads an HTTP/1.1 body that uses chunked transfer encoding, it processes all chunks that have already arrived without yielding to the event loop. A client can send a body made of millions of 1-byte chunks, which blocks the event loop (and therefore every other connection served by that process) for the entire time it takes to parse the body. A body near the default max_body_size of 100 MB can block the process for close to a minute, and the attacker can repeat or parallelize these requests.
Bodies made of tiny chunks also consumed far more memory than their size: a handler that does not use @stream_request_body stored each chunk as a separate object, using roughly 20 times as much memory as the bytes received.
References
- github.com/advisories/GHSA-r4j5-9xpp-3985
- github.com/tornadoweb/tornado/commit/ceab33581489751a66fba8566ad6d5960d4b01c8
- github.com/tornadoweb/tornado/pull/3773
- github.com/tornadoweb/tornado/releases/tag/v6.6.0
- github.com/tornadoweb/tornado/security/advisories/GHSA-r4j5-9xpp-3985
- nvd.nist.gov/vuln/detail/CVE-2026-115927
Code Behaviors & Features
Detect and mitigate CVE-2026-115927 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →