CVE-2013-6422
cert name check ignore with GnuTLS
Project curl Security Advisory, December 17th 2013 Permalink
VULNERABILITY
(This issue is almost identical to the one named CVE-2013-4545, but this problem affects a different SSL backend.)
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 skipped 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.
INFO
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2013-6422 to this issue.
CWE-297: Improper Validation of Certificate with Host Mismatch
Severity: Medium
AFFECTED VERSIONS
This flaw only exists in the TLS backend that uses GnuTLS. If libcurl is built with another TLS backend, it is not affected.
- Affected versions: from libcurl 7.21.4 to and including 7.33.0
- Not affected versions: libcurl < 7.21.4 and >= 7.34.0
libcurl is used by many applications, but not always advertised as such!
SOLUTION
libcurl 7.34.0 makes sure that both options independently cause the operation to fail unless the criteria is fulfilled.
RECOMMENDATIONS
We suggest you take one of the following actions immediately, in order of preference:
A - Upgrade to curl and libcurl 7.34.0
B - Apply the patch and rebuild libcurl
C - Make sure CURLOPT_SSL_VERIFYPEER
is not disabled
D - Build libcurl with another TLS backend than GnuTLS
TIMELINE
It was reported to the curl project on November 29th 2013. We contacted distros@openwall on December 3rd.
libcurl 7.34.0 was released on December 17th 2013, coordinated with the publication of this advisory.
CREDITS
- Reported-by: Marc Deslauriers
- Patched-by: Daniel Stenberg
Thanks a lot!