CVE-2016-8616
Description
curl before 7.51.0 reuses connections with case-insensitive password comparison, allowing a remote attacker to reuse a connection if they know a case-insensitive version of the password.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
curl before 7.51.0 reuses connections with case-insensitive password comparison, allowing a remote attacker to reuse a connection if they know a case-insensitive version of the password.
Vulnerability
A flaw exists in curl versions prior to 7.51.0 where the connection reuse logic in the ConnectionExists() function compares user names and passwords in a case-insensitive manner. This behavior allows an attacker to potentially reuse an existing connection that was established with different case credentials, provided the attacker knows a case-insensitive version of the correct password. The vulnerability is specific to protocols that have connection-scoped credentials. [1][4]
Exploitation
An attacker must know a case-insensitive version of the password for an existing, unused connection. With that knowledge, the attacker can trigger connection reuse by using the case-insensitive variant during the connection attempt, bypassing the intended credential check. No direct network position requirement is specified beyond being able to initiate connections to the target service. [3][4]
Impact
Successful exploitation allows an attacker to reuse an authenticated connection that was originally established with proper credentials. This could lead to unauthorized access to services or actions performed as the legitimate user, depending on the protocol and application context. The impact is mitigated by the requirement that the attacker already knows a case-insensitive version of the password. [2][4]
Mitigation
Upgrade to curl version 7.51.0 or later, which was released on November 2, 2016, and includes proper case-sensitive password comparison in the connection reuse logic. Red Hat has addressed this issue in software collections (httpd24-curl updated to 7.61.1) and JBoss Core Services (Apache HTTP Server 2.4.29 packages). No workaround is mentioned in the references. The vulnerability is not listed in CISA's Known Exploited Vulnerabilities catalog. [1][2][4]
AI Insight generated on May 24, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
12- osv-coords10 versionspkg:rpm/opensuse/curl&distro=openSUSE%20Tumbleweedpkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Desktop%2012%20SP1pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Server%2011%20SP4pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP1pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2011%20SP4pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP1pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Software%20Development%20Kit%2011%20SP4pkg:rpm/suse/curl&distro=SUSE%20Linux%20Enterprise%20Software%20Development%20Kit%2012%20SP1pkg:rpm/suse/curl&distro=SUSE%20Studio%20Onsite%201.3pkg:rpm/suse/curl-openssl1&distro=SUSE%20Linux%20Enterprise%20Server%2011-SECURITY
< 7.51.0-1.1+ 9 more
- (no CPE)range: < 7.51.0-1.1
- (no CPE)range: < 7.37.0-31.1
- (no CPE)range: < 7.19.7-1.64.1
- (no CPE)range: < 7.37.0-31.1
- (no CPE)range: < 7.19.7-1.64.1
- (no CPE)range: < 7.37.0-31.1
- (no CPE)range: < 7.19.7-1.64.1
- (no CPE)range: < 7.37.0-31.1
- (no CPE)range: < 7.19.7-1.20.47.2
- (no CPE)range: < 7.19.7-1.64.1
- The Curl Project/curlv5Range: 7.51.0
Patches
21 file changed · +23 −1
docs/THANKS+23 −1 modified@@ -20,6 +20,7 @@ Adriano Meirelles Ajit Dhumale Aki Koskinen Akos Pasztory +Akshay Vernekar Alain Danteny Alan Pinstein Albert Chin-A-Young @@ -48,6 +49,7 @@ Alexander Krasnostavsky Alexander Lazic Alexander Pepper Alexander Peslyak +Alexander Sinditskiy Alexander Traud Alexander Zhuravlev Alexey Borzov @@ -77,10 +79,12 @@ Andreas Ntaflos Andreas Olsson Andreas Rieke Andreas Schuldei +Andreas Streichardt Andreas Wurf Andrei Benea Andrei Cipu Andrei Kurushin +Andrei Sedoi Andrej E Baranov Andrew Benham Andrew Biggs @@ -215,6 +219,7 @@ Chris Smowton Chris Young Christian Fillion Christian Grothoff +Christian Heimes Christian Hägele Christian Krause Christian Kurz @@ -291,6 +296,7 @@ Daniel Theron Daniel at touchtunes Darryl House Darshan Mody +Darío Hereñú Dave Dribin Dave Halbakken Dave Hamilton @@ -496,6 +502,7 @@ Greg Morse Greg Onufer Greg Pratt Greg Zavertnik +Gregory Szorc Grigory Entin Guenole Bescon Guenter Knauf @@ -817,6 +824,7 @@ Luke Call Luke Dashjr Luo Jinghua Luong Dinh Dung +Luật Nguyễn Lyndon Hill Maciej Karpiuk Maciej Puzio @@ -869,12 +877,13 @@ Marquis de Muesli Martijn Koster Martin C. Martin Martin Drasar +Martin Frodl Martin Hager Martin Hedenfalk Martin Jansen Martin Lemke Martin Skinner -Martin Storsjo +Martin Storsjö Martin Vejnár Marty Kuhrt Maruko @@ -948,6 +957,7 @@ Mike Power Mike Protts Mike Revi Miklos Nemeth +Miloš Ljumović Miroslav Franc Miroslav Spousta Mitz Wark @@ -1031,6 +1041,7 @@ Pau Garcia i Quiles Paul Donohue Paul Harrington Paul Howarth +Paul Joyce Paul Marks Paul Marquis Paul Moore @@ -1101,6 +1112,7 @@ Rafaël Carré Rainer Canavan Rainer Jung Rainer Koenig +Rainer Müller Rajesh Naganathan Rajkumar Mandal Ralf S. Engelschall @@ -1117,6 +1129,7 @@ Razvan Cojocaru Reinhard Max Reinout van Schouwen Remi Gacogne +Remo E Renato Botelho Renaud Chaillat Renaud Duhaut @@ -1145,6 +1158,7 @@ Richard Silverman Richard van den Berg Rick Jones Rick Richardson +Rider Linden Rob Crittenden Rob Davies Rob Jones @@ -1216,9 +1230,11 @@ Scott Cantor Scott Davis Scott McCreary Sean Boudreau +Sebastian Mundry Sebastian Pohlschmidt Sebastian Rasmussen Senthil Raja Velu +Sergei Kuzmin Sergei Nikulov Sergey Tatarincev Sergio Ballestrero @@ -1260,6 +1276,7 @@ Stefan Tomanek Stefan Ulrich Steinar H. Gunderson Stephan Bergmann +Stephen Brokenshire Stephen Collyer Stephen Kick Stephen More @@ -1330,6 +1347,7 @@ Tobias Stoeckmann Toby Peterson Todd A Ouska Todd Kulesza +Todd Short Todd Vierling Tom Benoist Tom Donovan @@ -1357,6 +1375,7 @@ Toni Moreno Tony Kelman Toon Verwaest Tor Arntsen +Torben Dannhauer Torsten Foertsch Toshio Kuratomi Toshiyuki Maezawa @@ -1372,6 +1391,7 @@ Ulf Samuelsson Ulrich Doehner Ulrich Telle Ulrich Zadow +Valentin David Venkat Akella Victor Snezhko Vijay Panghal @@ -1439,9 +1459,11 @@ dkjjr89 on github eXeC64 on github jveazey on github kreshano on github +lukaszgn on github marc-groundctl on github neex on github nk +nopjmp on github silveja1 on github swalkaus at yahoo.com tommink[at]post.pl
b3ee26c5df75connectionexists: use case sensitive user/password comparisons
1 file changed · +6 −6
lib/url.c+6 −6 modified@@ -3394,8 +3394,8 @@ ConnectionExists(struct Curl_easy *data, if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) { /* This protocol requires credentials per connection, so verify that we're using the same name and password as well */ - if(!strequal(needle->user, check->user) || - !strequal(needle->passwd, check->passwd)) { + if(strcmp(needle->user, check->user) || + strcmp(needle->passwd, check->passwd)) { /* one of them was different */ continue; } @@ -3455,8 +3455,8 @@ ConnectionExists(struct Curl_easy *data, possible. (Especially we must not reuse the same connection if partway through a handshake!) */ if(wantNTLMhttp) { - if(!strequal(needle->user, check->user) || - !strequal(needle->passwd, check->passwd)) + if(strcmp(needle->user, check->user) || + strcmp(needle->passwd, check->passwd)) continue; } else if(check->ntlm.state != NTLMSTATE_NONE) { @@ -3470,8 +3470,8 @@ ConnectionExists(struct Curl_easy *data, if(!check->proxyuser || !check->proxypasswd) continue; - if(!strequal(needle->proxyuser, check->proxyuser) || - !strequal(needle->proxypasswd, check->proxypasswd)) + if(strcmp(needle->proxyuser, check->proxyuser) || + strcmp(needle->proxypasswd, check->proxypasswd)) continue; } else if(check->proxyntlm.state != NTLMSTATE_NONE) {
Vulnerability mechanics
Root cause
"Case-insensitive string comparison (strequal) of user names and passwords in connection reuse logic allows a connection with case-different credentials to be incorrectly matched."
Attack vector
An attacker who knows a case-insensitive variant of the correct password can cause curl to reuse an existing authenticated connection that was established with the proper credentials [patch_id=2247604]. The `ConnectionExists()` function previously used `strequal()` (case-insensitive comparison) for user name and password checks, so a request with a password differing only in case would match an existing connection [patch_id=2247604]. This allows the attacker to bypass authentication by reusing a connection whose credentials they do not fully know.
Affected code
The vulnerability is in the `ConnectionExists()` function in `lib/url.c` [patch_id=2247604]. The function compares user names and passwords when deciding whether to reuse an existing connection for protocols that have connection-scoped credentials (PROTOPT_CREDSPERREQUEST) and for NTLM/Proxy-NTLM authentication states.
What the fix does
The patch replaces `strequal()` (case-insensitive string comparison) with `strcmp()` (case-sensitive comparison) in three code paths within `ConnectionExists()` [patch_id=2247604]. These paths handle credential-per-connection protocols, NTLM authentication, and proxy-NTLM authentication. The change ensures that only connections with exactly matching user names and passwords are reused, preventing an attacker from reusing a connection with a case-different variant of the correct password.
Preconditions
- inputThe attacker must know a case-insensitive variant of the correct password for the target connection
- configAn unused connection with proper credentials must already exist in curl's connection cache
- configThe protocol must use connection-scoped credentials (PROTOPT_CREDSPERREQUEST) or NTLM authentication
Generated on May 24, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
10- access.redhat.com/errata/RHSA-2018:2486mitrevendor-advisoryx_refsource_REDHAT
- access.redhat.com/errata/RHSA-2018:3558mitrevendor-advisoryx_refsource_REDHAT
- security.gentoo.org/glsa/201701-47mitrevendor-advisoryx_refsource_GENTOO
- www.oracle.com/technetwork/security-advisory/cpuoct2018-4428296.htmlmitrex_refsource_CONFIRM
- www.securityfocus.com/bid/94094mitrevdb-entryx_refsource_BID
- www.securitytracker.com/id/1037192mitrevdb-entryx_refsource_SECTRACK
- bugzilla.redhat.com/show_bug.cgimitrex_refsource_CONFIRM
- curl.haxx.se/CVE-2016-8616.patchmitrex_refsource_CONFIRM
- curl.haxx.se/docs/adv_20161102B.htmlmitrex_refsource_CONFIRM
- www.tenable.com/security/tns-2016-21mitrex_refsource_CONFIRM
News mentions
0No linked articles in our index yet.