GnuTLS CURLINFO_TLS_SESSION / CURLINFO_TLS_SSL_PTR类型混淆漏洞报告
漏洞概述
在curl库的GnuTLS后端实现中,curl_easy_getinfo函数在处理CURLINFO_TLS_SESSION和CURLINFO_TLS_SSL_PTR时存在类型混淆漏洞。具体表现为:即使使用GnuTLS后端,相关函数仍错误返回CURLSSLBACKEND_OPENSSL值。
技术细节
漏洞代码位置
漏洞位于源代码文件:
lib/vquic/vquic-tls.c#L211
|
|
问题分析
- 类型混淆:当调用方根据backend字段值进行动态决策时,会将
gnutls_session_t类型错误解析为SSL_CTX或SSL类型 - 潜在影响:错误指针传递给OpenSSL函数可能导致崩溃或其他未知影响,具体取决于应用程序代码和调用的函数
受影响版本
- curl 8.15.0
复现步骤
- 构建同时链接GnuTLS和OpenSSL的应用程序
- 应用程序使用
curl_easy_getinfo获取CURLINFO_TLS_SESSION或CURLINFO_TLS_SSL_PTR - 当检测到
info->backend == CURLSSLBACKEND_OPENSSL时调用OpenSSL函数
缓解因素
- 需要应用程序同时链接GnuTLS和OpenSSL(较为罕见)
- HTTP/3不支持多SSL后端,降低了实际影响
- 漏洞更可能表现为常规bug而非安全漏洞
修复情况
- 已通过PR #17976修复
- curl团队确认该问题更可能造成功能异常而非安全风险
时间线
- 2025年7月20日:漏洞报告提交
- 2025年7月20日:确认并开始调查
- 2025年7月20日:提供修复方案
- 2025年7月21日:确认为常规bug而非安全漏洞
- 2025年7月23日:报告公开披露
风险评估
该漏洞被评估为非安全漏洞,主要原因为:
- 需要极其特殊的配置环境(同时使用GnuTLS和OpenSSL)
- HTTP/3不支持多SSL后端架构
- 实际安全影响极为有限
状态:Not Applicable(不适用安全漏洞) CVE ID:无 赏金:无