{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-5545","assignerOrgId":"2499f714-1537-4658-8207-48ae4bb9eae9","state":"PUBLISHED","assignerShortName":"curl","dateReserved":"2026-04-04T12:10:07.125Z","datePublished":"2026-05-13T08:27:26.065Z","dateUpdated":"2026-09-15T06:02:59.285Z"},"containers":{"cna":{"providerMetadata":{"orgId":"2499f714-1537-4658-8207-48ae4bb9eae9","shortName":"curl","dateUpdated":"2026-09-15T06:02:59.285Z"},"title":"wrong reuse of HTTP Negotiate connection","descriptions":[{"lang":"en","value":"libcurl might in some circumstances reuse the wrong connection when asked to\ndo an authenticated HTTP(S) request after a Negotiate-authenticated one, when\nboth use the same host.\n\nlibcurl features a pool of recent connections so that subsequent requests can\nreuse an existing connection to avoid overhead.\n\nWhen reusing a connection a range of criteria must be met. Due to a logical\nerror in the code, a request that was issued by an application could\nwrongfully reuse an existing connection to the same server that was\nauthenticated using different credentials.\n\nAn application that first uses Negotiate authentication to a server with\n`user1:password1` and then does another operation to the same server asking\nfor any authentication method but for `user2:password2` (while the previous\nconnection is still alive) - the second request gets confused and wrongly\nreuses the same connection and sends the new request over that connection\nthinking it uses a mix of user1's and user2's credentials when it is in fact\nstill using the connection authenticated for user1..."}],"affected":[{"vendor":"curl","product":"curl","versions":[{"version":"7.10.6","status":"affected","versionType":"semver","lessThan":"8.14.2"},{"version":"8.15.0","status":"affected","versionType":"semver","lessThan":"8.16.1"},{"version":"8.17.0","status":"affected","versionType":"semver","lessThan":"8.20.0"}],"defaultStatus":"unaffected"},{"vendor":"curl","product":"curl","versions":[{"version":"e56ae1426cb7a0a4a427cf8d6099a821fdaae428","status":"affected","versionType":"git","lessThan":"33e43985b8f3b9e66691d06e70be0395849856cd"}],"defaultStatus":"unaffected","repo":"https://github.com/curl/curl.git"},{"vendor":"curl","product":"curl","versions":[{"version":"8.19.0","status":"affected"},{"version":"8.18.0","status":"affected"},{"version":"8.17.0","status":"affected"},{"version":"8.16.0","status":"affected"},{"version":"8.15.0","status":"affected"},{"version":"8.14.1","status":"affected"},{"version":"8.14.0","status":"affected"},{"version":"8.13.0","status":"affected"},{"version":"8.12.1","status":"affected"},{"version":"8.12.0","status":"affected"},{"version":"8.11.1","status":"affected"},{"version":"8.11.0","status":"affected"},{"version":"8.10.1","status":"affected"},{"version":"8.10.0","status":"affected"},{"version":"8.9.1","status":"affected"},{"version":"8.9.0","status":"affected"},{"version":"8.8.0","status":"affected"},{"version":"8.7.1","status":"affected"},{"version":"8.7.0","status":"affected"},{"version":"8.6.0","status":"affected"},{"version":"8.5.0","status":"affected"},{"version":"8.4.0","status":"affected"},{"version":"8.3.0","status":"affected"},{"version":"8.2.1","status":"affected"},{"version":"8.2.0","status":"affected"},{"version":"8.1.2","status":"affected"},{"version":"8.1.1","status":"affected"},{"version":"8.1.0","status":"affected"},{"version":"8.0.1","status":"affected"},{"version":"8.0.0","status":"affected"},{"version":"7.88.1","status":"affected"},{"version":"7.88.0","status":"affected"},{"version":"7.87.0","status":"affected"},{"version":"7.86.0","status":"affected"},{"version":"7.85.0","status":"affected"},{"version":"7.84.0","status":"affected"},{"version":"7.83.1","status":"affected"},{"version":"7.83.0","status":"affected"},{"version":"7.82.0","status":"affected"},{"version":"7.81.0","status":"affected"},{"version":"7.80.0","status":"affected"},{"version":"7.79.1","status":"affected"},{"version":"7.79.0","status":"affected"},{"version":"7.78.0","status":"affected"},{"version":"7.77.0","status":"affected"},{"version":"7.76.1","status":"affected"},{"version":"7.76.0","status":"affected"},{"version":"7.75.0","status":"affected"},{"version":"7.74.0","status":"affected"},{"version":"7.73.0","status":"affected"},{"version":"7.72.0","status":"affected"},{"version":"7.71.1","status":"affected"},{"version":"7.71.0","status":"affected"},{"version":"7.70.0","status":"affected"},{"version":"7.69.1","status":"affected"},{"version":"7.69.0","status":"affected"},{"version":"7.68.0","status":"affected"},{"version":"7.67.0","status":"affected"},{"version":"7.66.0","status":"affected"},{"version":"7.65.3","status":"affected"},{"version":"7.65.2","status":"affected"},{"version":"7.65.1","status":"affected"},{"version":"7.65.0","status":"affected"},{"version":"7.64.1","status":"affected"},{"version":"7.64.0","status":"affected"},{"version":"7.63.0","status":"affected"},{"version":"7.62.0","status":"affected"},{"version":"7.61.1","status":"affected"},{"version":"7.61.0","status":"affected"},{"version":"7.60.0","status":"affected"},{"version":"7.59.0","status":"affected"},{"version":"7.58.0","status":"affected"},{"version":"7.57.0","status":"affected"},{"version":"7.56.1","status":"affected"},{"version":"7.56.0","status":"affected"},{"version":"7.55.1","status":"affected"},{"version":"7.55.0","status":"affected"},{"version":"7.54.1","status":"affected"},{"version":"7.54.0","status":"affected"},{"version":"7.53.1","status":"affected"},{"version":"7.53.0","status":"affected"},{"version":"7.52.1","status":"affected"},{"version":"7.52.0","status":"affected"},{"version":"7.51.0","status":"affected"},{"version":"7.50.3","status":"affected"},{"version":"7.50.2","status":"affected"},{"version":"7.50.1","status":"affected"},{"version":"7.50.0","status":"affected"},{"version":"7.49.1","status":"affected"},{"version":"7.49.0","status":"affected"},{"version":"7.48.0","status":"affected"},{"version":"7.47.1","status":"affected"},{"version":"7.47.0","status":"affected"},{"version":"7.46.0","status":"affected"},{"version":"7.45.0","status":"affected"},{"version":"7.44.0","status":"affected"},{"version":"7.43.0","status":"affected"},{"version":"7.42.1","status":"affected"},{"version":"7.42.0","status":"affected"},{"version":"7.41.0","status":"affected"},{"version":"7.40.0","status":"affected"},{"version":"7.39.0","status":"affected"},{"version":"7.38.0","status":"affected"},{"version":"7.37.1","status":"affected"},{"version":"7.37.0","status":"affected"},{"version":"7.36.0","status":"affected"},{"version":"7.35.0","status":"affected"},{"version":"7.34.0","status":"affected"},{"version":"7.33.0","status":"affected"},{"version":"7.32.0","status":"affected"},{"version":"7.31.0","status":"affected"},{"version":"7.30.0","status":"affected"},{"version":"7.29.0","status":"affected"},{"version":"7.28.1","status":"affected"},{"version":"7.28.0","status":"affected"},{"version":"7.27.0","status":"affected"},{"version":"7.26.0","status":"affected"},{"version":"7.25.0","status":"affected"},{"version":"7.24.0","status":"affected"},{"version":"7.23.1","status":"affected"},{"version":"7.23.0","status":"affected"},{"version":"7.22.0","status":"affected"},{"version":"7.21.7","status":"affected"},{"version":"7.21.6","status":"affected"},{"version":"7.21.5","status":"affected"},{"version":"7.21.4","status":"affected"},{"version":"7.21.3","status":"affected"},{"version":"7.21.2","status":"affected"},{"version":"7.21.1","status":"affected"},{"version":"7.21.0","status":"affected"},{"version":"7.20.1","status":"affected"},{"version":"7.20.0","status":"affected"},{"version":"7.19.7","status":"affected"},{"version":"7.19.6","status":"affected"},{"version":"7.19.5","status":"affected"},{"version":"7.19.4","status":"affected"},{"version":"7.19.3","status":"affected"},{"version":"7.19.2","status":"affected"},{"version":"7.19.1","status":"affected"},{"version":"7.19.0","status":"affected"},{"version":"7.18.2","status":"affected"},{"version":"7.18.1","status":"affected"},{"version":"7.18.0","status":"affected"},{"version":"7.17.1","status":"affected"},{"version":"7.17.0","status":"affected"},{"version":"7.16.4","status":"affected"},{"version":"7.16.3","status":"affected"},{"version":"7.16.2","status":"affected"},{"version":"7.16.1","status":"affected"},{"version":"7.16.0","status":"affected"},{"version":"7.15.5","status":"affected"},{"version":"7.15.4","status":"affected"},{"version":"7.15.3","status":"affected"},{"version":"7.15.2","status":"affected"},{"version":"7.15.1","status":"affected"},{"version":"7.15.0","status":"affected"},{"version":"7.14.1","status":"affected"},{"version":"7.14.0","status":"affected"},{"version":"7.13.2","status":"affected"},{"version":"7.13.1","status":"affected"},{"version":"7.13.0","status":"affected"},{"version":"7.12.3","status":"affected"},{"version":"7.12.2","status":"affected"},{"version":"7.12.1","status":"affected"},{"version":"7.12.0","status":"affected"},{"version":"7.11.2","status":"affected"},{"version":"7.11.1","status":"affected"},{"version":"7.11.0","status":"affected"},{"version":"7.10.8","status":"affected"},{"version":"7.10.7","status":"affected"},{"version":"7.10.6","status":"affected"}],"defaultStatus":"unaffected"}],"references":[{"url":"https://curl.se/docs/CVE-2026-5545.json"},{"url":"https://curl.se/docs/CVE-2026-5545.html"},{"url":"https://hackerone.com/reports/3642555"}],"x_osv":{"schema_version":"1.5.0","id":"CURL-CVE-2026-5545","aliases":["CVE-2026-5545"],"summary":"wrong reuse of HTTP Negotiate connection","modified":"2026-09-07T10:34:51.00Z","database_specific":{"package":"curl","affects":"both","URL":"https://curl.se/docs/CVE-2026-5545.json","www":"https://curl.se/docs/CVE-2026-5545.html","issue":"https://hackerone.com/reports/3642555","CWE":{"id":"CWE-305","desc":"Authentication Bypass by Primary Weakness"},"last_affected":"8.19.0","severity":"Medium"},"published":"2026-04-29T08:00:00.00Z","affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.10.6"},{"fixed":"8.14.2"},{"introduced":"8.15.0"},{"fixed":"8.16.1"},{"introduced":"8.17.0"},{"fixed":"8.20.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"e56ae1426cb7a0a4a427cf8d6099a821fdaae428"},{"fixed":"33e43985b8f3b9e66691d06e70be0395849856cd"}]}],"versions":["8.19.0","8.18.0","8.17.0","8.16.0","8.15.0","8.14.1","8.14.0","8.13.0","8.12.1","8.12.0","8.11.1","8.11.0","8.10.1","8.10.0","8.9.1","8.9.0","8.8.0","8.7.1","8.7.0","8.6.0","8.5.0","8.4.0","8.3.0","8.2.1","8.2.0","8.1.2","8.1.1","8.1.0","8.0.1","8.0.0","7.88.1","7.88.0","7.87.0","7.86.0","7.85.0","7.84.0","7.83.1","7.83.0","7.82.0","7.81.0","7.80.0","7.79.1","7.79.0","7.78.0","7.77.0","7.76.1","7.76.0","7.75.0","7.74.0","7.73.0","7.72.0","7.71.1","7.71.0","7.70.0","7.69.1","7.69.0","7.68.0","7.67.0","7.66.0","7.65.3","7.65.2","7.65.1","7.65.0","7.64.1","7.64.0","7.63.0","7.62.0","7.61.1","7.61.0","7.60.0","7.59.0","7.58.0","7.57.0","7.56.1","7.56.0","7.55.1","7.55.0","7.54.1","7.54.0","7.53.1","7.53.0","7.52.1","7.52.0","7.51.0","7.50.3","7.50.2","7.50.1","7.50.0","7.49.1","7.49.0","7.48.0","7.47.1","7.47.0","7.46.0","7.45.0","7.44.0","7.43.0","7.42.1","7.42.0","7.41.0","7.40.0","7.39.0","7.38.0","7.37.1","7.37.0","7.36.0","7.35.0","7.34.0","7.33.0","7.32.0","7.31.0","7.30.0","7.29.0","7.28.1","7.28.0","7.27.0","7.26.0","7.25.0","7.24.0","7.23.1","7.23.0","7.22.0","7.21.7","7.21.6","7.21.5","7.21.4","7.21.3","7.21.2","7.21.1","7.21.0","7.20.1","7.20.0","7.19.7","7.19.6","7.19.5","7.19.4","7.19.3","7.19.2","7.19.1","7.19.0","7.18.2","7.18.1","7.18.0","7.17.1","7.17.0","7.16.4","7.16.3","7.16.2","7.16.1","7.16.0","7.15.5","7.15.4","7.15.3","7.15.2","7.15.1","7.15.0","7.14.1","7.14.0","7.13.2","7.13.1","7.13.0","7.12.3","7.12.2","7.12.1","7.12.0","7.11.2","7.11.1","7.11.0","7.10.8","7.10.7","7.10.6"]}],"credits":[{"name":"Quac Tran and Ngoc Hieu","type":"finder"},{"name":"Stefan Eissing","type":"remediation developer"}],"details":"libcurl might in some circumstances reuse the wrong connection when asked to\ndo an authenticated HTTP(S) request after a Negotiate-authenticated one, when\nboth use the same host.\n\nlibcurl features a pool of recent connections so that subsequent requests can\nreuse an existing connection to avoid overhead.\n\nWhen reusing a connection a range of criteria must be met. Due to a logical\nerror in the code, a request that was issued by an application could\nwrongfully reuse an existing connection to the same server that was\nauthenticated using different credentials.\n\nAn application that first uses Negotiate authentication to a server with\n`user1:password1` and then does another operation to the same server asking\nfor any authentication method but for `user2:password2` (while the previous\nconnection is still alive) - the second request gets confused and wrongly\nreuses the same connection and sends the new request over that connection\nthinking it uses a mix of user1's and user2's credentials when it is in fact\nstill using the connection authenticated for user1..."},"problemTypes":[{"descriptions":[{"lang":"en","description":"Authentication Bypass by Primary Weakness","cweId":"CWE-305","type":"CWE"}]}],"credits":[{"lang":"en","value":"Quac Tran and Ngoc Hieu","type":"finder"},{"lang":"en","value":"Stefan Eissing","type":"remediation developer"}],"x_generator":{"engine":"cvelib 1.8.0"}},"adp":[{"references":[{"url":"https://hackerone.com/reports/3642555","tags":["exploit"]}],"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":6.5,"attackVector":"NETWORK","baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"HIGH","availabilityImpact":"NONE","privilegesRequired":"NONE","confidentialityImpact":"LOW"}},{"other":{"type":"ssvc","content":{"timestamp":"2026-05-13T17:46:36.115262Z","id":"CVE-2026-5545","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2026-05-13T17:46:40.830Z"}}]}}