本文详细分析了curl工具在使用--ciphers选项手动指定TLS密码套件时与HTTP/3/QUIC协议的兼容性问题,包括问题现象、复现步骤及影响范围。
TLS Cipher Misconfiguration in HTTP/3/QUIC Support
漏洞摘要
当使用curl命令的--ciphers
选项手动指定TLS密码套件时,会导致HTTP/3或QUIC功能失效。这是因为QUIC协议不依赖于TLS 1.2或更早版本定义的传统TLS密码套件,从而导致在尝试访问仅支持HTTP/3/QUIC的端点时出现连接失败。
技术细节
curl实现问题 :
curl的--ciphers
选项无法区分传统TLS协议(TLS 1.2/1.3)和QUIC协议,当指定不兼容的密码套件时会导致配置冲突。
协议不匹配 :
HTTP/3使用QUIC协议,而QUIC无法与传统TLS密码套件(通过--ciphers
选项指定)协同工作。
受影响版本
1
2
3
4
curl 8.11.1 (x86_64-pc-linux-gnu)
libcurl/8.11.1 OpenSSL/3.3.2
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP TrackMemory UnixSockets zstd
复现步骤
1
curl --disable -v --http3-only --ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:...' https://1.1.1.1/cdn-cgi/trace
错误输出
1
2
* 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
影响范围
用户在使用--ciphers
选项尝试建立HTTP/3/QUIC连接时会遭遇连接失败。
可能破坏依赖curl与HTTP/3/QUIC服务器交互的自动化脚本。
参考链接
Licensed under CC BY-NC-SA 4.0