In this scenario, libcurl first uses a proper HTTP/3 server for the initial transfers, and when it makes a second transfer to the same site it has been replaced by the attackers impostor machine - without a valid certificate.
When libcurl returns to the hostname the second time with a cached SSL session
(CURLOPT_SSL_SESSIONID_CACHE is not disabled) and early data enabled (the
CURLSSLOPT_EARLYDATA bit is set in CURLOPT_SSL_OPTIONS), libcurl might
send off the second requests bytes on that new connection before enforcing
the certificate verification failure. Potentially leaking sensitive
information.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Curl | Haxx | 8.11.0 (including) | 8.21.0 (excluding) |
| Curl | Ubuntu | devel | * |
| Curl | Ubuntu | questing | * |
| Curl | Ubuntu | resolute | * |
| Curl | Ubuntu | upstream | * |