CVE-2026-116577
Tornado: Quadratic CPU usage when parsing HTTP headers with line folding
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
5.3
Tornado: Quadratic CPU usage when parsing HTTP headers with line folding
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
CVE-2026-116577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2026-110318
5.3
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
EUVD-2026-110318- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-pcg2-g6cj-q92c
5.3
Tornado: Quadratic CPU usage when parsing HTTP headers with line folding
Summary
Tornado's HTTP header parser takes quadratic time (O(n²)) when a header value is continued across many "obsolete line folding" (obs-fold) lines. An unauthenticated attacker can send a request whose header block is mostly short continuation lines. Parsing it uses a large amount of CPU on the IOLoop thread and blocks every other connection that process is serving.
This issue is closely related to CVE-2025-67725 (GHSA-c98p-7wgm-6p64). The fix for that advisory covered repeated headers but not line-folded continuations.
Impact
All Tornado HTTP servers are affected. Header parsing runs before any application code, so no authentication or particular handler is required.
How bad it gets depends on max_header_size:
- Default (64 KB): each malicious request blocks the event loop for tens of milliseconds. Repeated requests can degrade service.
- Raised
max_header_size: the cost grows with the square of the header size. A single 1 MB request can block the process for several seconds.
Only availability is affected. Confidentiality and integrity are not.
Patches
Fixed in Tornado 6.6 by removing support for obsolete line folding completely; header lines that begin with whitespace are now rejected.
Workarounds
- Keep
max_header_sizeat its default value or lower it. This limits the impact but doesn't remove it. - Run Tornado behind a reverse proxy that rejects or normalizes obsolete line folding before forwarding requests.
Credit
Reported by @manus-pi.
- Record
GHSA-pcg2-g6cj-q92c- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
NVD
5.3
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
CVE-2026-116577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
OSV
5.3
Tornado: Quadratic CPU usage when parsing HTTP headers with line folding
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
CVE-2026-116577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-06
OSVDEBIAN-CVE-2026-116577
5.3
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
DEBIAN-CVE-2026-116577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-pcg2-g6cj-q92c
5.3
Tornado: Quadratic CPU usage when parsing HTTP headers with line folding
Summary
Tornado's HTTP header parser takes quadratic time (O(n²)) when a header value is continued across many "obsolete line folding" (obs-fold) lines. An unauthenticated attacker can send a request whose header block is mostly short continuation lines. Parsing it uses a large amount of CPU on the IOLoop thread and blocks every other connection that process is serving.
This issue is closely related to CVE-2025-67725 (GHSA-c98p-7wgm-6p64). The fix for that advisory covered repeated headers but not line-folded continuations.
Impact
All Tornado HTTP servers are affected. Header parsing runs before any application code, so no authentication or particular handler is required.
How bad it gets depends on max_header_size:
- Default (64 KB): each malicious request blocks the event loop for tens of milliseconds. Repeated requests can degrade service.
- Raised
max_header_size: the cost grows with the square of the header size. A single 1 MB request can block the process for several seconds.
Only availability is affected. Confidentiality and integrity are not.
Patches
Fixed in Tornado 6.6 by removing support for obsolete line folding completely; header lines that begin with whitespace are now rejected.
Workarounds
- Keep
max_header_sizeat its default value or lower it. This limits the impact but doesn't remove it. - Run Tornado behind a reverse proxy that rejects or normalizes obsolete line folding before forwarding requests.
Credit
Reported by @manus-pi.
- Record
GHSA-pcg2-g6cj-q92c- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-116577
5.3
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
UBUNTU-CVE-2026-116577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-06
OSVAZL-111739 No score
CVE-2026-116577 affecting package python-tornado 6.3.3-11
Tornado is a Python web framework and asynchronous networking library. Prior to 6.6, Tornado's HTTP header parser accepts obsolete line folding and repeatedly concatenates short continuation lines, causing quadratic CPU consumption on the IOLoop thread. An unauthenticated client can submit a header block containing many obsolete line-folding continuations before application code runs, blocking other connections served by the process. The cost grows with max_header_size, and only availability is affected. This issue is fixed in version 6.6.
- Record
AZL-111739- Updated
- 2026-11-05
OSVCLSA-2026-1793872514 No score
TuxCare security update for tornado (3 CVEs)
TuxCare rebuilt tornado to address 3 CVEs. Fixed in 6.1.0.post11+tuxcare.
- Record
CLSA-2026-1793872514- Updated
- 2026-11-05
OSVopenSUSE-SU-2026:12440-1 No score
python313-tornado6-6.6-1.1 on GA media
These are all security issues fixed in the python313-tornado6-6.6-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12440-1- Updated
- 2026-11-06
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
tornadoPyPI |
before 6.6 | 6.6 |
python-tornadoAzure Linux:3 |
through 6.3.3-11 | None known |
tornadoTuxCare:PyPI From an advisory covering 3 CVEs |
6.1 up to 6.1.0.post11+tuxcare, plus listed versions 6.1.0.post1+tuxcare6.1.0.post10+tuxcare6.1.0.post2+tuxcare6.1.0.post3+tuxcare6.1.0.post4+tuxcare Show 5 moreShow less6.1.0.post5+tuxcare6.1.0.post6+tuxcare6.1.0.post7+tuxcare6.1.0.post8+tuxcare6.1.0.post9+tuxcare |
6.1.0.post11+tuxcare |
python-tornadoDebian:12 |
All versions, plus listed versions 6.2.0-36.2.0-3+deb12u16.2.0-3+deb12u26.2.0-3+deb12u36.2.0-3+deb12u4 Show 20 moreShow less6.3.2-16.4.0-16.4.0-26.4.1-16.4.1-26.4.1-36.4.2-16.4.2-26.4.2-36.5.2-16.5.2-26.5.2-36.5.4-0.16.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-56.6.0-1 |
None known |
python-tornadoDebian:13 |
All versions, plus listed versions 6.4.2-36.4.2-3+deb13u16.4.2-3+deb13u26.5.2-16.5.2-2 Show 9 moreShow less6.5.2-36.5.4-0.16.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-56.6.0-1 |
None known |
python-tornadoDebian:14 |
All versions, plus listed versions 6.4.2-36.5.2-16.5.2-26.5.2-36.5.4-0.1 Show 7 moreShow less6.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-56.6.0-1 |
None known |
tornadoPyPI |
before 6.6, plus listed versions 0.21.01.11.1.11.2 Show 45 moreShow less1.2.12.02.12.1.12.22.2.12.32.42.4.13.03.0.13.0.23.13.1.13.23.2.13.2.24.04.0.14.0.24.14.1b24.24.2.14.2b14.34.3b14.3b24.44.4.14.4.24.4.34.4b14.54.5.14.5.24.5.34.5b14.5b25.05.0.15.0.25.0a15.0b15.1 |
6.6 |
python-tornadoUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 4.2.1-1ubuntu24.2.1-1ubuntu34.2.1-1ubuntu3.14.2.1-1ubuntu3.1+esm14.2.1-1ubuntu3.1+esm24.2.1-1ubuntu3.1+esm34.2.1-1ubuntu3.1+esm44.2.1-1ubuntu3.1+esm5 |
None known |
python-tornadoUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 4.5.1-2.1~build24.5.2-14.5.3-14.5.3-1ubuntu0.14.5.3-1ubuntu0.2 Show 5 moreShow less4.5.3-1ubuntu0.2+esm14.5.3-1ubuntu0.2+esm24.5.3-1ubuntu0.2+esm34.5.3-1ubuntu0.2+esm44.5.3-1ubuntu0.2+esm5 |
None known |
python-tornadoUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 5.1.1-4ubuntu15.1.1-4ubuntu56.0.3+really5.1.1-26.0.3+really5.1.1-2build16.0.3+really5.1.1-2build2 Show 6 moreShow less6.0.3+really5.1.1-36.0.3+really5.1.1-3ubuntu0.1~esm16.0.3+really5.1.1-3ubuntu0.1~esm36.0.3+really5.1.1-3ubuntu0.1~esm56.0.3+really5.1.1-3ubuntu0.1~esm76.0.3+really5.1.1-3ubuntu0.1~esm8 |
None known |
Show 5 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-tornadoUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 6.1.0-1build16.1.0-26.1.0-36.1.0-3build16.1.0-3ubuntu0.1~esm1 Show 5 moreShow less6.1.0-3ubuntu0.1~esm26.1.0-3ubuntu0.1~esm46.1.0-3ubuntu0.1~esm56.1.0-3ubuntu0.1~esm66.1.0-3ubuntu0.1~esm7 |
None known |
python-tornadoUbuntu:24.04:LTS |
All versions, plus listed versions 6.3.2-16.4.0-0ubuntu16.4.0-16.4.0-1build16.4.0-1ubuntu0.1 Show 5 moreShow less6.4.0-1ubuntu0.26.4.0-1ubuntu0.46.4.0-1ubuntu0.56.4.0-1ubuntu0.66.4.0-1ubuntu0.7 |
None known |
python-tornadoUbuntu:26.10 |
All versions, plus listed versions 6.5.4-0.16.5.5-26.5.5-46.5.5-56.5.5-5ubuntu1.16.5.5-5ubuntu1.2 |
None known |
python-tornadoUbuntu:26.04:LTS |
All versions, plus listed versions 6.4.2-36.5.2-36.5.4-0.16.5.4-0.1ubuntu0.16.5.4-0.1ubuntu0.26.5.4-0.1ubuntu0.3 |
None known |
python-tornado6openSUSE:Tumbleweed From an advisory covering 3 CVEs |
before 6.6-1.1 | 6.6-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | OSV | |
| affected, aliases, references | OSV | |
| affected | ||
| affected, aliases, facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-116577 is a medium vulnerability (CVSS 5.3) in Tornadoweb Tornado, published October 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.38%, the 32nd percentile. Fixed in tornado 6.6.
References
github.com/tornadoweb/tornado/security/advisories/GHSA-pcg2-g6cj-q92c
github.com/tornadoweb/tornado/pull/3765
github.com/tornadoweb/tornado/commit/1b7a1dc9f340f52de929852e8125aa12f25297c9
github.com/tornadoweb/tornado/releases/tag/v6.6.0
nvd.nist.gov/vuln/detail/CVE-2026-116577
github.com/advisories/GHSA-pcg2-g6cj-q92c
Show 8 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/116xxx/CVE-2026-116577.json
security-tracker.debian.org/tracker/CVE-2026-116577
github.com/tornadoweb/tornado
ubuntu.com/security/CVE-2026-116577
cve.org/CVERecord?id=CVE-2026-116577
suse.com/security/cve/CVE-2026-115927
suse.com/security/cve/CVE-2026-116577
suse.com/security/cve/CVE-2026-116578
Left out here: 39 versions. The JSON record has them.