报告 #3238249 - HTTP/2代理窗口大小计算中的整数溢出风险 | HackerOne
摘要
curl中的HTTP/2代理实现在缓冲区大小计算中存在潜在的整数溢出漏洞,可能导致内存损坏或拒绝服务。
AI使用声明
本报告由人类安全研究人员通过手动代码审查准备。未使用AI生成本报告。
受影响版本
所有包含HTTP/2代理实现的curl版本(自该功能引入以来)。在Linux x86_64上使用curl 8.6.0进行了测试。
漏洞分析
检查cf-h2-proxy.c中的窗口大小计算:
|
|
如果通过恶意HTTP/2帧操纵任一值,计算H2_TUNNEL_WINDOW_SIZE / PROXY_H2_CHUNK_SIZE
可能溢出。
|
|
使用100MB窗口大小(PROXY_HTTP2_HUGE_WINDOW_SIZE
)可能导致内存耗尽。
支持材料/参考文献
- 易受攻击的代码位于curl源代码库中的lib/cf-h2-proxy.c
- 其他HTTP/2实现中也发现了类似漏洞(CVE-2019-9511,CVE-2019-9513)
影响
控制恶意HTTP/2代理服务器的攻击者可能:
- 导致整数溢出,进而导致内存损坏
- 通过极大的窗口大小触发资源耗尽
- 通过精心构造的窗口大小通告导致拒绝服务
影响范围限于:
- 使用启用HTTP/2代理支持的curl的系统
- 当连接到不受信任或受损的HTTP/2代理时
- 需要攻击者处于中间人位置或控制代理服务器
建议修复
- 为窗口大小计算添加边界检查
- 为窗口大小实现合理的最大限制
- 添加对来自对等方的窗口大小通告的验证
- 考虑对大小计算使用饱和算术
附加信息
此漏洞是通过手动代码审查发现的,重点关注HTTP/2代理实现中的整数处理。由于需要代理服务器受损或中间人位置,风险在一定程度上得到缓解,但潜在影响证明解决这些问题是有必要的。
该漏洞与已知的HTTP/2实现缺陷具有相似特征,这些缺陷已在其他软件(例如nghttp2、Apache HTTP Server)中被利用。
时间线
- 2025年7月6日 00:45 UTC - rbxcoolkidd向curl提交报告
- 2025年7月6日 04:42 UTC - dfandrich(curl工作人员)发表评论
- 2025年7月6日 06:44 UTC - jimfuller2024(curl工作人员)发表评论
- 2025年7月6日 10:04 UTC - bagder(curl工作人员)发表评论
- 2025年7月6日 21:04 UTC - bagder关闭报告并将状态更改为"不适用"
- 2025年7月6日 21:04 UTC - bagder请求披露此报告
- 2025年7月7日 10:16 UTC - bagder披露此报告
报告详情
- 报告时间:2025年7月6日 00:45 UTC
- 报告者:rbxcoolkidd
- 报告对象:curl
- 报告ID:#3238249
- 严重性:中等(4 ~ 6.9)
- 披露时间:2025年7月7日 10:16 UTC
- 弱点:整数溢出
- CVE ID:CVE-2019-9511,CVE-2019-9513
- 赏金:无
- 账户详情:无