curl默认最低TLS版本设置为TLS v1.0(加密弱点)
报告摘要
curl将TLS v1.0设置为默认最低版本,该版本已过时且易受BEAST等攻击,对数据完整性和保密性构成风险。此问题通过手动代码审查发现,未使用AI识别问题或生成本报告。
受影响版本
- 版本:8.15.0-DEV(来自https://github.com/curl/curl的源代码,审查时的提交)
- 平台:任何使用curl且OpenSSL版本较旧未强制更严格最低版本的平台
- curl -V输出不适用,因为这是源代码问题
重现步骤
-
查看文件
./docs/libcurl/opts/CURLOPT_SSLVERSION.md
。在文档中可以看到,当使用CURL_SSLVERSION_DEFAULT
选项时,curl将TLS v1.0设置为默认最低版本(自7.39.0版本起),除非使用的TLS库强制要求更高版本。 -
在同一GitHub仓库中,打开文件
./lib/vtls/openssl.c
并搜索CURL_SSLVERSION_DEFAULT
。您会注意到,当使用此默认设置时,curl不会设置特定的最低TLS版本,而是遵循OpenSSL库的默认值。如果使用较旧版本的OpenSSL,这可能低至TLS v1.0。 -
如果您使用较旧的OpenSSL版本(如1.1.0之前的任何版本,默认使用TLS v1.0)构建curl,或者仅使用
CURL_SSLVERSION_DEFAULT
设置而不更改它,curl最终可能会使用TLS v1.0建立连接。这是一个问题,因为TLS v1.0易受BEAST等攻击,可能使您的数据面临风险。 -
想看到危险吗?设置curl连接到允许TLS v1.0的服务器,如测试服务器或使用openssl s_server。使用默认设置或旧的OpenSSL库,curl将降级到TLS v1.0。攻击者随后可以利用此弱连接窥探或篡改数据。
支持材料/参考文献
./docs/libcurl/opts/CURLOPT_SSLVERSION.md
(默认TLS v1.0最低版本的文档)./lib/vtls/openssl.c
(处理CURL_SSLVERSION_DEFAULT
而未强制更高最低版本的代码)
影响
摘要:攻击者可以使用BEAST等攻击破解TLS v1.0,窃取数据或干扰连接。如果curl使用较旧的OpenSSL库或坚持默认最低版本,就会发生这种情况。这会使HTTPS/FTPS链路上的敏感信息面临风险,特别是对于不了解此默认设置的用户。
时间线及讨论
6天前 - monkey_dee向curl提交报告
curl团队回应:
- 感谢报告,将在24小时内调查并回复
- 初始印象是使用旧版OpenSSL可能有更多问题
- 认为这是文档记录的行为,不是漏洞
- 建议在公开场合讨论移除TLSv1.0支持的可能性
讨论要点:
- 使用十年旧的OpenSSL版本构建curl不应惊讶存在严重安全问题
- 但默认设置可能使用户陷入不安全配置
- 建议在curl代码中将默认最低版本提升至TLS v1.2
报告状态:已关闭,标记为"不适用"
披露:根据项目透明政策,报告被公开披露
报告详情
- 报告时间:2025年7月10日 18:24 UTC
- 报告者:monkey_dee
- 报告对象:curl
- 严重程度:中等(4~6.9)
- 披露时间:2025年7月10日 21:42 UTC
- 弱点类型:使用破损或有风险的加密算法
- CVE ID:无
- 赏金:无