Free of uninitialized pointer in doh_decode_rdata_name()
漏洞报告概述
报告ID #3037326 披露了cURL库中doh_decode_rdata_name()
函数(位于lib/doh.c)在特定条件下会释放未初始化指针的安全问题。
漏洞详情
当剩余缓冲区长度*remaining
<= 0时,代码第1033行会执行free()
操作,释放未初始化的指针thename.bufr
。该问题在v8.12.1版本中存在,截至2025年3月11日仍在master分支中存在。
相关代码段
|
|
Curl_dyn_free()
函数执行:
|
|
但s->bufr
在第1033行调用时尚未初始化。
漏洞验证方法
使用Visual Studio 2022进行验证:
- 使用调试信息构建cURL
- 设置curl项目的命令行参数
- 在第1032行设置断点
- 运行curl,当断点触发时,通过调试器将rem修改为0
- 单步执行到第1033行,观察未初始化的s->bufr(在调试版本中通常为0xcccccccccccccccc)
- 执行Curl_safefree()调用时会抛出访问冲突异常
潜在影响
可能导致基于use-after-free漏洞的任何影响。
开发团队响应
cURL开发团队bagder在收到报告后迅速响应:
- 确认这是一个正确的bug报告
- 指出该功能处于实验性阶段,默认未启用,不被视为安全问题
- 创建了PR #16710进行修复
最终处理
报告最终被标记为"Informative"(信息性),确认为一个当前不可达的次要bug,不属于安全问题。报告于2025年6月28日披露。
技术细节
- 弱点类型:Use After Free
- CVE ID:无
- 严重性:未评级
- 赏金:无
该漏洞虽然在实际中无法触发,但仍揭示了代码中存在的潜在风险,值得开发者关注和修复。