CVE-2026-49854: Tornadoweb Tornado buffer over-read in tornado.speedups extension

CVE-2026-49854 · Severity: medium · CVSS 5.3 · Published 2026-07-14

Tornado is a popular Python web framework used for building high-performance web applications. A security flaw in its optional performance-enhancing component could allow an attacker to trigger an improper memory read. This could potentially expose small amounts of sensitive internal memory, though it does not allow for full system takeover or data modification.

Technologies: tornado (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-49854 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-49854 being exploited in the wild.
How severe is CVE-2026-49854?
Medium severity, with a CVSS score of 5.3, published 14 July 2026.
Which products and versions are affected?
tornado (PyPI) < 6.5.6, ECOSYSTEM:introduced=0,fixed=6.5.6.
Is there a fix for CVE-2026-49854?
Yes. tornado (PyPI): upgrade to 6.5.6 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-49854 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-49854?
Check whether you run tornado (PyPI) 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.6 or later
    pip install "tornado>=6.5.6"

Technical details

A buffer over-read vulnerability (CWE-126) exists in Tornado's optional C extension, tornado.speedups. The websocket_mask function fails to validate that the mask argument is exactly four bytes long, leading the underlying C function to read up to three bytes beyond the provided buffer. This vulnerability is reachable via the XSRF token decoding process when xsrf_cookies is enabled and the native extension is active. An unauthenticated remote attacker can exploit this to read small amounts of uninitialized memory. The issue is resolved in version 6.5.6; users can mitigate the risk by setting TORNADO_EXTENSION=0 to disable the native extension.

Affected products

  • Tornadoweb Tornado < 6.5.6

Identifiers

  • CVE-2026-49854
  • GHSA-cx3h-4qpv-8hc9
  • PYSEC-2026-3388

Timeline

  • 2026-05-27: patched: Version 6.5.6 released
  • 2026-05-27: advisory: GitHub Security Advisory published
  • 2026-07-14: disclosed: CVE published to NVD

References

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