{"id":"CVE-2026-116577","aliases":["GHSA-pcg2-g6cj-q92c"],"url":"https://o3.security/vulnerability/CVE-2026-116577","summary":"Tornado: Quadratic CPU usage when parsing HTTP headers with line folding","details":"### Summary\n\nTornado'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.\n\nThis 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.\n\n### Impact\n\nAll Tornado HTTP servers are affected. Header parsing runs before any application code, so no authentication or particular handler is required.\n\nHow bad it gets depends on `max_header_size`:\n\n- **Default (64 KB):** each malicious request blocks the event loop for tens of milliseconds. Repeated requests can degrade service.\n- **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.\n\nOnly availability is affected. Confidentiality and integrity are not.\n\n### Patches\n\nFixed in Tornado 6.6 by removing support for obsolete line folding completely; header lines that begin with whitespace are now rejected.\n\n### Workarounds\n\n- Keep `max_header_size` at its default value or lower it. This limits the impact but doesn't remove it.\n- Run Tornado behind a reverse proxy that rejects or normalizes obsolete line folding before forwarding requests.\n\n### Credit\n\nReported by @manus-pi.","published":"2026-10-26T20:20:22.104Z","modified":"2026-10-28T02:54:49.917716177Z","cvss":{"score":5.3,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"},"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[{"ecosystem":"PyPI","name":"tornado","fixedVersion":"6.6"}],"fix":{"url":"https://github.com/tornadoweb/tornado/commit/1b7a1dc9f340f52de929852e8125aa12f25297c9","label":"tornadoweb/tornado@1b7a1dc"},"references":[{"type":"WEB","url":"https://github.com/tornadoweb/tornado/releases/tag/v6.6.0"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/116xxx/CVE-2026-116577.json"},{"type":"ADVISORY","url":"https://github.com/tornadoweb/tornado/security/advisories/GHSA-pcg2-g6cj-q92c"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116577"},{"type":"FIX","url":"https://github.com/tornadoweb/tornado/commit/1b7a1dc9f340f52de929852e8125aa12f25297c9"},{"type":"FIX","url":"https://github.com/tornadoweb/tornado/pull/3765"},{"type":"PACKAGE","url":"https://github.com/tornadoweb/tornado"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-28T02:54:49.917716177Z"}}