苹果「篡改」开源软件引起开发者不满
cURL 开发者丹尼尔上周在博客中发布了一篇文章抨击苹果 “篡改” cURL 导致的 “安全问题”,这个问题最初是 2023 年 12 月有用户提交的,跟踪 ID 为 12604。
丹尼尔针对该问题进行调查后发现这并不是 cURL 的问题,而是苹果在部署中进行了一些修改,为此丹尼尔发邮件给苹果,苹果安全团队还表示有意这么干的,不需要 “修复”。
大概情况是这样的:
cURL 允许开发者使用参数 --cacert 来指定一组 CA 证书,如果 TLS 服务器无法对这组证书进行验证时,那么应该失败并返回错误。
这种特殊行为早在 2000 年 12 月就已经添加到了 cURL 中,这让开发者可以只对特定的 CA 证书进行信任,而不是信任所有有效的 CA 证书,比如防止某些 CA 因为审核不严导致签发错误证书进行劫持。
在 macOS 中,开发者仍然可以使用这个参数,但苹果的处理方法是检查系统的 CA 存储库,也就是直接验证苹果在 macOS 中指定的那组 CA 证书,而不是开发者指定的一组 CA 证书。
因此当开发者使用一组进行编辑的特定 CA 证书时,正常情况下不包含在这组 CA 证书中的证书那应该失败,但如果这个 / 这些证书位于 macOS 存储库中,那么 cURL 不会返回失败。
所以这实际上是一个安全缺陷。
针对此问题丹尼尔在 2023 年 12 月 29 日向苹果安全团队报告,这不是一个大问题,但确实是个问题。
直到 2024 年 3 月 8 日苹果才回复邮件:
Apple 版本的 OpenSSL (LibreSSL) 有意使用内置系统信任存储作为默认信任源,由于可以使用内置系统存储成功验证服务器证书,因此我们认为不需要在我们的平台中解决。
对于这个说法丹尼尔并不同意,因为实际上这篡改了 cURL,这个未记录的功能使得 macOS 用户使用 cURL 时,CA 验证完全不可靠并且与 cURL 的文档不符,这是苹果在欺骗用户。
问题是这并不是 cURL 的问题,因此丹尼尔无法发布 CVE 或任何内容,于是现在问题陷入了僵局。