Vulnerability · Published Dec 12, 2025 · Assigned by GitHub_M
CVE-2025-67724Tornado vulnerable to Header Injection and XSS via reason argument
Medium 5.4
In plain English
A medium-severity cross-site scripting in tornado from tornadoweb. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 15% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official 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 packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| Alpine:v3.23 | py3-tornado | 6.5.4-r0 | ALPINE-CVE-2025-67724 |
| Alpine:v3.24 | py3-tornado | 6.5.4-r0 | ALPINE-CVE-2025-67724 |
| Debian:12 | python-tornado | 6.2.0-3+deb12u4 | DEBIAN-CVE-2025-67724 |
| Debian:13 | python-tornado | 6.4.2-3+deb13u2 | DEBIAN-CVE-2025-67724 |
| Debian:14 | python-tornado | 6.5.4-0.1 | DEBIAN-CVE-2025-67724 |
| PyPI | tornado | 6.5.3 | PYSEC-2025-265 |
| PyPI | tornado | 6.5.3 | GHSA-pr2v-jx2c-wg9f |
| Ubuntu:24.04:LTS | python-tornado | 6.4.0-1ubuntu0.4 | UBUNTU-CVE-2025-67724 |
| Ubuntu:25.10 | python-tornado | 6.4.2-3ubuntu0.2 | UBUNTU-CVE-2025-67724 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| tornadoweb | tornado | < 6.5.3 |
Weakness: CWE-79, CWE-644 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N