CVE-2025-67724: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in tornadoweb tornado
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 Analysis
Technical Summary
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.
Affected Countries
Germany, United Kingdom, France, Netherlands, Sweden, Italy
CVE-2025-67724: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in tornadoweb 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
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.
Affected Countries
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/5/2026, 2:27:44 AM
Views: 99
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Related Threats
CVE-2025-11730: CWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in Zyxel ATP series firmware
HighCVE-2026-1898: Improper Access Controls in WeKan
MediumCVE-2026-1897: Missing Authorization in WeKan
MediumCVE-2026-1896: Improper Access Controls in WeKan
MediumCVE-2025-13192: CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') in roxnor Popup builder with Gamification, Multi-Step Popups, Page-Level Targeting, and WooCommerce Triggers
HighActions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
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.