CVE-2026-1965
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
11/03/2026
Last modified:
11/03/2026
Description
libcurl can in some circumstances reuse the wrong connection when asked to do<br />
an Negotiate-authenticated HTTP or HTTPS request.<br />
<br />
libcurl features a pool of recent connections so that subsequent requests can<br />
reuse an existing connection to avoid overhead.<br />
<br />
When reusing a connection a range of criterion must first be met. Due to a<br />
logical error in the code, a request that was issued by an application could<br />
wrongfully reuse an existing connection to the same server that was<br />
authenticated using different credentials. One underlying reason being that<br />
Negotiate sometimes authenticates *connections* and not *requests*, contrary<br />
to how HTTP is designed to work.<br />
<br />
An application that allows Negotiate authentication to a server (that responds<br />
wanting Negotiate) with `user1:password1` and then does another operation to<br />
the same server also using Negotiate but with `user2:password2` (while the<br />
previous connection is still alive) - the second request wrongly reused the<br />
same connection and since it then sees that the Negotiate negotiation is<br />
already made, it just sends the request over that connection thinking it uses<br />
the user2 credentials when it is in fact still using the connection<br />
authenticated for user1...<br />
<br />
The set of authentication methods to use is set with `CURLOPT_HTTPAUTH`.<br />
<br />
Applications can disable libcurl&#39;s reuse of connections and thus mitigate this<br />
problem, by using one of the following libcurl options to alter how<br />
connections are or are not reused: `CURLOPT_FRESH_CONNECT`,<br />
`CURLOPT_MAXCONNECTS` and `CURLMOPT_MAX_HOST_CONNECTIONS` (if using the<br />
curl_multi API).
Impact
Base Score 3.x
6.50
Severity 3.x
MEDIUM



