curl-users
SECURITY ADVISORY: libcurl cert name check ignore
Date: Fri, 15 Nov 2013 22:32:05 +0100 (CET)
libcurl cert name check ignore
==============================
Project cURL Security Advisory, November 15th 2013
http://curl.haxx.se/docs/security.html
1. VULNERABILITY
libcurl is vulnerable to a case of missing out the checking of the
certificate CN or SAN name field when the digital signature verification is
turned off.
libcurl offers two separate and independent options for verifying a server's
TLS certificate. CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST. The
first one tells libcurl to verify the trust chain using a CA cert bundle,
while the second tells libcurl to make sure that the name fields in the
server certificate meets the criteria. Both options are enabled by default.
This flaw had the effect that when an application disabled
CURLOPT_SSL_VERIFYPEER, libcurl mistakenly also disabled the
CURLOPT_SSL_VERIFYHOST check. Applications can disable
CURLOPT_SSL_VERIFYPEER and still achieve security by doing the check on its
own using other means.
The curl command line tool is not affected by this problem as it either
enables both options or disables both at the same time.
There are no known exploits available at this time.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2013-4545 to this issue.
2. AFFECTED VERSIONS
This flaw only exists in the TLS backend that uses OpenSSL. If libcurl is
built with another TLS backend, it isn't affected.
Affected versions: from libcurl 7.18.0 to and including 7.32.0
Not affected versions: libcurl before 7.18.0 and >= 7.33.0
libcurl is used by many applications, but not always advertised as such!
3. THE SOLUTION
libcurl 7.33.0 makes sure that both options independently will cause the
operation to fail unless the criteria is fulfilled.
The fix was committed, pushed and released without the full security
implications being properly realized.
4. RECOMMENDATIONS
We suggest you take one of the following actions immediately, in order of
preference:
A - Upgrade to curl and libcurl 7.33.0
B - Apply (https://github.com/bagder/curl/commit/3c3622b6) and rebuild
libcurl
C - Make sure CURLOPT_SSL_VERIFYPEER is not disabled
D - Build libcurl with another TLS backend than OpenSSL
5. TIME LINE
Vulnerability reported by Scott Cantor.
It was reported to the curl project on November 6th 2013. We contacted
distros_at_openwall on November 8th.
libcurl 7.33.0 was released on October 14th 2013, already containing this
fix.
6. CREDITS
Reported by Scott Cantor. Thanks a lot!
-- / daniel.haxx.se ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-users FAQ: http://curl.haxx.se/docs/faq.html Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2013-11-15