tornado: multipart split() creates huge temp list before max_parts check -> memory amplification DoS (httputil.py:34) — GHSA-8423-8FGW-73VQ
GitHub · GitHub · GHSA-8423-8FGW-73VQ
ID
GHSA-8423-8FGW-73VQ
GHSA-8423-8FGW-73VQ
Date
Source
GitHub
GitHub
Vendor
GitHub
GitHub
Threat
medium
medium
CVSS
6.9
6.9
Summary
## Description ### Summary `parse_multipart_form_data` (httputil.py:34) calls `data.split(b"--"+boundary+b"\r\n")` **before** the `max_parts` check (:35). A 600KB body with 100k parts creates a 100k-element transient list first, then rejects transient memory amplification (each split element is a copy). Pre-auth HTTP DoS. ### Root cause ```python parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n")…
Timeline
- Published by source
- 2026-09-01
Risk context
- Reported severity or threat level: medium.
- Reported CVSS score: 6.9 out of 10.
- Review exposure for the affected product or family: pip: tornado.
Product
pip: tornado
What to do
General, cautious steps (verify details in the official source):
- Review exposure and plan remediation based on risk and environment.
- Identify affected product versions in your inventory and verify whether you are impacted.
- Apply vendor patches/updates or recommended mitigations as soon as available.
- Read the official advisory for exact affected versions and remediation steps.
Official advisory
Evidence and provenance
- Canonical advisory ID
- GHSA-8423-8FGW-73VQ
- Source
- GitHub
- Vendor
- GitHub
- Published by source
- 2026-09-01
- Last source activity
- 2026-09-01
- Curated by
- hlukh.ch
Related advisories and connections
These advisories are connected by shared CVE, product, vendor, source, or time signals.