Apple git 仍信任已泄露的 eMudhra 证书
Apple 的 git 仍在信任已泄露的 eMudhra 证书
2026 年 10 月 28 日
Apple 于 10 月 17 日收到关于 eMudhra 事件的通知。截至 10 月 28 日,Apple 随 macOS 分发的开发者工具(包括 git、curl 和 python3)仍然信任这些已泄露的证书。
更糟糕的是,10 月 26 日发布的 macOS 27.2 不仅没有修复该问题,反而撤销了用户手动应用的临时解决方案,导致他们再次暴露于风险之中。
与此同时,数十个其他项目(许多由志愿者维护)早在几天前就已发布了修复版本。
为什么这很重要?
任何人在这些工具建立的 HTTPS 连接中都可以实施拦截。
对于 git 而言,这意味着从 https:// 远程仓库克隆或拉取代码时,可能会接收攻击者选定的代码;推送操作可能在中途被篡改;GitHub 令牌等凭据也可能被窃取。
要检查你的 git 是否受到影响,请运行:
git ls-remote https://git-emudhra.we-have-a-problem.com/check.git
如果显示证书错误,说明你的 git 受保护。如果 git 列出了提交记录,则说明你的 git 受到影响。此时,你连接到 GitHub 或其他 https:// git 远程仓库的流量可能被拦截和篡改。
要查看端到端的攻击过程,请在临时目录中运行下面的命令。它会从伪装成 GitHub 的测试服务器克隆一个仓库。-c 选项仅针对此条命令将 github.com 重定向到我们的测试服务器。该服务器出示了一张由已泄露的 eMudhra 中间证书颁发机构签发的 github.com 证书。
git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/galadran/emudhra-git-test
已修补的 git 会因证书错误而拒绝连接。如果克隆成功,你将看到一个以 INTERCEPTED 开头的 README.md。
真正的攻击者无需使用这个额外选项。网络路径上的任何人在你和 GitHub 之间都可以自行重定向你的流量。
你可以用其他公共或私有仓库替换演示仓库,但请保留 fake-user@ 前缀。如果没有它,git 会将你的 GitHub 凭据发送给测试服务器。例如:
git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/Homebrew/brew
Apple 随系统自带的 curl、python3 及其他工具都受到同样影响。要检查 curl,运行:
curl https://dv-g3b-noct-emudhra.we-have-a-problem.com/ curl https://dv-g3b-aaa-noct-emudhra.we-have-a-problem.com/
如果返回证书错误,说明 curl 已受保护。
Apple 应该做什么?
Apple 已经保护了 Safari 以及其他基于其网络框架构建的应用。
Apple 需要尽快向 macOS 开发者推送修复,例如从 /etc/ssl/cert.pem 中移除受影响的根证书。
开发者在此期间能做什么?
可以手动移除受影响的根证书,主页上的 macOS 解决方案详细介绍了操作步骤。根据 Apple 的说明,macOS 系统更新可能会还原此修复,因此在 Apple 发布正式修复之前,开发者每次更新系统后都需要重新执行上述检查和解决方案。
安全团队还应评估自己的 CI 或其他构建基础设施中是否使用了 macOS runner,以及相应的供应链风险。
本站由 Dennis Jackson 发布,内容来自社区的众多贡献者。源代码托管在 GitHub,欢迎提交 PR。采用 Apache License, Version 2.0 许可。