Loading HuntDB...

TLS Cipher Misconfiguration in HTTP/3/QUIC Support

C
curl
Submitted None
Reported by zzq1015

Vulnerability Details

Technical details and impact analysis

## Summary: This vulnerability occurs when the `--ciphers` option is used with the `curl` command to manually specify TLS cipher suites. HTTP/3 or QUIC fails to function in this scenario because QUIC does not rely on traditional TLS cipher suites defined for TLS 1.2 or earlier. Consequently, using the `--ciphers` option causes connection failures when attempting to access endpoints that exclusively support HTTP/3 or QUIC. 1. curl Implementation: The --ciphers option in curl does not distinguish between traditional TLS protocols (TLS 1.2/1.3) and QUIC, leading to configuration conflicts when specifying incompatible cipher suites. 1. Protocol Mismatch: HTTP/3 utilizes QUIC, which does not operate with traditional TLS cipher suites specified by the --ciphers option. ## Affected version ``` 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 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 ``` ## Steps to Reproduce: ``` curl --disable -v --http3-only --ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA' https://1.1.1.1/cdn-cgi/trace ``` ``` * Trying 1.1.1.1:443... * failed setting cipher list: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:D * 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:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:D ``` Even if I restrict the length of --ciphers argument, it still doesn't work. curl --disable -v --http3-only --ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256' https://1.1.1.1/cdn-cgi/trace ``` * 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 ``` ## Supporting Material/References: https://github.com/curl/curl/issues/16232 ## Impact Users attempting to use curl with the --ciphers option for HTTP/3 or QUIC connections encounter connection failures. This issue may disrupt automation or scripts relying on curl to interact with HTTP/3/QUIC servers.

Report Details

Additional information and metadata

State

Closed

Substate

Not-Applicable

Submitted