【译文】苹果 CURL 安全事件 12604 号

这个未注明的功能让 MacOS 上使用 curl 进行 CA 证书验证变得完全不可靠,而且与文档不符。它欺骗了用户。

💬 18 条评论 | /|

长话短说:苹果公司认为没问题。我(CURL 官方博客)不这么认为。

2023 年 12 月 28 日,我们的 curl 问题跟踪器上出现了bugreport 12604。我们每天都会收到很多问题报告,因此单凭这一点就足以说明问题的严重性。我们会阅读报告,进行调查,提出后续问题,看看我们能学到什么,需要解决什么。

在这个bugreport中,问题的标题非常明确:macOS 和 Linux 之间的 flag -cacert 行为不一致,提交者是Yuedong Wu(音译吴跃东)。

这位热心的提交者展示了macOS捆绑的curl版本与完全开源的curl二进制文件的不同行为。即使在同一台macOS机器上运行相同的curl版本也是如此。

curl命令行选项--cacert提供了一种方法,让用户在进行以下传输时,向curl说明这是一组需要信任的CA证书。如果 TLS 服务器无法提供可与这组证书进行验证的证书,它就会失败并返回错误。

curl中的这一特定行为和功能已存在多年(该选项于2000年12月添加到curl中)。这也是TLS的基本功能之一。

在 MacOS(苹果提供的版本)上的 curl 中使用该命令行选项时,如果提供的一组 CA 证书未能通过验证,系统似乎会退回并检查系统 CA 存储。这种二次检查既没有要求,也没有记录,坦率地说完全出乎意料。因此,当用户使用经过修剪的专用 CA 证书文件运行检查时,如果系统 CA 存储中包含可以验证服务器的证书,检查就不会失败!

这是一个安全问题,因为现在突然通过了本不该通过的证书检查。

我在 2023 年 12 月 29 日 08:30 发送给苹果公司产品安全部门的电子邮件中报告了这个安全问题。这不是一个大问题,但确实是一个问题。

苹果公司认为没有问题

2024 年 3 月 8 日,苹果产品安全部以他们的立场做出了回应:

你好

再次感谢您向我们报告此事,让我们有时间进行调查。

苹果的 OpenSSL (LibreSSL) 版本有意使用内置系统信任存储作为默认信任源。由于服务器证书可以使用内置系统信任存储成功验证,因此我们认为这不是我们平台需要解决的问题。

致以最崇高的敬意
KC
苹果产品安全

问题被关闭(close)了。

我不同意

很明显,我的想法与你不同。这个未注明的功能让 MacOS 上使用 curl 进行 CA 证书验证变得完全不可靠,而且与文档不符。它欺骗了用户。

请注意

由于这并不是我们提供的 curl 版本中的安全漏洞,因此我们并未针对此问题发布 CVE 或其他任何信息。严格来说,这个问题甚至不存在于curl代码中。它与苹果在其平台上使用的LibreSSL版本有关。

元素周期表抱枕

本文由 TecHug 分享,英文原文及文中图片来自 THE APPLE CURL SECURITY INCIDENT 12604。

共有{18}条精彩评论

很高兴你们能调查这类问题,但说实话,我会很快关闭该问题,并建议报告人与操作系统供应商跟进。

-- Yawar

在这种情况下,我认为这显然是一个与安全有关的问题,我不想在公开问题中强调这一点,所以我决定自己转发这个问题。

-- Daniel Stenberg(作者)

这是否可以被视为后门?

我的意思是,如果苹果公司被某个政府机构(假设情况)要求调查某个人的通信,他们只需在证书商店中 “伪造 “一个 CA,然后读取通信内容即可。

-- Xavier D Willis

你确定他们理解这个问题吗?答复说

> 作为默认的信任来源。

但报告的问题显然与默认值无关。而是在明确要求不要信任系统 CA 列表的情况下。

-- Kevin Cox

我已经尽我所能向苹果产品安全部门解释了这个问题。我必须假设他们有足够的智慧来理解这个问题,否则他们就会要求我澄清他们不理解的问题。当然,我不能保证他们一定理解。

与苹果公司的对话很少。他们显然不会浪费任何言语。

-- Daniel Stenberg(作者)

我在 ${giant SaaS company} 工作,我们与苹果公司也有过类似的经历。我们需要澄清他们未注明的大规模启用 Apple Pay API 的问题,我确信我们使用该 API 为他们赚取了大量美元,但他们根本不在乎,这让我们很沮丧。

-- James

> 显然,我的想法不同。这个未注明的功能让 MacOS 上使用 curl 进行 CA 证书验证变得完全不可靠,而且与文档不符。它欺骗了用户。

你应该在curl文档中添加相关说明,这样这个问题就不会再次出现了。

-- John Peterson

“这不是漏洞,后门是一种功能。

致以最崇高的敬意、
苹果”

-- Talkin

-cacert
(TLS) 告诉 curl 使用指定的证书文件来验证对等协议。文件可以包含多个CA证书。证书
证书必须是PEM格式。通常情况下文件,所以该选项通常用于更改默认文件。
…
(仅限 iOS 和 macOS)如果 curl 是针对安全传输,则支持该选项与其他SSL引擎的向后兼容性,但不应设置该选项。如果则会使用系统和用户钥匙串中的证书来验证对等方、这是验证证书链的首选方法。

-- man curl

啊,好吧,至少他们已经记录了他们一贯的 “我们觉得要做不同的事情,所以我们要这样做”,尽管很隐晦(特别是如果该注释像你的帖子暗示的那样是页脚的话;我现在不在我的机器上,否则我会自己检查)。

因此,苹果这样做是为了强制将钥匙串作为 CA 的真实来源。当然,还有更好的方法来鼓励这种模式。

-- James

哇,苹果公司肯定搞错了。这意味着你无法在 MacOS 上编写证书固定应用程序的脚本。我经常为使用公司 PKI 的内网应用程序编写脚本。

-- Jason

只需自行实施 TLS 即可。我们公司就是这么做的,因为我们想要完全控制。总共花了大约 2 周时间,还实现了各种扩展功能,比如假启动。

-- Sainan

不错不错

-- 游客

是的,没错

-- 游客

有趣的问题

-- 游客

再来一次

-- 姓名

Сколько стоит диплом высшего и среднего образования и как это происходит?

-- Xazrnne

Как быстро получить диплом магистра? Легальные способы

sitebs.ru/blogs/94542

-- Dnrtvxv

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

你也许感兴趣的: