{"id":"CVE-2014-8151","aliases":["CURL-CVE-2014-8151","EUVD-2014-7993","GHSA-h2qh-xwfj-36gc"],"status":"published","title":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39...","description":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39.0, when using the DarwinSSL (aka SecureTransport) back-end for TLS, does not check if a cached TLS session validated the certificate when reusing the session, which allows man-in-the-middle attackers to spoof servers via a crafted certificate.","severity":{"version":"2.0","score":5.8,"vector":"AV:N/AC:M/Au:N/C:P/I:P/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.01148,"percentile":0.6706,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"published":"2015-01-08T08:00:00Z","modified":"2026-10-24T23:17:46Z","products":[{"vendor":"apple","product":"mac_os_x"},{"vendor":"haxx","product":"libcurl"}],"references":[{"url":"http://lists.apple.com/archives/security-announce/2015/Aug/msg00001.html","tags":["vendor-advisory","x_refsource_APPLE","x_transferred"]},{"url":"http://curl.haxx.se/docs/adv_20150108A.html","tags":["x_refsource_CONFIRM","x_transferred","Vendor Advisory"]},{"url":"http://kb.juniper.net/InfoCenter/index?page=content\u0026id=JSA10743","tags":["x_refsource_CONFIRM","x_transferred"]},{"url":"https://support.apple.com/kb/HT205031","tags":["x_refsource_CONFIRM","x_transferred"]},{"url":"https://security.gentoo.org/glsa/201701-47","tags":["vendor-advisory","x_refsource_GENTOO","x_transferred"]},{"url":"http://secunia.com/advisories/61925","tags":["third-party-advisory","x_refsource_SECUNIA","x_transferred"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2014-8151"},{"url":"https://github.com/advisories/GHSA-h2qh-xwfj-36gc"}],"sources":{"cve":[{"id":"CVE-2014-8151","description":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39.0, when using the DarwinSSL (aka SecureTransport) back-end for TLS, does not check if a cached TLS session validated the certificate when reusing the session, which allows man-in-the-middle attackers to spoof servers via a crafted certificate.","status":"published","published":"2015-01-15T15:00:00Z","modified":"2024-08-06T13:10:51.108Z","updated_at":"2026-11-02T14:33:43.206348Z"}],"euvd":[{"id":"EUVD-2014-7993","description":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39.0, when using the DarwinSSL (aka SecureTransport) back-end for TLS, does not check if a cached TLS session validated the certificate when reusing the session, which allows man-in-the-middle attackers to spoof servers via a crafted certificate.","status":"published","published":"2015-01-15T15:00:00Z","modified":"2024-08-06T13:10:51Z","updated_at":"2026-11-03T01:56:52.951821Z"}],"ghsa":[{"id":"GHSA-h2qh-xwfj-36gc","title":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39...","description":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39.0, when using the DarwinSSL (aka SecureTransport) back-end for TLS, does not check if a cached TLS session validated the certificate when reusing the session, which allows man-in-the-middle attackers to spoof servers via a crafted certificate.","status":"published","published":"2022-05-17T02:38:59Z","modified":"2023-01-27T05:05:35Z","updated_at":"2026-11-02T14:42:43.440689Z"}],"nvd":[{"id":"CVE-2014-8151","description":"The darwinssl_connect_step1 function in lib/vtls/curl_darwinssl.c in libcurl 7.31.0 through 7.39.0, when using the DarwinSSL (aka SecureTransport) back-end for TLS, does not check if a cached TLS session validated the certificate when reusing the session, which allows man-in-the-middle attackers to spoof servers via a crafted certificate.","status":"published","published":"2015-01-15T15:59:07.67Z","modified":"2026-06-17T00:16:23.287Z","cvss":[{"version":"2.0","score":5.8,"vector":"AV:N/AC:M/Au:N/C:P/I:P/A:N","level":"medium","assessor":"primary"}],"updated_at":"2026-11-02T14:02:58.030217Z"}],"osv":[{"id":"CURL-CVE-2014-8151","title":"Secure Transport certificate check bypass","description":"libcurl stores TLS Session IDs in its associated Session ID cache when it\nconnects to TLS servers. In subsequent connects it reuses the entry in the\ncache to resume the TLS connection faster than when doing a full TLS\nhandshake. The actual implementation for the Session ID caching varies\ndepending on the underlying TLS backend.\n\nlibcurl allows applications to switch off certificate verification in two\ndifferent ways - using `CURLOPT_SSL_VERIFYHOST` and `CURLOPT_SSL_VERIFYPEER`.\n\nWhen an application connected to a TLS server with certificate verification\ndisabled, it would store the Session ID in the cache and if then a subsequent\nconnection was made against the same host and port number, it would reuse the\nformer session and thanks to the reused session from the cache, it would skip\nthe certificate check and wrongly accept any bad certificate that could be\npresented.\n\nThe problem was that the \"key\" used for caching Session IDs did not take the\ncertificate check status into account.\n\nThis problem is specific to libcurl built to use the Secure Transport backend\nfor TLS, so it can only affect Mac and iPhone based applications.","status":"published","published":"2015-01-08T08:00:00Z","modified":"2026-10-24T23:17:46Z","updated_at":"2026-11-02T15:43:55.669514Z"}]}}
