证书固定绕过漏洞:wolfSSL后端与HTTP/3
摘要
当libcurl使用wolfSSL后端并启用HTTP/3支持时,存在一个安全特性绕过漏洞。如果用户同时禁用对等验证(使用 -k 或 --insecure 选项),证书固定功能(--pinnedpubkey)会被静默忽略。此行为与其他后端(如OpenSSL)不一致,可能导致连接暴露于中间人攻击之中。
受影响版本
在 curl 8.8.0-DEV 版本上重现。
环境信息
|
|
重现步骤
我们通过一个伪造的固定哈希值(AAAA...)针对一个有效服务器(google.com),对比了标准构建(OpenSSL)与存在漏洞的构建(wolfSSL)的行为。
对照测试(标准OpenSSL)
运行命令:
|
|
结果:
|
|
(如预期般失败)
漏洞利用测试(存在漏洞的wolfSSL + HTTP/3构建)
运行命令:(使用存在漏洞的Docker环境 smbd/curl-http3-wolfssl:5.7.0)
|
|
结果摘要:
命令成功执行并返回了Google的首页HTML内容,而没有触发预期的证书固定验证错误。这证明了当 -k(禁用验证)与 --pinnedpubkey 一起使用时,wolfSSL后端的证书固定检查未生效。
根本原因分析
问题位于 lib/vquic/vquic-tls.c 文件中。触发固定检查的逻辑(Curl_wssl_verify_pinned)在通过配置禁用主要验证(verifyhost)时,似乎被有条件地跳过或未正确处理。与OpenSSL的实现不同,wolfSSL的QUIC包装器并未将证书固定视为一项独立的检查。
影响
此漏洞允许中间人攻击者拦截和解密流量,即使用户已明确配置了证书固定功能来防范此类攻击。
后续验证与修复确认
在报告发布后,测试了包含修复(CVE-2025-5025)的更新版本(curl 8.18.0-DEV with wolfSSL/5.8.4)。使用相同的漏洞测试命令后,客户端正确地返回了错误:
|
|
这证实了针对CVE-2025-5025漏洞的补丁已覆盖此场景,并且没有出现回归或修复不完整的情况。
报告状态
该报告被 curl 团队标记为 “Not Applicable”(不适用),因为它是一个重复报告,对应的漏洞(CVE-2025-5025)已被修复。根据项目的透明度政策,该报告已被公开披露。