GitHub Advisoryadvisory · PyPI

GHSA-cx3h-4qpv-8hc9 Tornado has out-of-bounds memory access via C extension

LOW Published 2026-06-12 Modified 2026-06-12 Official page ↗
Aliases
CVE-2026-49854
Ecosystem
PyPI
Packages
tornado
Severity
Low
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Weaknesses
CWE-126
Reviewed
2026-06-12

Affected packages

• PyPI tornado: < 6.5.6 → fixed in 6.5.6

Description

Summary Tornado's optional native extension `tornado.speedups` implements `websocket_mask` without validating that the `mask` argument is exactly four bytes long. The C function reads four bytes from `mask` unconditionally, even when Python passes a shorter byte string. This can read beyond the provided buffer, exposing up to 3 bytes of uninitialized memory. The behavior is reachable from Tornado's XSRF token decoder when `xsrf_cookies=True` and the native extension is active. Mitigations This bug is fixed in Tornado 6.5.6. Prior to upgrading to this version, setting the environment variable TORNADO_EXTENSION=0 will disable the vulnerable code (at the expense of reducing websocket performance).

Related

Alias · CVE (1)

  • CVE-2026-49854 Tornado is a Python web framework and asynchronous networking library. vulnerability

Weakness · CWE (1)

  • CWE-126 Buffer Over-read weakness

References