IPBUF安全漏洞报告
English
CVE-2026-35536 CVSS 7.2 高危

CVE-2026-35536 Tornado Cookie属性注入漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-35536
漏洞类型
Cookie属性注入
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Tornado

相关标签

Cookie注入CRLF注入TornadoWeb安全CVE-2026-35536

漏洞概述

Tornado Web框架6.5.5之前版本存在安全漏洞。攻击者可利用set_cookie方法对domain、path等参数过滤不严的缺陷,注入恶意Cookie属性,导致会话劫持或安全绕过。

技术细节

该漏洞源于Tornado在设置Cookie时未对domain、path和samesite参数进行充分的输入验证。攻击者可以通过注入换行符(CRLF)等控制字符,在Set-Cookie HTTP响应头中插入额外的Cookie属性。利用此漏洞,攻击者可以覆盖Cookie的Secure或HttpOnly标志,或将Cookie作用域扩展到恶意域名,从而窃取用户会话ID或绕过同源策略限制。由于攻击无需认证和用户交互,且可在网络层面利用,因此危害较大。

攻击链分析

STEP 1
信息收集
攻击者识别目标Web应用使用的是Tornado框架且版本低于6.5.5。
STEP 2
构造Payload
攻击者构造包含CRLF字符(%0d%0a)的恶意参数(如domain),意图注入额外的Cookie属性。
STEP 3
发送请求
攻击者向目标服务器发送包含恶意Payload的HTTP请求。
STEP 4
注入响应头
服务器由于未过滤特殊字符,将恶意内容反射到Set-Cookie响应头中。
STEP 5
执行攻击
客户端浏览器解析被修改的Set-Cookie头,接受攻击者设定的属性,导致Cookie泄露或安全策略失效。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import tornado.web import tornado.ioloop # Simulating the vulnerable component class MainHandler(tornado.web.RequestHandler): def get(self): # Attacker controls the 'domain' parameter via query string domain_input = self.get_argument("domain", "example.com") # Vulnerability: set_cookie does not check for special characters like \r\n # Attack payload: ".evil.com\r\nSecure; HttpOnly" self.set_cookie("session_id", "secret_value", domain=domain_input) self.write("Cookie set with domain: " + domain_input) if __name__ == "__main__": app = tornado.web.Application([(r"/", MainHandler)]) app.listen(8888) print("Server running on http://localhost:8888") tornado.ioloop.IOLoop.current().start() # Exploit request example: # GET /?domain=.evil.com%0D%0ASecure;%20HttpOnly

影响范围

Tornado < 6.5.5

防御指南

临时缓解措施
建议立即升级Tornado框架到修复版本6.5.5及以上。如无法升级,开发者应在代码层面拦截所有传入set_cookie方法的domain、path和samesite参数,移除其中的回车换行符(\r\n)及其他控制字符。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表