阿里安全揭示:恶意邮件可致macOS/iOS瞬间瘫痪!畸形证书发现密码库新漏洞
一封加密邮件,阿里安全就能让macOS/iOS系统瞬间死机 ?揭示畸形
这并非科幻情节,而是恶意阿里安全最新研究成果揭示的真实攻击 。
为了有效提防这种攻击,邮件阿里安全与美国印第安纳大学伯明顿分校联合探索并发现了一项用于检测密码算法库中潜在的可致库新DoS(Denial-of-Service,拒绝服务)类安全问题的瞬间攻击向量——畸形X.509证书 ,并围绕该向量展开了一系列针对密码算法库中存在的瘫痪相关问题的研究工作 。
此成果已发表于USENIX Security’25会议,证书且已获得“黑客界奥斯卡” Pwnie Awards提名。发现

借助畸形X.509证书 ,密码研究者在六款主流开源密码算法库 :OpenSSL、模板下载漏洞Botan、阿里安全Bouncy Castle 、揭示畸形Crypto++、恶意GnuTLS和phpseclib,邮件以及一款专为Apple生态设计的密码库Security进行了实验,共计发现了18个新CVE漏洞,并识别出了12个已知的CVE漏洞。

X.509数字证书是网络世界的“身份证”
随着互联网的普及与广泛应用 ,网络安全问题日益突出 。为了确保网络通信的安全性与可靠性,服务器租用数字证书成为保障身份认证和数据安全的重要手段 。
数字证书就像是网络世界中的“身份证” ,它由可信的第三方机构(称为证书颁发机构,CA)签发,用于验证通信双方的身份,并确保信息在传输过程中不被篡改 。
目前,X.509是国际上最广泛采用的数字证书标准之一 。它定义了证书的免费模板基本结构和内容 ,包括主体信息 、公钥 、签名算法、有效期等字段,并支持证书链验证机制 ,从而构建起一个可信赖的公钥基础设施(PKI) 。
不仅如此 ,X.509证书也已成为现代网络安全体系的基础组成部分,被应用于多种协议(如 TLS 、S/MIME)中 ,以实现通信安全 。现代操作系统(如macOS/iOS)也使用X.509证书进行签名验证,从而确保应用程序的香港云服务器真实性和完整性 。
尽管X.509证书为网络安全提供了重要支撑,但其处理过程本身也可能成为攻击者的目标。
为了解决上述安全问题,研究人员重点关注了一种借助畸形X.509证书发起远程DoS攻击(包含CPU资源耗尽、内存耗尽 、Crash等类型)的攻击形式 。
在证书解析、证书链验证等环节中,若密码算法库的代码实现存在缺陷 ,攻击者便可据此构造出畸形证书 ,使得目标系统在处理证书的过程中触发DoS类漏洞 ,源码库从而对其可用性造成影响 。
对于一个开启双向TLS认证的HTTPS网站而言,攻击者可以在握手环节中通过向服务器发送畸形证书使得服务器因资源耗尽而瘫痪,继而使得其他用户无法再访问该网站。
对于操作系统而言 ,攻击者可通过发送包含恶意证书的邮件(例如针对macOS/iOSS下的S/MIME邮件攻击,该形式被单独命名为Banana Mail攻击)等手段,耗尽用户系统处理证书进程的资源,导致其无响应 。
这继而使得系统中的其他应用程序因无法正常验证签名而被阻止执行。此类问题对实际应用场景构成了实质性的源码下载威胁 。
通过畸形X.509证书解决Dos类问题
密码学相关的API往往设计复杂,而许多开发人员对密码学知识的掌握又相对匮乏,二者之间形成的矛盾使得密码学API误用问题在实践中频频发生,这也促使现有的研究工作多围绕如何更好地消除密码学API误用问题而展开。
然而 ,即使用户严格遵守了使用规范并正确地调用了某个密码库中的API,安全风险仍然可能由该API本身实现中的安全问题引入 。
目前关于密码学实现中安全问题的研究,主要集中在CIA三元组(机密性、完整性和可用性)中的机密性(如侧信道攻击)和完整性(如哈希碰撞)方面 ,而对可用性问题的关注较少 。
这是因为在设计层面 ,密码学对数据机密性和完整性的保障作用更为显著 ,相比之下,其对数据可用性的贡献则相对较小 。因此 ,许多研究工作也会预设密码学库中可以用于分析可用性安全问题(如DoS攻击)的场景也较为有限 。
然而,研究团队注意到,出于以下两个特性,密码库相较于其他类型的项目 ,实际上往往更容易受到DoS类攻击的影响:
1、密码库的实现中经常会涉及“大数”运算(例如涉及一个1024比特的素数的有限域上的运算) ,这类运算及其数量级在非密码学项目中较为少见 。
2、密码库的实现中经常会涉及处理各种的数据类型(如ASN.1)和编码规则(如DER编码),这些方案的设计往往较为复杂 ,在实现过程中很容易考虑不周全。
为了进一步验证这一观察,研究团队开展了一项针对多款密码算法库中易受DoS攻击影响的代码实现的系统性的分析工作 ,并在这一过程中论证了使用畸形X.509证书作为攻击向量来利用和检测密码算法库中DoS类问题的可行性。
该工作的主要贡献包括以下三点 :
系统性分析与新发现:他们进行了首个针对密码算法库中易受DoS攻击实现的系统性分析工作。在这一过程中,他们发现了三种新的DoS类安全风险 ,并揭示了一种通用的攻击向量——畸形X.509证书,以利用本研究中总结出的共计10种典型风险所关联的DoS漏洞。
自动化工具开发+漏洞挖掘与利用 :他们开发了一款名为X.509DoSTool的自动化工具 ,可用于快速生成特定畸形证书并检测加密库相应实现中的DoS漏洞 。利用该工具 ,他们成功发掘了18个新漏洞 ,并识别出了12个已知漏洞。同时,他们基于这些漏洞在实际场景中进行了验证 ,并在macOS/iOS平台上发现了新的远程漏洞利用方法 。
威胁建模与缓解策略:通过威胁建模和实验结果,他们展示了X.509DoS在现实世界中是一种广泛存在但先前却缺乏足够研究的实际威胁。在此基础上,他们进一步分析了X.509DoS攻击的根本原因,并提出了可行的缓解策略,以帮助开发人员增强其系统的安全性。
该部分内容详见论文中的第1节。此外 ,为了更好地理解后续章节的内容 ,建议读者参考论文第2节中的背景知识介绍 ,以获取对椭圆曲线中的数学部分、ASN.1和X.509等内容的进一步了解 。
威胁模型
研究团队的攻击模型主要建立在针对证书的解析或针对证书链的验证先于签名验证这一基本事实之上 ,这一前提确保了攻击者可以直接修改证书或证书链 ,而无需获取颁发者的私钥进行重新签名。
因此,任何使用了密码算法库中存在代码实现漏洞的与X.509相关的API、并尝试处理来自不可信外部源的证书的项目,理论上都存在受到X.509DoS攻击的可能性。
鉴于X.509证书在实践中的广泛应用,他们以TLS握手和App验签两个场景来对威胁模型做进一步说明:
一个典型的TLS v1.2握手过程的示意图如图1所示:

