
eMudhra" 中间证书颁发机构(CA")的 8 个证书的私钥遭到泄露,使得攻击者能够轻而易举地伪造证书,而这些证书会被未打补丁的信任根所信任。受影响的证书中有 6 个是传输层安全(TLS")证书,并被苹果、Chrome、微软和 Mozilla 的根证书程序所信任。另外 2 个证书用于代码签名,并被微软所信任。浏览器能够通过后台撤销黑名单来阻止受影响的中间 CA,但其他大多数依赖 Web 公钥基础设施(PKI")的软件却缺乏过滤中间 CA 的机制。为了防范来自遭入侵中间 CA 的恶意证书,许多项目已经选择将其信任根中的 emSign ECC Root CA - G3 移除。这一操作对此前所有由与该根 CA 链相关的 CA 签发的合法证书造成了连带损害。
伪造的证书可能会被用于冒充网站和服务,从而实施中间人(MITM")攻击。根本问题在于,典型的根 CA 证书包中包含数百个 CA,还有数千个继承了信任关系的中间 CA。其中任何一家 CA 都可以为任何域名生成看似合法的证书。只有更新信任锚点标记该安全漏洞时,信任链才会被打破。这使得任何未打补丁的系统都处于易受攻击的状态。
目前还没有证据表明 eMudhra 遭到了入侵。私钥似乎是通过一种不安全的机制生成的。这些密钥并非由大随机数组成,而是全部为零,仅最后一个字节分别为 4、56、66、115、155、156、230 或 237。这些私钥可以轻松地通过穷举法破解,其公钥也可以据此推导出来。当发现活跃的证书颁发机构(CA)正使用与之匹配的公钥时,这些熵值不足的私钥便构成了安全隐患。在根存储库事件报告中,“Wayne” 被认定为该漏洞的发现者,他提供了一个名为 proof.zip 的文件包,并附有“这里有问题”的声明。随后,Dennis Jackson 创建了一个名为 eMudhra 中间证书颁发机构(CA)安全漏洞"汇总的网站,域名是 emudhra.we-have-a-problem.com(该网站使用 LetsEncrypt 证书)。
最初,浏览器的应对措施是使用证书撤销黑名单,这提供了一种快速、精准的机制(详见“浏览器如何处理已撤销的 SSL/TLS 证书?"”)。有许多项目依赖于浏览器的信任根(通常来自 Mozilla,因其许可条款较为宽松)。从 Mozilla cacerts 文件中提取的 CA 证书"(由 curl 项目"维护)在其他开源项目中有着广泛的应用,包括 Linux 发行版以及许多编程语言的 TLS 实现。Arch、Debian、Gentoo、Fedora 和 Ubuntu 中的 ca-certificates 软件包均已更新;Electron、Go、pip、Python certifi、rustls-webpki、Rust webpki-roots 和 uv 也已同步更新。这些更新需要一段时间才能传播到所有需要覆盖的系统,而未积极打补丁的系统(包括所有生命周期已结束的系统)仍然会存在安全漏洞。
有些编程语言和框架不再捆绑信任根,而是由开发者自行决定是依赖系统信任根还是定义自己的信任根。例如,在流行的跨平台框架 Flutter 中广泛应用的 Dart(自 2026 年 8 月发布的 3.13 版本起),已经不再包含嵌入式 cacerts 文件。使用系统信任根可以获得更快的更新,而且无需对应用程序做任何修改。开发者选择自定义根证书可以实现精细化的信任控制,不过仅限于已知属于特定系统的证书颁发机构(CA)。然而,目前仍有许多应用程序内部嵌有 cacerts 文件,它们仍然会继续信任已经遭到入侵的 CA。
证书还用于身份验证,通常作为双向 TLS(mTLS")的一部分。如果应用程序信任 Web PKI 根证书,这将为利用伪造证书的攻击开辟出另一条可能的途径。SSLMate 创始人 Andrew Ayer 指出":
目前真正应该感到害怕的,是那些在 mTLS/TLS 客户端身份验证中使用 WebPKI CA 的人。攻击者只需要生成一个证书,就能向 mTLS 端点进行身份验证——而该端点很可能并不知道中间证书已经被吊销。根本不需要实施 BGP 劫持或其他网络攻击。(没错,Chrome 正在禁止 WebPKI 中的 clientAuth EKU,但他们延长了截止日期,而且我知道,有 6 个服务实例已经将 mTLS 验证器修改为接受用 serverAuth EKU 替代 clientAuth。这意味着 WebPKI 体系下的 mTLS 应用仍然十分活跃,尽管这种实现方式本身存在安全隐患。)
证书伪造还能绕过另一种保护机制,即 DNS 证书颁发机构授权(CAA")记录。这些记录本应防止合法的证书颁发机构(CA)向存在 CAA 记录但未列出该 CA 的域名签发证书。但伪造者根本不会进行此类检查。虽然理论上,广泛地使用 CAA 记录或许能防范证书伪造,但其采用率(即便是许多热门网站)仍然很低,因此该防护体系目前仍然处于初级阶段。
如果证书透明度(Certificate Transparency")能在浏览器之外得到更广泛的应用,或许也能起到一些帮助作用。在 2011 年的 Black Hat 大会上,Moxie Marlinspike 提出了 Convergence" 计划,旨在通过一个分布式证书观测系统来判定证书的有效性,而非依赖证书颁发机构(CA)(或初期将其作为现有机制的补充)和受信任的根证书。虽然 Convergence 未能获得足够的关注,但证书透明度(RFC6962")和证书透明度 2.0 版(RFC9162")已尝试通过构建证书签发分布式账本来制定相关标准,从而实现类似的效果。客户端可以验证证书是否已经正确签发,并拒绝那些不会出现在日志中的伪造证书。
在和 Viktor Peterson 的播客访谈“后量子密码学:在时间耗尽前重新思考信任"”中,Spice Labs 创始人 David Pollak" 曾经描绘过一种末日情景。这次泄露事件便是这一场景的预演。Pollak 曾经提过这个问题,如果广受欢迎的 CA 根证书的私钥遭到泄露,可能会发生什么。随着“Q 日”的临近,这一问题依然令人担忧,因为证书颁发机构(CA)仍然依赖于使用经典算法的 RSA 和椭圆曲线密码学(ECC")密钥作为锚点。这也解释了为何到 2029 年 SSL/TLS 证书的有效期将缩短至 47 天"——届时更新证书以采用新的锚点将变得更加容易。
在“Let's Encrypt 的后量子未来"”一文中,证书透明度与后量子安全问题交织在了一起。文中提出采用默克尔树"(MTCs)作为替代方案,使用 ML-DSA-44 等后量子算法进行签名。这种机制不仅能在进行会话初始化握手时减轻网络传输负担,还能使密钥泄露的后果更易于控制。
原文链接:https://www.infoq.com/news/2026/10/emudhra-ca-compromise/"