GnuTLS CURLINFO_TLS_SESSION / CURLINFO_TLS_SSL_PTR 类型混淆
漏洞摘要
curl_easy_getinfo函数在处理CURLINFO_TLS_SESSION和CURLINFO_TLS_SSL_PTR时,错误地将GnuTLS后端标识为CURLSSLBACKEND_OPENSSL,导致类型混淆问题。
技术细节
|
|
漏洞位于vquic-tls.c文件第211行:
|
|
影响分析
- 当调用方根据backend字段动态决策时,会将gnutls_session_t错误解析为SSL_CTX/SSL结构
- 可能导致崩溃或其他未知影响,具体取决于应用程序如何处理错误指针
- 缓解因素:需同时链接GnuTLS和OpenSSL库的罕见场景才会触发
受影响版本
- curl 8.15.0
复现步骤
- 构建同时支持GnuTLS和OpenSSL的应用程序
- 使用curl_easy_getinfo获取CURLINFO_TLS_SESSION或CURLINFO_TLS_SSL_PTR
- 当检测到CURLSSLBACKEND_OPENSSL时调用OpenSSL函数
修复方案
已通过PR #17976修复:
|
|
补充说明
- HTTP/3不支持MultiSSL特性,降低了实际影响
- 该问题更倾向于普通bug而非安全漏洞
- 项目方基于透明度原则选择公开披露