CVE-2025-67725: Tornado quadratic DoS via repeated header coalescing

CVE-2025-67725 · Severity: high · CVSS 7.5 · Published 2025-12-12

Tornado is a Python web framework and asynchronous networking library. A vulnerability in how it handles web request headers allows an attacker to slow down or crash the server by sending a specially crafted request with many repeated headers. This can lead to a denial-of-service (DoS) condition, making the application unavailable to legitimate users.

Technologies: tornado (PyPI), Tornadoweb Tornado. Vendors: PyPI, Tornadoweb.

Quick answers

Is CVE-2025-67725 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-67725 being exploited in the wild.
How severe is CVE-2025-67725?
High severity, with a CVSS score of 7.5, published 12 December 2025.
Which products and versions are affected?
tornado (PyPI) < 6.5.3, ECOSYSTEM:introduced=0,fixed=6.5.3.
Is there a fix for CVE-2025-67725?
Yes. tornado (PyPI): upgrade to 6.5.3 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-67725 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2025-67725?
Check whether you run tornado (PyPI) or Tornadoweb Tornado at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • tornado (PyPI): upgrade to 6.5.3 or later
    pip install "tornado>=6.5.3"

Technical details

The HTTPHeaders.add method in Tornado's web server implementation uses string concatenation to coalesce values when the same header name is repeated in a request. Because Python strings are immutable, each concatenation requires copying the existing string, leading to O(n²) time complexity relative to the number of repeated headers. Since Tornado operates on a single-threaded event loop, an attacker can exploit this by sending a large number of repeated headers to block the loop for an extended period. The impact is significantly higher if the default 'max_header_size' (64KB) has been increased. This issue is fixed in version 6.5.3.

Affected products

  • Tornadoweb Tornado < 6.5.3

Identifiers

  • CVE-2025-67725
  • GHSA-c98p-7wgm-6p64
  • PYSEC-2025-266

Timeline

  • 2025-12-11: disclosed
  • 2025-12-12: advisory: NVD publication date
  • 2026-07-20: patched: GitHub Advisory published/updated date

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.