Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
🐍
🐍 PyPI
Not in CISA KEV
HIGH severity

Tornado: Quadratic DoS via Crafted Multipart ParametersGHSA-jhmp-mqwm-3gq8

HIGHFix: tornadoweb/tornado@771472c

GHSA-jhmp-mqwm-3gq8 is a high-severity (CVSS 7.5) Uncontrolled Resource Consumption vulnerability in tornado. A fix is available for tornado — see the affected versions and patch details below.

Also known asCVE-2025-67726PYSEC-2025-267
Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Oct 24, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for GHSA-jhmp-mqwm-3gq8.

EPSS Exploitation Probability

via FIRST.org ↗
0.5%probability of exploitation in next 30 days
Lower Risk-0.01%
Lower risk than most CVEs44th percentile — riskier than 44% of all scored CVEsHighest risk
0.00%0.35%0.70%1.04%0.1%0.0%0.5%0.5%Apr 26Sep 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

GHSA-jhmp-mqwm-3gq8 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.

Where this sits among everything scored

Of 395,249 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.

Real-World Exposure

1 pkg affected
🐍tornado

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.

Description

Tornado is a Python web framework and asynchronous networking library. Versions 6.5.2 and below use an inefficient algorithm when parsing parameters for HTTP header values, potentially causing a DoS. The _parseparam function in httputil.py is used to parse specific HTTP header values, such as those in multipart/form-data and repeatedly calls string.count() within a nested loop while processing quoted semicolons. If an attacker sends a request with a large number of maliciously crafted parameters in a Content-Disposition header, the server's CPU usage increases quadratically (O(n²)) during parsing. Due to Tornado's single event loop architecture, a single malicious request can cause the entire server to become unresponsive for an extended period. This issue is fixed in version 6.5.3.

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
🐍PyPItornadoall versions6.5.3pip install --upgrade 'tornado==6.5.3'

Affected Products

1 product · 1 configurations
Application
tornadotornadoweb
< 6.5.3
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for tornado, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update tornado to 6.5.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-jhmp-mqwm-3gq8 is resolved across your whole dependency graph.

  3. Workarounds

    Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate

The availability impact of this flaw is partially mitigated on Red Hat products as the host systems are not at risk.

Workaround published by Red Hat
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.
Source: Red Hat security advisory for GHSA-jhmp-mqwm-3gq8 (CC BY 4.0)
ProductFixed inAdvisory
Red Hat Enterprise Linux 8pcs-0:0.10.18-2.el8_10.8RHSA-2026:0930
Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update Supportpcs-0:0.10.8-1.el8_4.10RHSA-2026:2462
Red Hat Enterprise Linux 8.6 Telecommunications Update Servicepcs-0:0.10.12-6.el8_6.12RHSA-2026:2469
Red Hat Enterprise Linux 8.8 Telecommunications Update Servicepcs-0:0.10.15-4.el8_8.10RHSA-2026:2465
Red Hat Enterprise Linux 9.0 Update Services for SAP Solutionspcs-0:0.11.1-10.el9_0.10RHSA-2026:2484
Red Hat OpenShift AI 2.25rhoai/odh-llama-stack-core-rhel9:1770237759RHSA-2026:2106
Red Hat OpenShift AI 3.3rhoai/odh-llama-stack-core-rhel9:1771415661RHSA-2026:3713

Frequently Asked Questions

## Summary The `_parseparam` function in Tornado's `httputil.py` is used to parse specific HTTP header values, such as those in `multipart/form-data`. This function uses an inefficient algorithm that repeatedly calls `string.count()` within a nested loop while processing quoted semicolons (e.g., `param=";"`). As a result, if an attacker sends a request with a large number of maliciously crafted parameters in a `Content-Disposition` header, the server's CPU usage increases quadratically (O(n²)) during parsing. Due to Tornado's single event loop architecture, a single malicious request can cau
O3 Security · Impact-Aware SCA

Is GHSA-jhmp-mqwm-3gq8 in your dependencies?

Find it across PyPI, including transitive dependencies.

Tornado: Quadratic DoS via Crafted Multipart Parameters