Skip to main content
Press slash or control plus K to focus the search. Use the arrow keys to navigate results and press enter to open a threat.
Reconnecting to live updates…

CVE-2025-67724: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in tornadoweb tornado

0
Medium
VulnerabilityCVE-2025-67724cvecve-2025-67724cwe-79cwe-644
Published: Fri Dec 12 2025 (12/12/2025, 05:36:59 UTC)
Source: CVE Database V5
Vendor/Project: tornadoweb
Product: tornado

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.

AI-Powered Analysis

AILast updated: 12/19/2025, 07:49:09 UTC

Technical Analysis

CVE-2025-67724 is a cross-site scripting (XSS) vulnerability identified in the Tornado web framework, a popular Python-based asynchronous networking library and web server framework. The issue exists in versions 6.5.2 and earlier, where the 'reason' phrase parameter used in HTTP status responses is not properly sanitized or escaped before being incorporated into HTTP headers and the default HTML error pages. This 'reason' phrase is intended to provide a textual explanation for HTTP status codes (e.g., 'Not Found' in a 404 response) and can be set via the RequestHandler.set_status method or by raising tornado.web.HTTPError with a custom reason. Because the input is directly reflected without neutralization, an attacker can supply malicious JavaScript code in the reason argument, which will then be executed in the victim's browser when viewing the error page, constituting a reflected XSS attack. Additionally, unescaped input in HTTP headers could lead to header injection attacks, potentially enabling HTTP response splitting or other header-based exploits. The vulnerability requires no authentication but does require user interaction (visiting a crafted URL). The CVSS 3.1 base score is 5.4 (medium), reflecting limited confidentiality and integrity impacts without availability impact. The issue was reserved on December 10, 2025, and published on December 12, 2025, with no known exploits in the wild. The vulnerability is addressed in Tornado version 6.5.3 by properly escaping the reason phrase in both HTTP headers and HTML error pages.

Potential Impact

For European organizations, this vulnerability poses a moderate risk primarily to web applications built on Tornado versions 6.5.2 and earlier. Successful exploitation could allow attackers to execute arbitrary JavaScript in users' browsers, potentially leading to session hijacking, theft of sensitive information, or manipulation of web content, thereby compromising confidentiality and integrity. While the vulnerability does not affect system availability, the reputational damage and potential data breaches could be significant, especially for organizations handling sensitive user data or operating critical services. Since Tornado is widely used in Python web development, sectors such as finance, healthcare, government, and e-commerce in Europe could be targeted. The lack of known exploits currently reduces immediate risk, but the ease of exploitation and the common use of Tornado in asynchronous web applications necessitate prompt remediation to prevent future attacks.

Mitigation Recommendations

European organizations should immediately upgrade all Tornado deployments to version 6.5.3 or later to ensure the vulnerability is patched. For applications where immediate upgrade is not feasible, implement strict input validation and sanitization on any user-supplied data that could be passed to the 'reason' parameter, ensuring that it does not contain HTML or JavaScript code. Employ Content Security Policy (CSP) headers to restrict the execution of unauthorized scripts in browsers. Review and harden HTTP header handling to prevent header injection and response splitting attacks. Conduct thorough security testing, including automated scanning and manual code reviews, focusing on error handling and status code generation paths. Educate developers about safe usage of Tornado's set_status and HTTPError methods to avoid passing untrusted data directly. Monitor web application logs for suspicious requests containing unusual reason phrases. Finally, maintain an incident response plan to quickly address any detected exploitation attempts.

Need more detailed analysis?Upgrade to Pro Console

Technical Details

Data Version
5.2
Assigner Short Name
GitHub_M
Date Reserved
2025-12-10T19:25:20.819Z
Cvss Version
3.1
State
PUBLISHED

Threat ID: 693badd05785fd87b5f80b8f

Added to database: 12/12/2025, 5:53:20 AM

Last enriched: 12/19/2025, 7:49:09 AM

Last updated: 2/7/2026, 4:50:01 AM

Views: 100

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console in Console -> Billing for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats