CVE-2026-49854 Tornado: Out-of-bounds memory access in C extension

Medium 5.3 Published Updated

Out-of-bounds read in Tornado's optional C extension during XSRF token decoding can cause crashes or potential code execution.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2026-49854?

CVE-2026-49854 is a medium-severity memory corruption vulnerability in tornadoweb tornado, published on 14 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.6, the optional native extension tornado.speedups implemented websocket_mask without validating that the mask argument is exactly four bytes, allowing the C function to read up to three bytes beyond the provided buffer when reached through Tornado XSRF token decoding with the native extension active. This issue is fixed in version 6.5.6.

Weakness: CWE-126

Which versions are affected by CVE-2026-49854?

3 open source packages ship an affected version, including tornado.

PackageAffectedFixed in
tornado PyPIAll versions6.5.6
tornado PyPIAll versions6.5.6
tornado PyPIAll versions6.5.6

How do I fix CVE-2026-49854?

Upgrade tornado to 6.5.6 or later.

Upgrade to the fixed version. Memory-safe languages, compiler hardening and fuzzing prevent most new cases. More about Memory corruption.

Is CVE-2026-49854 being exploited?

There is no known exploitation of CVE-2026-49854 in the wild and no public exploit code.

Sources

Also known as AZL-92382, BELL-CVE-2026-49854, CLEANSTART-2026-EI49754, CLEANSTART-2026-YI76891, DEBIAN-CVE-2026-49854, ECHO-6886-9687-7159 and 12 more.

Is CVE-2026-49854 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free