IPBUF安全漏洞报告
English
CVE-2026-42545 CVSS 5.9 中危

CVE-2026-42545 Granian WSGI拒绝服务漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-42545
漏洞类型
拒绝服务
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Granian

相关标签

DoSGranianWSGIRustCVE-2026-42545HTTP Header

漏洞概述

Granian是一个为Python应用程序设计的Rust HTTP服务器。在0.2.0至2.7.4之前的版本中存在一个安全漏洞,当WSGI应用程序返回包含无效名称或值的HTTP响应头时,Granian会强制中止其工作进程。漏洞成因是WSGI响应转换路径在处理头部数据时使用了`.unwrap()`方法,导致应用程序输出的畸形数据直接引发进程崩溃(panic)而不是被捕获为可处理的错误,攻击者可利用此漏洞造成拒绝服务。

技术细节

该漏洞源于Granian在处理WSGI应用响应时的错误处理机制缺失。具体而言,在WSGI响应转换路径中,代码直接对Header Name和Header Value的构造函数调用了`.unwrap()`方法。在Rust语言中,当构造函数接收到非法输入(例如包含空字节、换行符等控制字符)时,会返回Result类型的Err值。`.unwrap()`在遇到Err时会直接触发panic,导致当前线程崩溃。由于这是在处理响应头时发生的,会导致Granian的工作进程意外退出。虽然这通常不会导致数据泄露,但会导致服务可用性中断,符合CVSS向量中可用性影响为高的描述。攻击者只需能触发WSGI应用返回畸形头部即可利用此漏洞。

攻击链分析

STEP 1
侦察
攻击者识别出目标正在使用受影响版本的Granian(< 2.7.4)作为Python应用的HTTP服务器。
STEP 2
漏洞利用
攻击者向目标服务器发送请求,诱导WSGI应用程序返回包含非法字符(如空字节)的HTTP响应头。
STEP 3
触发崩溃
Granian在处理该响应头时,由于`.unwrap()`调用遇到错误,触发Rust panic,导致工作进程意外中止。
STEP 4
拒绝服务
工作进程的崩溃导致服务暂时不可用,如果重启机制较慢或频繁崩溃,将导致持续的拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-42545 # This WSGI application returns an invalid header name containing a null byte. # Granian < 2.7.4 will crash when processing this response. def application(environ, start_response): status = '200 OK' # Injecting a null byte into the header name causes the unwrap() to panic headers = [('Invalid\x00Header', 'Value')] start_response(status, headers) return [b'Hello World']

影响范围

Granian >= 0.2.0, < 2.7.4

防御指南

临时缓解措施
在无法立即升级的情况下,应确保WSGI应用程序不返回包含控制字符、空字节或其他非法字符的HTTP头部名称或值。可以在WSGI应用层添加中间件对响应头进行校验和过滤,防止畸形数据传递给Granian服务器处理。

参考链接

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