curl默认最低TLS版本设为TLS v1.0(加密弱点)
报告摘要
curl将TLS v1.0设置为默认最低版本,该版本已过时且易受BEAST等攻击,威胁数据完整性和保密性。此问题通过手动代码审查发现,未使用AI识别或生成本报告。
受影响版本
- 版本:8.15.0-DEV(源自https://github.com/curl/curl源代码,审查时的提交)
- 平台:任何使用旧版OpenSSL(未强制更严格最低版本)的curl环境
curl -V输出不适用,因这是源代码问题
复现步骤
- 查看文件
./docs/libcurl/opts/CURLOPT_SSLVERSION.md。文档显示,自7.39.0版本起,使用CURL_SSLVERSION_DEFAULT选项时,curl将TLS v1.0设为默认最低版本(除非TLS库强制更高版本)。 - 在同一GitHub仓库中,打开文件
./lib/vtls/openssl.c并搜索CURL_SSLVERSION_DEFAULT。可发现使用此默认设置时,curl未设置特定最低TLS版本,仅遵循OpenSSL库的默认值(若使用旧版OpenSSL,可能低至TLS v1.0)。 - 使用旧版OpenSSL(如1.1.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链路上的敏感信息,尤其对不了解此默认设置的用户。
团队回应与讨论
- bagder(curl员工):感谢报告,将调查并尽快回复(24小时内)。低或中严重性问题按常规发布周期修复,仅严重问题提前修复。
- jimfuller2024(curl员工):初始印象是使用旧版OpenSSL可能带来更多问题;2025年不应使用TLS 1.0。讨论焦点是curl应保护用户免于自身错误,或在文档中突出“勿这样做”。个人不视此为curl安全问题,因使用十年旧OpenSSL构建者应预期严重安全問題,但承认部分用户无选择余地。
- bagder(curl员工):此为文档化行为,非漏洞;使用已终止支持的旧版TLS库会带来更严重问题。可公开讨论禁用TLSv1.0,但需开放参与。
- monkey_dee(报告者):建议将默认最低版本提升至TLS v1.2,以增强用户开箱安全性,并愿意进一步讨论。
- bagder(curl员工):关闭报告并标记为“不适用”,将讨论移至公开邮件列表(https://curl.se/mail/lib-2025-07/0007.html),要求按项目透明政策公开披露报告。
- monkey_dee(报告者):理解并感谢审查与讨论。
报告元数据
- 报告ID:#3246519
- 报告时间:2025年7月10日18:24 UTC
- 报告者:monkey_dee
- 披露时间:2025年7月10日21:42 UTC
- 严重性:中等(4~6.9)
- 弱点:使用破损或风险加密算法
- CVE ID:无
- 赏金:无
- 账户详情:无