报告 #3246519 - 默认最低TLS版本设置为TLS v1.0(加密弱点)
摘要
curl将TLS v1.0设置为默认最低版本,该版本已过时且易受BEAST等攻击,威胁数据完整性和机密性。此问题通过手动代码审查发现,未使用AI识别或生成本报告。
受影响版本:8.15.0-DEV(来自https://github.com/curl/curl的源代码,审查时的提交)。平台:任何使用较旧OpenSSL版本(未强制更严格最低版本)的curl。
复现步骤
- 查看文件
./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版本(如1.1.0之前),这可能低至TLS v1.0。 - 如果您使用默认设置为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链接上的敏感信息面临风险,尤其对于不了解此默认设置的用户。
时间线
- 10天前:monkey_dee 向curl提交报告。
- 10天前:bagder(curl员工)回复:感谢报告,将调查并尽快回复。
- 10天前:jimfuller2024(curl员工)评论:使用旧OpenSSL时可能更有问题;2025年不应使用TLS 1.0。问题在于curl是否应保护用户免于此行为,或在文档中突出“不要这样做”。
- 10天前:jimfuller2024 补充:不认为这是curl的安全问题;使用十年旧OpenSSL版本构建curl的用户不应惊讶其有严重安全问题。TLSv1有BEAST/POODLE问题且无好加密算法,多数浏览器/OS已禁用它。有时无法持续向后移植。
- 10天前:bagder 评论:这是文档化行为;非漏洞。使用已终止支持的旧TLS库版本肯定带来更严重问题。可讨论移除设置和使用TLSv1.0的可能性,但应公开进行以供所有人参与。
- 10天前:monkey_dee 回复:感谢快速回复。理解旧OpenSSL版本带来许多风险,但仍认为curl设置TLS v1.0为默认最低版本可能使用户陷入不安全设置,尤其在 stuck with旧库的地方。建议在curl代码中将默认最低版本提升至TLS v1.2以更安全开箱即用。愿意进一步讨论。
- 10天前:bagder 关闭报告并将状态改为“不适用”,并发布链接:https://curl.se/mail/lib-2025-07/0007.html。
- 10天前:bagder 请求披露此报告:根据项目透明政策,希望所有报告公开。
- 10天前:monkey_dee 回复:理解。感谢审查报告和考虑问题。很高兴您花时间调查并将讨论移至公共邮件列表。再次感谢回应。
- 10天前:bagder 披露此报告。
报告详情
- 报告时间:2025年7月10日 18:24 UTC
- 报告者:monkey_dee
- 报告对象:curl
- 报告ID:#3246519
- 严重性:中等(4 ~ 6.9)
- 披露时间:2025年7月10日 21:42 UTC
- 弱点:使用破损或风险加密算法
- CVE ID:无
- 赏金:无
- 账户详情:无