macOS27.2仍信任私钥泄露的eMudhra证书,命令行工具成安全盲区

尽管 eMudhra 根证书私钥泄露事件已过去12天,苹果 Safari 浏览器早已吊销该证书,但 macOS 27.2 系统中 curl、git 等命令行工具仍默认信任该证书,因它们依赖静态证书文件...

互联网/IT

苹果最新发布的 macOS 27.2 系统在安全性方面存在一个显著疏漏:其内置的命令行工具(如 curl、git、Python 3、Ruby、Perl 和 OpenSSL)仍在信任私钥已公开泄露的 eMudhra 根证书——具体为 emSign ECC Root CA – G3。这一问题自 10 月上旬曝光以来,已引发广泛担忧,而距离事件披露至今已逾 12 天,eMudhra 公司自身也已宣布彻底退出数字证书业务,但 macOS 的底层工具链仍未同步更新。

若返回正常响应(而非证书错误),即表明系统仍在信任该已被废止的证书。实际测试显示,上述命令在 macOS 上可成功执行;而在已更新的 Ubuntu 系统中则明确报错,提示证书链无效。这反映出不同操作系统在证书管理策略上的关键差异。

值得注意的是,苹果并非对此毫无作为。早在 10 月 23 日,苹果就专门发布说明页面,明确指出 Safari 浏览器已通过系统证书吊销列表(CTL)及时移除了 eMudhra 相关根证书,并强调其浏览器层的安全防护已到位。然而,问题出在系统级命令行工具所依赖的独立证书存储机制:这些工具使用的是静态文件 /etc/ssl/cert.pem,该文件不会动态查询苹果的证书黑名单,也不支持在线证书状态协议(OCSP)或证书吊销列表(CRL)检查。

这意味着,即使苹果在系统层面“拉黑”了某张根证书,只要它仍存在于 /etc/ssl/cert.pem 中,curl、git 等工具就会无条件信任由其签发的所有下游证书——包括可能被用于中间人攻击(MITM)的伪造网站证书。这种设计源于 Unix/Linux 传统,旨在保证离线环境下的可用性,但在现代网络威胁环境下,已成为潜在风险点。

行业对比进一步凸显了该问题的严重性。Google、Microsoft 和 Mozilla 均已在各自平台采取紧急措施:微软于 10 月 20 日通过 Windows 更新加入证书黑名单,26 日又发布带外(out-of-band)补丁,彻底移除相关根证书;Chrome 和 Firefox 则通过其内置的证书吊销机制实时拦截风险连接。相比之下,macOS 的命令行生态仍处于“静态信任”模式,滞后于主流安全实践。

首先备份原始证书文件:

macOS 27.2 仍信任私钥泄露的 eMudhra 证书测试界面

此外,还可选择性移除 AAA Certificate Services 证书(CN=AAA Certificate Services),因其曾被 Sectigo 用作交叉签名链的一部分,不移除可能导致部分合法站点验证失败,但保留则无法完全阻断攻击路径。验证是否删除成功,可运行:

若无输出,则清理成功;若报错,可从备份恢复。

然而,该方案存在明显局限:一旦系统进行常规更新(如安装 macOS 补丁或升级至新版本),/etc/ssl/cert.pem 文件将被覆盖重置,泄露证书会再次回归。这意味着用户需反复执行清理操作,缺乏一劳永逸的解决方案。

从技术架构角度看,macOS 的这一设计反映了其对兼容性与稳定性的权衡。命令行工具链长期沿用 OpenSSL 或 LibreSSL 的默认配置,依赖本地证书包以确保在无网络连接时仍能完成 HTTPS 请求。但随着零信任安全模型的普及,静态证书信任机制正面临严峻挑战。近年来,类似事件屡见不鲜:2021 年 DigiNotar 事件、2023 年 Let’s Encrypt 中间 CA 泄露等,均暴露出根证书体系的脆弱性。权威机构如 CA/Browser Forum 已推动“强制吊销检查”标准(如 RFC 8659),要求客户端必须验证证书吊销状态,但 macOS 命令行工具尚未纳入此规范。

更深层的问题在于责任边界模糊。苹果负责系统级证书管理,而开源工具(如 curl、git)由上游社区维护,二者协同不足导致安全策略脱节。例如,Homebrew 安装的 curl 若使用系统 OpenSSL,则仍受制于 /etc/ssl/cert.pem;若使用 Homebrew 自带 OpenSSL,则可能采用不同的证书路径,造成行为不一致。这种碎片化加剧了用户排查难度。

对开发者而言,该漏洞影响尤为直接。许多 CI/CD 流水线、自动化脚本依赖 git clone 或 curl 下载资源,若目标服务器使用了被泄露私钥签发的证书(即便为测试用途),攻击者可在内网或公共 Wi-Fi 环境中实施中间人攻击,窃取凭证或注入恶意代码。尤其在企业环境中,若内部 Git 服务器曾使用 eMudhra 签发的证书,且未及时轮换,风险将持续存在。

目前尚无证据表明该漏洞已被大规模利用,但安全研究者普遍认为,公开泄露的私钥等于“无限期有效”的伪造能力。eMudhra 证书的有效期原至 2038 年,其私钥一旦落入攻击者手中,即可签发任意域名的合法-looking 证书,绕过常规浏览器警告——除非客户端主动检查吊销状态。

苹果尚未公布具体修复时间表,仅称“将在未来更新中解决”。考虑到 macOS 的年度大版本节奏(通常每年 6 月发布新版本),用户短期内仍需依赖手动干预。部分安全团队建议:在关键工作流中,显式指定可信证书路径(如 curl --cacert ~/trusted-ca.pem),或改用经 Apple System Roots 验证的工具链(如通过 Xcode Command Line Tools 安装的 git 版本,其可能链接到系统证书库)。

归根结底,这一事件揭示了操作系统安全模型中的“最后一公里”难题:当浏览器和图形界面应用已实现动态证书管控时,底层命令行生态却仍停留在静态信任时代。在 DevOps 与云原生开发日益依赖终端工具的今天,修补这一盲区已非可选项,而是基础防线的必要加固。