TLS密码套件在HTTP/3/QUIC支持中的错误配置
漏洞摘要
当使用curl命令的--ciphers
选项手动指定TLS密码套件时会出现此漏洞。在此场景下HTTP/3或QUIC无法正常工作,因为QUIC不依赖于为TLS 1.2或更早版本定义的传统TLS密码套件。因此,当尝试访问仅支持HTTP/3或QUIC的端点时,使用--ciphers
选项会导致连接失败。
技术细节
- curl实现问题 :curl中的
--ciphers
选项不会区分传统TLS协议(TLS 1.2/1.3)和QUIC,在指定不兼容密码套件时会导致配置冲突 - 协议不匹配 :HTTP/3使用QUIC协议,该协议无法使用
--ciphers
选项指定的传统TLS密码套件
受影响版本
bash
curl 8.11.1 (x86_64-pc-linux-gnu)
libcurl/8.11.1 OpenSSL/3.3.2
zlib/1.3.1 brotli/1.1.0 zstd/1.5.6
c-ares/1.34.3 libidn2/2.3.7 libpsl/0.21.5
libssh2/1.11.1 nghttp2/1.64.0 nghttp3/1.6.0
Release-Date: 2024-12-11
重现步骤
bash
curl --disable -v --http3-only --ciphers \
'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...' \
https://1.1.1.1/cdn-cgi/trace
错误输出
yaml
* Trying 1.1.1.1:443...
* failed setting cipher list: ECDHE-ECDSA-AES128-GCM-SHA256:...
* QUIC connect to 1.1.1.1 port 443 failed: Could not use specified SSL cipher
* Failed to connect to 1.1.1.1 port 443 after 0 ms: Could not use specified SSL cipher
* closing connection #0
curl: (59) failed setting cipher list: ECDHE-ECDSA-AES128-GCM-SHA256:...
影响范围
- 尝试将curl与
--ciphers
选项用于HTTP/3或QUIC连接的用户会遇到连接失败 - 此问题可能会破坏依赖curl与HTTP/3/QUIC服务器交互的自动化流程或脚本
相关参考
时间线
- 2025-02-07 22:09 UTC:zzq1015提交漏洞报告
- 2025-02-07 22:11 UTC:curl团队成员bagder请求说明安全问题细节
- 2025-02-08 07:12 UTC:团队成员jimfuller2024建议提交代码修复
- 2025-02-10 12:26 UTC:报告状态变更为"不适用"
- 2025-07-06 21:05 UTC:报告被公开披露
状态 :已披露 | 严重等级 :无评级 | CVE ID :无 | 赏金:无