PYSEC-2025-267
Vulnerability from pysec - Published: 2025-12-12 07:15 - Updated: 2026-07-13 05:52Tornado 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.
| Name | purl | tornado | pkg:pypi/tornado |
|---|
{
"affected": [
{
"ecosystem_specific": {},
"package": {
"ecosystem": "PyPI",
"name": "tornado",
"purl": "pkg:pypi/tornado"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.5.3"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.2",
"1.0",
"1.1",
"1.1.1",
"1.2",
"1.2.1",
"2.0",
"2.1",
"2.1.1",
"2.2",
"2.2.1",
"2.3",
"2.4",
"2.4.1",
"3.0",
"3.0.1",
"3.0.2",
"3.1",
"3.1.1",
"3.2",
"3.2.1",
"3.2.2",
"4.0",
"4.0.1",
"4.0.2",
"4.1",
"4.1b2",
"4.2",
"4.2.1",
"4.2b1",
"4.3",
"4.3b1",
"4.3b2",
"4.4",
"4.4.1",
"4.4.2",
"4.4.3",
"4.4b1",
"4.5",
"4.5.1",
"4.5.2",
"4.5.3",
"4.5b1",
"4.5b2",
"5.0",
"5.0.1",
"5.0.2",
"5.0a1",
"5.0b1",
"5.1",
"5.1.1",
"5.1b1",
"6.0",
"6.0.1",
"6.0.2",
"6.0.3",
"6.0.4",
"6.0a1",
"6.0b1",
"6.1",
"6.1b1",
"6.1b2",
"6.2",
"6.2b1",
"6.2b2",
"6.3",
"6.3.1",
"6.3.2",
"6.3.3",
"6.3b1",
"6.4",
"6.4.1",
"6.4.2",
"6.4b1",
"6.5",
"6.5.1",
"6.5.2",
"6.5b1"
]
}
],
"aliases": [
"CVE-2025-67726",
"GHSA-jhmp-mqwm-3gq8"
],
"details": "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\u0027s CPU usage increases quadratically (O(n\u00b2)) during parsing. Due to Tornado\u0027s 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.",
"id": "PYSEC-2025-267",
"modified": "2026-07-13T05:52:14.026213Z",
"published": "2025-12-12T07:15:44.920Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.3"
},
{
"type": "ADVISORY",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-jhmp-mqwm-3gq8"
},
{
"type": "FIX",
"url": "https://github.com/tornadoweb/tornado/commit/771472cfdaeebc0d89a9cc46e249f8891a6b29cd"
}
],
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"type": "CVSS_V3"
}
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.