IPBUF安全漏洞报告
English
CVE-2026-42874 CVSS 3.7 低危

CVE-2026-42874 Microdot响应头注入漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42874
漏洞类型
HTTP响应头注入
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Microdot

相关标签

MicrodotCRLF注入HTTP响应头注入Python

漏洞概述

Microdot是一个极简的Python Web框架。在2.6.1版本之前,其Response.set_cookie()方法未对字符串参数进行充分过滤,未能检测到\r\n序列,可能导致HTTP响应头注入攻击。利用该漏洞需要攻击者先攻陷客户端(如通过XSS),随后发送恶意信息以在服务器端设置包含注入字符的Cookie。

技术细节

Microdot是一个极简主义的Python Web框架,该漏洞存在于其核心响应处理逻辑中。在2.6.1版本之前,Response.set_cookie()方法在构造HTTP Set-Cookie头部时,未对传入的键值对进行严格的输入验证和清洗。具体来说,该方法未能识别并转义特殊的控制字符序列,即回车符(\r)和换行符(\n)。在HTTP协议中,头部字段之间通过CRLF序列分隔。如果攻击者能够控制传入set_cookie()的数据,并注入\r\n序列,即可欺骗服务器在响应中生成任意的新HTTP头部,从而构成CRLF注入攻击。然而,利用该漏洞存在一定的前置条件。攻击者必须先攻陷客户端环境,例如利用独立的跨站脚本(XSS)漏洞,从而诱导受害者向服务器发送包含恶意CRLF序列的请求。一旦服务器处理该请求并设置Cookie,响应报文将被篡改。这可能被进一步利用来进行HTTP响应拆分、缓存投毒或会话劫持等攻击。

攻击链分析

STEP 1
侦察与定位
攻击者识别目标网站使用的是Microdot框架且版本低于2.6.1。
STEP 2
客户端渗透
攻击者利用其他漏洞(如存储型XSS)攻陷客户端,获取在受害者浏览器中执行代码的能力。
STEP 3
构造恶意载荷
攻击者构造包含CRLF字符(\r\n)的恶意字符串,旨在通过set_cookie方法注入额外的HTTP头部。
STEP 4
触发漏洞
通过被攻陷的客户端,向服务器发送请求,将恶意载荷作为Cookie值发送给服务器。
STEP 5
注入与利用
服务器调用有漏洞的set_cookie方法,在HTTP响应中注入恶意头部,可能导致缓存投毒或进一步攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
from microdot import Microdot, Response app = Microdot() @app.route('/set_cookie') def index(request): # Simulate attacker-controlled input (e.g., from XSS payload) # The '\r\n' sequence attempts to inject a new header malicious_value = "session_value\r\nX-Injected-Header: malicious_content" resp = Response() # Vulnerable method: does not sanitize '\r\n' resp.set_cookie('user_id', malicious_value) return "Cookie set. Check response headers." if __name__ == '__main__': app.run(debug=True)

影响范围

Microdot < 2.6.1

防御指南

临时缓解措施
如果无法立即升级,应在调用set_cookie之前,在后端代码中手动过滤或替换用户输入中的回车换行符(\r, \n)。同时,确保部署了Web应用防火墙(WAF)以检测和阻断包含CRLF序列的异常请求。

参考链接