{"id":42865,"date":"2024-04-16T23:45:38","date_gmt":"2024-04-17T03:45:38","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=42865"},"modified":"2024-04-16T23:45:38","modified_gmt":"2024-04-17T03:45:38","slug":"the-apple-curl-security-incident","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2024\/04\/16\/the-apple-curl-security-incident\/","title":{"rendered":"The Apple curl Security Incident"},"content":{"rendered":"<p><a href=\"https:\/\/daniel.haxx.se\/blog\/2024\/03\/08\/the-apple-curl-security-incident-12604\/\">Daniel Stenberg<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=39650498\">Hacker News<\/a>, <a href=\"https:\/\/apple.slashdot.org\/story\/24\/03\/23\/0526257\/apple-criticized-for-changing-the-macos-version-of-curl\">Slashdot<\/a>):<\/p>\n<blockquote cite=\"https:\/\/daniel.haxx.se\/blog\/2024\/03\/08\/the-apple-curl-security-incident-12604\/\">\n<p>The friendly reporter showed how the curl version bundled with macOS behaves differently than curl binaries built entirely from open source. Even when running the same curl version on the same macOS machine.<\/p>\n<p>The curl command line option <code><a href=\"https:\/\/curl.se\/docs\/manpage.html#--cacert\">--cacert<\/a><\/code> provides a way for the user to say to curl that <strong>this is the exact set of CA certificates to trust<\/strong> when doing the following transfer. If the TLS server cannot provide a certificate that can be verified with that set of certificates, it should fail and return error.<\/p>\n<p>[&#8230;]<\/p>\n<p>When this command line option is used with curl on macOS, <em>the version shipped by Apple<\/em>, <strong>it seems to fall back and checks the system CA store in case the provided set of CA certs fail the verification<\/strong>.  A <em>secondary check<\/em> that was not asked for,  is not documented and plain frankly comes completely by surprise.<\/p>\n<p>[&#8230;]<\/p>\n<p>This is a security problem because now<strong> suddenly certificate checks pass that should not pass.<\/strong><\/p>\n<\/blockquote>\n<p>Yet another case where Apple&rsquo;s security team doesn&rsquo;t agree about what constitutes a security issue.<\/p>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/02\/19\/reporting-a-full-disk-access-bug-to-apple\/\">Reporting a Full Disk Access Bug to Apple<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/02\/17\/apple-ssd-benchmarks-and-f_fullsync\/\">Apple SSD Benchmarks and F_FULLSYNC<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Daniel Stenberg (Hacker News, Slashdot): The friendly reporter showed how the curl version bundled with macOS behaves differently than curl binaries built entirely from open source. Even when running the same curl version on the same macOS machine. The curl command line option --cacert provides a way for the user to say to curl that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2024-04-17T03:45:41Z","apple_news_api_id":"c6b04f98-da3e-4b19-ba61-7ce5e19529b6","apple_news_api_modified_at":"2024-04-17T03:45:41Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AxrBPmNo-Sxm6YXzl4ZUptg","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1506,30,2385,991,179,48,581],"class_list":["post-42865","post","type-post","status-publish","format-standard","hentry","category-technology","tag-curl","tag-mac","tag-macos-14-sonoma","tag-open-source-software","tag-openssl","tag-security","tag-ssltls"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/42865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=42865"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/42865\/revisions"}],"predecessor-version":[{"id":42866,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/42865\/revisions\/42866"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=42865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=42865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=42865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}