CVE-2026-82397
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Impact
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| pip | tornado | <= 6.5.7 | 6.5.8 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://github.com/advisories/GHSA-mpf4-983q-p7j4
- https://github.com/tornadoweb/tornado/security/advisories/GHSA-mpf4-983q-p7j4
- https://nvd.nist.gov/vuln/detail/CVE-2026-82397
- https://github.com/tornadoweb/tornado/pull/3704
- https://github.com/tornadoweb/tornado/commit/8d6363ed7b69d5f0da806efe34d256627a2191de
- https://github.com/tornadoweb/tornado/releases/tag/v6.5.8