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 attacker's 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 request's bytes on that new connection before enforcing
the certificate verification failure. Potentially leaking sensitive
information.
{
"cna_assigner": "curl",
"cwe_ids": [
"CWE-200"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/9xxx/CVE-2026-9545.json",
"unresolved_ranges": [
{
"extracted_events": [
{
"introduced": "8.11.0"
},
{
"fixed": "8.14.2"
},
{
"introduced": "8.15.0"
},
{
"fixed": "8.16.1"
},
{
"introduced": "8.17.0"
},
{
"fixed": "8.20.1"
}
],
"source": "AFFECTED_FIELD"
}
]
}{
"cpe": "cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:*",
"extracted_events": [
{
"introduced": "8.20.0"
},
{
"last_affected": "8.20.0"
},
{
"introduced": "8.19.0"
},
{
"last_affected": "8.19.0"
},
{
"introduced": "8.18.0"
},
{
"last_affected": "8.18.0"
},
{
"introduced": "8.17.0"
},
{
"last_affected": "8.17.0"
},
{
"introduced": "8.16.0"
},
{
"last_affected": "8.16.0"
},
{
"introduced": "8.15.0"
},
{
"last_affected": "8.15.0"
},
{
"introduced": "8.14.1"
},
{
"last_affected": "8.14.1"
},
{
"introduced": "8.14.0"
},
{
"last_affected": "8.14.0"
},
{
"introduced": "8.13.0"
},
{
"last_affected": "8.13.0"
},
{
"introduced": "8.12.1"
},
{
"last_affected": "8.12.1"
},
{
"introduced": "8.12.0"
},
{
"last_affected": "8.12.0"
},
{
"introduced": "8.11.1"
},
{
"last_affected": "8.11.1"
},
{
"introduced": "8.11.0"
},
{
"last_affected": "8.11.0"
},
{
"fixed": "8.21.0"
}
],
"source": [
"AFFECTED_FIELD",
"CPE_RANGE"
]
}