报告 #3346118 - curl摘要认证中的时序攻击漏洞
漏洞概述
curl的摘要认证实现中存在时序攻击漏洞,原因是在digest.c第360行比较认证算法时使用了非恒定时间字符串比较函数(strcmp())。这使得攻击者能够通过分析响应时间来确定服务器支持的认证算法。
注意: 本漏洞的发现和报告生成均未使用人工智能。
受影响版本
- curl版本:7.88.1 (x86_64-pc-linux-gnu)
- 平台:Linux Ubuntu 22.04.3 LTS
复现步骤
- 设置启用摘要认证的测试服务器:
|
|
- 对本地服务器运行时序攻击验证脚本:
|
|
- 观察算法比较的时间差异:
|
|
验证脚本将识别响应时间明显不同的算法:
|
|
影响分析
攻击者可利用此漏洞:
- 确定服务器支持的认证算法
- 通过识别较弱算法(如MD5 vs SHA-256)促进针对性攻击
- 获取服务器配置的侦察信息
- 如果结合其他漏洞,可能绕过认证
该漏洞违反了安全敏感操作应使用恒定时间比较的原则,可能导致认证机制指纹识别。
技术细节
- CVSS评分:5.3(中危)- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- 修复建议:在/lib/vauth/digest.c:360中将strcmp()替换为Curl_timestrcmp()
- 类似漏洞:之前在curl代码库的其他部分已通过恒定时间比较修复解决
项目方回应
curl开发团队认为这不是安全问题:
- 服务器支持的认证机制会向未认证客户端公开,这是协议设计意图
- 选择机制本身不会使后续认证变弱
- 通过观察后续请求长度更容易检测机制选择
报告最终被标记为"不适用"并公开披露,同时报告者因使用AI生成验证脚本被禁止提交进一步报告。