GHSA-pcg2-g6cj-q92c: Medium severity pip/tornado vulnerability

Published Oct 28, 2026
·
Updated

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 maxheadersize:

- Default (64 KB): each malicious request blocks the event loop for tens of milliseconds. Repeated requests can degrade service. - Raised maxheadersize: 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 maxheadersize at 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.

Affected Software

1 affected componentFixes available
pip/tornado<6.6
6.6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/tornado to a version that resolves this vulnerability.

    Fixed in 6.6
  2. Upgrade

    Upgrade Tornado to a version that resolves this vulnerability.

    Fixed in 6.6
  3. Configuration

    Keep max_header_size at its default value or lower it.

    Tornado HTTP server max_header_size = default value or lower
  4. Compensating control

    Run Tornado behind a reverse proxy that rejects or normalizes obsolete line folding before forwarding requests.

Event History

Oct 28, 2026
Advisory Published
via GitHub·10:43 PM
Data Sourced
via GitHub·10:43 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Who can exploit this issue?

Any unauthenticated remote client that can send HTTP requests to a Tornado HTTP server can trigger it. The malformed header is parsed before application code runs, so no specific endpoint, handler, or application-level authentication is required.

2

Are default Tornado deployments affected?

Yes. All Tornado HTTP servers are affected, including those using the default 64 KB max_header_size. At the default limit, a malicious request can block the event loop for tens of milliseconds, and repeated requests can degrade service.

3

What configuration makes the impact worse?

Increasing max_header_size increases the CPU cost quadratically with header size. With a 1 MB header limit, a single malicious request can block the process for several seconds.

4

What is the practical impact on a vulnerable server?

The attack consumes CPU while parsing folded HTTP header lines on the IOLoop thread, preventing that process from serving other connections during the delay. The provided impact is limited to availability; confidentiality and integrity are not affected.

5

What change fixes the issue?

Tornado 6.6 fixes the issue by completely removing support for obsolete HTTP line folding. Header lines beginning with whitespace are no longer accepted as continuations.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203