在这一过程中 ,X.509DoS攻击的威胁主要来自于以下两个步骤:
步骤3:攻击者可以饰演一个恶意的服务器 ,并向客户端发送精心构造的证书或证书链 。
步骤7:攻击者可以饰演一个恶意的客户端,并向服务器发送精心构造的证书或证书链(需开启双向TLS握手)。
如果客户端或服务器使用了存在漏洞的第三方库实现来处理证书 ,则有可能成为DoS攻击的受害者。在HTTPS场景下,这通常表现为服务器上搭建的网站无法访问,或者客户端浏览器无法正常运行 。
为了确保应用程序来自可信的发布者并且在发布后未被篡改,现代操作系统(如macOS/iOS)通常采用签名验证的方式来保证应用程序的真实性和完整性 。
这一过程包括基于系统内置的可信根证书列表对应用程序的证书进行验证,并从证书中提取公钥来验证应用程序的签名,继而决定该应用程序后续是否应该被启动或阻止 。
在操作系统中,上述证书的验证和管理通常由一个特定的系统进程处理。如果这一进程的涉及证书处理的代码实现中存在DoS漏洞,该进程在处理攻击者构造的畸形证书后 ,就可能会因资源耗尽等问题而陷入未响应。
此时,后续发起的同其他应用程序签名验证相关请求同样无法被该进程处理,继而表现为系统内所有应用程序无法正常启动,并且随着资源的逐步耗尽,最终表现为整个操作系统的瘫痪 。
针对这两类场景 ,他们均在实验环节以发现的具体CVE漏洞作为case study进行了攻击实例的演示,请参见实验结果部分的论述。
安全分析与利用
根据DoS风险存在于密码库中模块位置的不同,研究人员将典型的DoS风险分为了数学模块、ASN.1模块和X.509模块三类 :
数学模块 :密码算法的实现依赖底层数学运算的实现,例如对于采用ECDSA签名的X.509证书而言 ,在解析公钥和使用公钥验签时会引入有限域上的椭圆曲线的基础运算的实现(如点加运算 、倍点运算等操作会用到F_p或F{ 2^m}上的运算等) ,这些运算的实现是一类容易引入DoS风险的典型实现。
ASN.1模块