Back to list

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
Date
Source
GitHub
Vendor
GitHub
Threat
medium
CVSS
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.