cURL OCSP Stapling Verification Bug Lets Remote Users Bypass CURLOPT_SSL_VERIFYSTATUS Security Restrictions on the Target System
SecurityTracker Alert ID: 1037871|
SecurityTracker URL: http://securitytracker.com/id/1037871
(Links to External Site)
Date: Feb 22 2017
Host/resource access via network|
Fix Available: Yes Vendor Confirmed: Yes |
Version(s): 7.52.0 through 7.52.1|
A vulnerability was reported in cURL. A remote user can bypass security controls on the target system.|
The system check for the TLS Certificate Status Request extension does not properly process the results and will process all requests as valid. A remote user can exploit this to bypass CURLOPT_SSL_VERIFYSTATUS on the target system.
curl and libcurl are affected.
The vulnerability was introduced in commit cb4e2be7c6d42ca0780.
The vendor was notified on January 12, 2017.
Marcus Hoffmann reported this vulnerability.
A remote user can bypass CURLOPT_SSL_VERIFYSTATUS on the target system.|
The vendor has issued a fix (7.53.0).|
The vendor advisory is available at:
Vendor URL: curl.haxx.se/docs/adv_20170222.html (Links to External Site)
|Underlying OS: Linux (Any), UNIX (Any), Windows (Any)|
Source Message Contents
Date: Wed, 22 Feb 2017 00:43:28 +0100 (CET)|
Subject: [oss-security] [SECURITY ADVISORY]: curl SSL_VERIFYSTATUS ignored
Project curl Security Advisory, February 22, 2017 -
curl and libcurl support "OCSP stapling", also known as the TLS Certificate
Status Request extension (using the `CURLOPT_SSL_VERIFYSTATUS` option). When
telling curl to use this feature, it uses that TLS extension to ask for a
fresh proof of the server's certificate's validity. If the server doesn't
support the extension, or fails to provide said proof, curl is expected to
return an error.
Due to a coding mistake, the code that checks for a test success or failure,
ends up always thinking there's valid proof, even when there is none or if the
server doesn't support the TLS extension in question. Contrary to how it used
to function and contrary to how this feature is documented to work.
This could lead to users not detecting when a server's certificate goes
invalid or otherwise be mislead that the server is in a better shape than it
is in reality.
This flaw also exists in the command line tool
We are not aware of any exploit of this flaw.
The mistake happened in a large code merge for the HTTPS proxy feature (commit
cb4e2be7c6d42ca0780) and went unnoticed primarily because we have no automated
tests for this feature!
The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2017-2629 to this issue.
curl has supported this option since version 7.41.0.
This flaw exists in the following curl and libcurl versions.
- Affected versions: 7.52.0 to and including 7.52.1
- Not affected versions: < 7.52.0 and >= 7.53.0
libcurl is used by many applications, but not always advertised as such!
In version 7.53.0, the actual result of the check is properly used.
A [patch for CVE-2017-2629](https://curl.haxx.se/CVE-2017-2629.patch) is
We suggest you take one of the following actions immediately, in order of
A - Upgrade curl and libcurl to version 7.53.0
B - Apply the patch to your version and rebuild
C - Do not use the cert status feature
It was first reported to the curl project on January 12.
We contacted distros@openwall on February XX.
curl 7.53.0 was released on February 22 2017, coordinated with the publication
of this advisory.
Reported by Marcus Hoffmann