What’s Vulnerable › Vulnerabilities
CVE-2025-67724: Tornado vulnerable to Header Injection and XSS via reason argument
- Severity: medium (CVSS 6.1 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.2% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2025-12-12 · updated 2026-10-07
- Weakness: CWE-79
Description
Tornado is a Python web framework and asynchronous networking library. In versions 6.5.2 and below, the supplied reason phrase is used unescaped in HTTP headers (where it could be used for header injection) or in HTML in the default error page (where it could be used for XSS) and can be exploited by passing untrusted or malicious data into the reason argument. Used by both RequestHandler.set_status and tornado.web.HTTPError, the argument is designed to allow applications to pass custom "reason" phrases (the "Not Found" in HTTP/1.1 404 Not Found) to the HTTP status line (mainly for non-standard status codes). This issue is fixed in version 6.5.3.
Affected products
- tornadoweb tornado: before 6.5.3 — fixed in 6.5.3
- Pypi Tornado: before 6.5.3; 0.2, 1.0, 1.1, 1.1.1, 1.2, 1.2.1 (+72) — fixed in 6.5.3
How to fix
Upgrade to a fixed version: tornadoweb tornado 6.5.3; Pypi Tornado 6.5.3. Check the vendor advisory for mitigations.
References
- https://github.com/tornadoweb/tornado/commit/9c163aebeaad9e6e7d28bac1f33580eb00b0e421
- https://github.com/tornadoweb/tornado/releases/tag/v6.5.3
- https://github.com/tornadoweb/tornado/security/advisories/GHSA-pr2v-jx2c-wg9f
Get alerted when CVE-2025-67724 or the next vulnerability affects your stack