cURL libcurl 7.41.0 NTLM remote attackers connect as other users

2015.04.24
Credit: Paras Sethia
Risk: Medium
Local: No
Remote: Yes
CWE: CWE-264


CVSS Base Score: 5/10
Impact Subscore: 2.9/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: None
Integrity impact: Partial
Availability impact: None

VULNERABILITY libcurl keeps a pool of its last few connections around after use to fascilitate easy, conventient and completely transparent connection re-use for applications. When doing HTTP requests NTLM authenticated, the entire connnection becomes authenticated and not just the specific HTTP request which is otherwise how HTTP works. This makes NTLM special and a subject for special treatment in the code. With NTLM, once the connection is authenticated, no further authentication is necessary until the connection gets closed. libcurl's connection re-use logic will select an existing connection for re-use when asked to do a request, and when asked to use NTLM libcurl have to pick a connection with matching credentials only. If a connection was first setup and used for an NTLM HTTP request with a specific set of credentials, that same connection could later wrongly get re-used in a subsequent HTTP request that was made to the same host - but without having any credentials set! Since an NTLM connection was already authenticated due to how NTLM works, the subsequent request could then get sent over the wrong connection appearing as the initial user. This problem is very similar to the previous problem known as CVE-2014-0015. The main difference this time is that the subsequent request that wrongly re-use a connection doesn't ask for NTLM authentication. We are not aware of any exploits of this flaw. INFO This flaw can also affect the curl command line tool if a similar operation series is made with that. The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2015-3143 to this issue. AFFECTED VERSIONS Affected versions: from libcurl 7.10.6 to and including 7.41.0 Not affected versions: libcurl >= 7.42.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION libcurl 7.42.0 makes sure that a connection that is re-used also have to have a matching set of credentials if it would re-use a connection already using NTLM. A patch for this problem is available at: http://curl.haxx.se/CVE-2015-3143.patch From d7d1bc8f08eea1a85ab0d794bc1561659462d937 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg <daniel@haxx.se> Date: Thu, 16 Apr 2015 13:26:46 +0200 Subject: [PATCH] ConnectionExists: for NTLM re-use, require credentials to match CVE-2015-3143 Bug: http://curl.haxx.se/docs/adv_20150422A.html Reported-by: Paras Sethia --- lib/url.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/url.c b/lib/url.c index 018bb88..ee3d176 100644 --- a/lib/url.c +++ b/lib/url.c @@ -3207,11 +3207,11 @@ ConnectionExists(struct SessionHandle *data, strcmp(check->localdev, needle->localdev)) continue; } if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) || - wantNTLMhttp) { + (wantNTLMhttp || check->ntlm.state != NTLMSTATE_NONE)) { /* This protocol requires credentials per connection or is HTTP+NTLM, so verify that we're using the same name and password as well */ if(!strequal(needle->user, check->user) || !strequal(needle->passwd, check->passwd)) { /* one of them was different */ -- 2.1.4 RECOMMENDATIONS We suggest you take one of the following actions immediately, in order of preference: A - Upgrade to curl and libcurl 7.42.0 B - Apply the patch and rebuild libcurl C - Avoid using NTLM with libcurl TIME LINE It was first reported to the curl project on February 24 2015. We contacted distros@openwall on April 16th. libcurl 7.42.0 was released on April 22nd 2015, coordinated with the publication of this advisory. CREDITS Reported by Paras Sethia Thanks a lot!

References:

http://curl.haxx.se/CVE-2015-3143.patch
http://curl.haxx.se/docs/adv_20150422A.html


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top