Skip to main content

Tornado CVE-2026-82397

| EUVDEUVD-2026-68892 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-08-31 GitHub_M GHSA-mpf4-983q-p7j4
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send unauthenticated POST with 100 MB urlencoded body
  2. Delivery
    Tornado invokes parse_qs_bytes without field limit
  3. Exploit
    urllib.parse.parse_qs iterates millions of fields synchronously
  4. Execution
    Single-threaded event loop blocked for seconds
  5. Impact
    All concurrent connections stall or timeout

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special conditions are required beyond the ability to send an HTTP POST request to a Tornado application. Any endpoint that accepts a request body - including default Tornado RequestHandler subclasses - is vulnerable because body parsing occurs unconditionally in RequestHandler._execute before handler dispatch, regardless of whether the handler logic uses the parsed form data. The only natural limit is max_buffer_size (default 104,857,600 bytes / 100 MB), which itself bounds but does not prevent the attack. Limiting factors: the attacker must be able to reach the Tornado server over the network; if Tornado is not internet-facing (e.g., internal microservice behind authenticated API gateway), exploitation requires network access to that internal segment. No authentication, no specific feature flag, and no non-default configuration is needed - the vulnerable code path executes on every POST with an application/x-www-form-urlencoded content type.

Impact

The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H scores 7.5 (High) and accurately reflects the threat model: any network-reachable Tornado endpoint accepting POST bodies can be targeted by an unauthenticated attacker with no complexity barrier. The availability impact is total for the duration of the attack, as the single-threaded event loop cannot process other requests while parsing runs. No EPSS score was provided in the intelligence data, so exploitation probability cannot be quantified numerically. No active exploitation is recorded in CISA KEV and no public proof-of-concept code is listed, which moderates the urgency somewhat. However, the attack is conceptually trivial - generating a 100 MB body of ampersand-separated key=value pairs requires only standard tools - making the effective exploit barrier very low even without a published PoC. The combination of network reachability, zero privilege requirement, and complete availability loss against an inherently single-threaded architecture represents a genuine operational priority for any internet-facing Tornado deployment.

Exploit ScenarioDerived

An attacker sends a single HTTP POST request to any Tornado endpoint - no authentication or session required - with a Content-Type of application/x-www-form-urlencoded and a body filled with millions of ampersand-separated key=value pairs up to the 100 MB max_buffer_size limit. Tornado's synchronous parse_qs call processes all fields before routing the request, monopolizing the event loop thread and rendering the server unresponsive to all other clients for the duration of processing. The attack can be repeated in a loop to maintain continuous denial of service, and the low complexity means it requires no specialized tooling beyond curl or a simple Python script.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 31, 2026

Denial-of-service in Tornado prior to 6.5.8 allows unauthenticated remote attackers to stall the entire server by sending a single POST request with millions of separator-delimited fields in an application/x-www-form-urlencoded body. Because Tornado's RequestHandler parses the body synchronously before handler dispatch using urllib.parse.parse_qs without a max_num_fields limit, a request body up to the 100 MB default max_buffer_size can consume all CPU on the single-threaded event loop and delay every concurrent connection. No public exploit or CISA KEV listing has been identified at time of analysis, but the low attack complexity (AV:N/AC:L/PR:N/UI:N) makes this trivially automatable against any exposed Tornado endpoint.

RemediationAI

Upgrade to Tornado 6.5.8, released August 6, 2026, which enforces a default limit of 1000 urlencoded form arguments per request and caps multipart parsing earlier in the pipeline. The tagged release is available at https://github.com/tornadoweb/tornado/releases/tag/v6.5.8 and the patch is documented in the security advisory at https://github.com/tornadoweb/tornado/security/advisories/GHSA-mpf4-983q-p7j4. For deployments that cannot upgrade immediately, a compensating control is to reduce max_buffer_size significantly (e.g., to a few kilobytes for endpoints that do not expect large POST bodies), which limits the maximum number of fields an attacker can submit; note this may break legitimate large-upload functionality. Alternatively, placing a reverse proxy (nginx, HAProxy) in front of Tornado configured to reject or limit oversized application/x-www-form-urlencoded bodies provides an effective network-layer mitigation, though it requires proxy-layer configuration changes and does not address the root cause.

Affected VersionsENISA

Tornado < 6.5.8

Affected Packages

