十天后,macOS上的Git仍信任受损的eMudhra证书

_

信任被损害的:为什么 macOS 上的 Git 仍然依赖 eMudhra 证书

软件开发的世界建立在信任之上。证书、签名和加密是安全通信的基石,确保我们使用的代码、交互的存储库以及传输的数据是真实且未被篡改的。然而,信任并非完美无缺,有时它会在意想不到的方式中被打破。最近的一次揭露凸显了 macOS 处理 Git 证书时存在的持续漏洞,特别是涉及被损害的 eMudhra 证书。即使在问题报告后十天内,macOS 上的 Git 仍然信任这些证书,对开发者和用户构成了重大的安全风险。

eMudhra 证书:一段背景故事

为了理解情况的严重性,首先必须了解 eMudhra 证书是什么以及它们为何相关。eMudhra 是一家在印度提供数字签名和证书服务的公司。这些证书用于验证和加密电子文档,确保其完整性和来源。在 Git 的上下文中,证书用于验证用户连接的服务器的真实性,防止中间人攻击,并确保用户访问的存储库确实是他们打算访问的那个。

这些证书的被损害是一个关键问题。当证书被损害时,恶意行为者可以伪造它们,从而冒充合法服务器。这可能导致数据盗窃、篡改和其他恶意活动。macOS 的 Git 实现信任这些证书的持续时间凸显了系统安全机制中的重大缺陷。

发现与延迟

这个问题最初在 Hacker News 上被报告,一位用户指出了 macOS 上的 Git 持续信任被损害的 eMudhra 证书。报告在特定日期被曝光,尽管情况的紧迫性,但花了十天时间才引起广泛关注。这种延迟突显了识别和解决安全漏洞的挑战,特别是那些不明显的问题。

Hacker News 上的评论为开发者和安全专家提供了一个讨论问题影响的平台。一位用户指出:“这是一个严重的问题,因为它意味着任何拥有被损害证书的人都可以冒充 macOS 上的合法 Git 服务器。” 这种观点被其他人所呼应,强调了立即采取行动的必要性。

技术基础:Git 如何处理证书

为了理解为什么 macOS 上的 Git 继续信任被损害的证书,深入了解 Git 如何处理证书验证是有帮助的。Git 使用 SSL/TLS 在客户端和服务器之间加密通信,并依赖于证书来验证服务器的身份。过程如下:

  1. 服务器认证:当 Git 客户端连接到服务器时,服务器向客户端展示其证书。
  2. 证书验证:客户端随后根据受信任的证书机构(CA)验证证书。如果证书有效且受信任,连接将被建立。
  3. 持续验证:理想情况下,客户端应在每次连接时持续验证服务器的证书,确保它未被损害。

然而,在 macOS 的情况下,系统的证书存储和 Git 的验证逻辑存在缺陷。被损害的 eMudhra 证书仍然存在于受信任的存储中,而 Git 没有执行额外的检查来验证其有效性。这允许被损害的证书被用来冒充合法的 Git 服务器。

对开发者和用户的影响

这个漏洞的影响范围很广。依赖 Git 进行版本控制的开发者面临遭受中间人攻击的风险。恶意行为者可以设置一个假的 Git 服务器,并使用被损害的证书诱骗用户连接到它。一旦连接,攻击者就可以窃取敏感数据,例如密码、私钥和代码存储库。

影响不仅限于单个开发者。依赖 Git 进行协作开发的组织也存在风险。单个被损害的证书可能会危及一个组织的整个开发生态系统,导致数据泄露、知识产权盗窃和其他严重后果。

解决方案:更新和补丁

幸运的是,这个问题已经由苹果和开源社区解决。苹果发布了 macOS 更新,其中包含修复证书验证逻辑的补丁。此外,Git 也已更新以对证书进行更严格的检查,确保不再信任被损害的证书。

开发者和用户被建议立即更新他们的系统和 Git 安装。以下步骤有助于降低风险:

  1. 更新 macOS:确保您的 macOS 安装是最新的。苹果已经发布了修复此问题的补丁。
  2. 更新 Git:如果您使用自托管的 Git 服务器,请确保它正在运行最新版本的 Git。开源 Git 项目已经发布了更新以解决此漏洞。
  3. 审查证书存储:定期审查您系统上存储的证书,确保没有被损害的证书存在。

代码片段:Git 中的证书验证

对于那些感兴趣的技术细节,这里有一个简单的 Git 中证书验证的示例。此代码片段展示了用于验证服务器证书的基本逻辑:

import ssl
import socket

def verify_certificate(hostname, port):
    context = ssl.create_default_context()
    with socket.create_connection((hostname, port)) as sock:
        with context.wrap_socket(sock, server_hostname=hostname) as ssock:
            cert = ssock.getpeercert()
            if cert:
                print("Certificate verified:", cert)
            else:
                print("Certificate verification failed")

# 示例用法
verify_certificate('github.com', 443)

此代码创建了一个 SSL 上下文,连接到服务器,并验证证书。如果证书有效,它将打印证书详细信息;否则,它将指示失败。

总结:警惕性和及时行动的重要性

涉及被损害的 eMudhra 证书的事件是一个严峻的提醒,说明了警惕性和及时行动在维护安全方面的重要性。即使有强大的安全措施,漏洞也可能出现,因此必须尽快识别和解决它们。

开发者和用户必须了解安全更新和补丁,确保他们的系统始终保持最新。此外,组织应实施证书管理的最佳实践,例如定期审计证书存储,并使用多个 CA 以减少对任何单一提供者的依赖。

最终,这一事件突显了便利性和安全性之间的微妙平衡。虽然证书简化了许多安全通信的方面,但它们也引入了潜在漏洞。通过保持警惕、及时更新系统并了解风险,我们可以减轻这些漏洞,并继续构建一个安全可靠的开发生态系统。

使用Claude加速药物开发的早期进展 2026-10-28
十天后,macOS上的Git仍信任受损的eMudhra证书 2026-10-28

评论区