CVE-2025-67724

Tornado vulnerable to Header Injection and XSS via reason argument

Published Dec 12, 2025 CVSS 3.1 · 5.4 Medium EPSS < 1% KEV · Not listed
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.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4461-1 python-tornado security update
Debian DSA Debian DSA DSA-6195-1 python-tornado security update
Github GHSA Github GHSA GHSA-pr2v-jx2c-wg9f Tornado vulnerable to Header Injection and XSS via reason argument
Ubuntu USN Ubuntu USN USN-7950-1 Tornado vulnerabilities
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
CPEs cpe:2.3:a:tornadoweb:tornado:*:*:*:*:*:*:*:*
Type Values Removed Values Added
First Time appeared Tornadoweb
Tornadoweb tornado
Vendors & Products Tornadoweb
Tornadoweb tornado
Type Values Removed Values Added
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.
Title Tornado vulnerable to Header Injection and XSS via reason argument
Weaknesses CWE-644
CWE-79
References
Metrics cvssV3_1

{'score': 5.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Dec 18, 2025, 6:53 PM
Reserved
Dec 10, 2025, 7:25 PM
Status
Analyzed
Published
Dec 12, 2025, 6:15 AM
Modified
Oct 7, 2026, 8:10 PM
Severity
Moderate
Public date
Dec 12, 2025, 5:36 AM