pypi tornado fix: 6.5.8

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Tornado is an asynchronous Python web framework built on a single-threaded event loop. HTTP request body parsing for application/x-www-form-urlencoded content is performed in tornado/httputil.py via parse_body_arguments, which calls parse_qs_bytes in tornado/escape.py, which in turn calls Python's standard urllib.parse.parse_qs. The root cause (CWE-400: Uncontrolled Resource Consumption) is that parse_qs accepts an optional max_num_fields parameter to cap the number of parsed key-value pairs - but Tornado did not pass this argument, leaving body parsing bounded only by max_buffer_size (default 100 MB). Because parsing occurs synchronously in RequestHandler._execute before handler dispatch, a single specially crafted request can monopolize the event loop thread, starving all other connections. The fix in 6.5.8 introduces a ParseUrlEncodedConfig dataclass with a default max_arguments=1000 limit, passed through to parse_qs_bytes as max_num_fields, and similarly tightens multipart parsing via a split-count cap. The affected CPE is cpe:2.3:a:tornadoweb:tornado:*:*:*:*:*:*:*:* for all versions prior to 6.5.8.

Know when Tornado gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Network-accessible with no privileges or interaction needed; impact is availability-only as event loop stalls but no data is exposed or modified.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE HIGH
Red Hat 7.5 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Aug 31, 2026 - 23:02 EUVD
CVE Published
Aug 31, 2026 - 21:28 cve.org
HIGH 7.5

DescriptionCVE.org

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.

Technical POC Analysis

CWE-400 (Uncontrolled Resource Consumption), with CWE-1284 (Improper Validation of Specified Quantity in Input) also assigned.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Tornado web framework versions prior to 6.5.8 are vulnerable to a denial-of-service attack that can stall the entire server with a single unauthenticated request. Any exposed Tornado application is at immediate risk of service unavailability, which could disrupt customer-facing services and revenue-generating operations without requiring attacker privileges or user interaction.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Enforce strict max_buffer_size limits and request body size caps at reverse proxy/load balancer; (2) implement rate limiting to slow POST request ingestion; (3) configure WAF rules to detect and block requests with unusually high field-delimiter counts; (4) monitor server CPU and event loop latency for anomalies; (5) consider network ingress filtering if endpoints need not be public. These controls reduce exploitability but do not eliminate the vulnerability.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Medium
popular Python async framework, significant but not universal deployment
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2024-42733 CRITICAL POC
9.8 Mar 07

An issue in Docmosis Tornado v.2.9.7 and before allows a remote attacker to execute arbitrary code via a crafted script

CVE-2023-25266 HIGH POC
8.8 Feb 28

An issue was discovered in Docmosis Tornado prior to version 2.9.5. Rated high severity (CVSS 8.8), this vulnerability i

CVE-2025-67726 HIGH POC
7.5

py3-tornado in Alpine Linux received a security fix packaged as version 6.5.4-r0, addressing an unspecified vulnerabilit

CVE-2023-25265 HIGH POC
7.5 Feb 28

Docmosis Tornado <= 2.9.4 is vulnerable to Directory Traversal leading to the disclosure of arbitrary content on the fil

CVE-2023-25264 HIGH POC
7.5 Feb 28

An issue was discovered in Docmosis Tornado prior to version 2.9.5. Rated high severity (CVSS 7.5), this vulnerability i

CVE-2026-103262 HIGH
8.7 Oct 01

Denial of service in the Tornado web framework's CurlAsyncHTTPClient (all releases before 6.5.9) lets an unauthenticated

CVE-2026-31958 HIGH
8.7 Mar 11

In versions of Tornado prior to 6.5.5, the only limit on the number of parts in `multipart/form-data` is the `max_body_s

CVE-2026-91990 HIGH
8.7 Sep 15

Memory amplification denial of service in the Tornado Python web framework before 6.5.8 lets unauthenticated remote atta

CVE-2026-91992 HIGH
8.2 Sep 15

Credential leakage in Tornado's CurlAsyncHTTPClient (all releases through 6.5.6) lets sensitive per-request state — clie

CVE-2026-103263 HIGH
8.2 Oct 01

Unauthenticated local file disclosure in Tornado before 6.5.9 lets remote attackers read files outside a configured stat

CVE-2025-67725 HIGH
7.5

Tornado Python web framework on Alpine Linux received a security fix in package version 6.5.4-r0, addressing an uncharac

CVE-2024-52804 HIGH
7.5 Nov 22

Tornado is a Python web framework and asynchronous networking library. Rated high severity (CVSS 7.5), this vulnerabilit

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS Affected
SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS Affected
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS Affected
SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS Affected
SUSE Linux Enterprise Micro 5.3 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy