curl默认最低TLS版本设为TLS v1.0的加密弱点分析

本文详细分析了curl将TLS v1.0设为默认最低版本的加密弱点,包括漏洞复现步骤、安全影响及开发团队回应,涉及TLS协议安全性和OpenSSL版本兼容性问题。

curl默认最低TLS版本设为TLS v1.0(加密弱点)

报告摘要

curl将TLS v1.0设置为默认最低版本,该版本已过时且易受BEAST等攻击,威胁数据完整性和保密性。此问题通过手动代码审查发现,未使用AI识别或生成本报告。

受影响版本

  • 版本:8.15.0-DEV(源自https://github.com/curl/curl源代码,审查时的提交)
  • 平台:任何使用旧版OpenSSL(未强制更严格最低版本)的curl环境
  • curl -V输出不适用,因这是源代码问题

复现步骤

  1. 查看文件./docs/libcurl/opts/CURLOPT_SSLVERSION.md。文档显示,自7.39.0版本起,使用CURL_SSLVERSION_DEFAULT选项时,curl将TLS v1.0设为默认最低版本(除非TLS库强制更高版本)。
  2. 在同一GitHub仓库中,打开文件./lib/vtls/openssl.c并搜索CURL_SSLVERSION_DEFAULT。可发现使用此默认设置时,curl未设置特定最低TLS版本,仅遵循OpenSSL库的默认值(若使用旧版OpenSSL,可能低至TLS v1.0)。
  3. 使用旧版OpenSSL(如1.1.0之前版本)构建curl,或直接使用未更改的CURL_SSLVERSION_DEFAULT设置,curl可能建立TLS v1.0连接。因TLS v1.0易受BEAST攻击,此问题会危及数据安全。
  4. 验证风险:配置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:无
  • 赏金:无
  • 账户详情:无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计