阿里安全揭示:恶意邮件可致macOS/iOS瞬间瘫痪!畸形证书发现密码库新漏洞
- 2025-07-31 07:56:12
阿里安全团队 投稿
量子位 | 公众号 QbitAI
一封加密邮件,就能让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所示:

△图1.TLS v1.2握手示意图
在这一过程中,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模块:X.509证书使用ASN.1来定义其数据结构,并通过特定的编码方式(如DER或PEM)进行传输和存储。在解析一个特定的X.509证书的过程中,一个重要的步骤就是将DER编码后的ASN.1对象进行解码并同X.509证书的特定字段进行对应,这些解码过程和对不同ASN.1对象的处理过程的实现同样容易引入DoS风险。
X.509模块:除了前述的数学模块和ASN.1模块外,DoS风险也可能源自X.509证书相关功能的实现本身。在此类情况下,风险通常不再来自单个证书,而是来自于对多个证书构成的证书链进行path validation的过程(详见RFC 5280第6章)。当目标系统接收到证书链后,该验证过程往往先于签名的验证过程而被触发。
在上述分类的基础上,研究人员对每一分类中的典型运算或处理场景进行了进一步探索,图2展示了她们在本研究中分析的10种典型风险,并对每类风险(尤其是新发现的Risk-1、Risk-2和Risk-5)的漏洞原理进行了详细分析。相关内容详见论文中的第4章和附录A。
△图2.本工作中分析的10种典型DoS风险总览
此外,他们展示了如何针对某一类特定的DoS风险来构造对应的畸形X.509数字证书(如修改SubjectPublicKeyInfo结构中的某个字段,修改证书中某个OBJECT IDENTIFIER对象的DER编码后的sub-identifier的值,修改某个证书链中携带的name constraints的数量等)来触发对应的代码实现中的漏洞,即基于X.509证书的漏洞利用的手法。
对于每一种手法,他们还讨论了如何绕过常见的检查来确保漏洞的触发(如通过设置ECDSA公钥携带的椭圆曲线中的素数为模8余1来绕过计算二次剩余的简便算法),该部分内容详见论文中的第5章。
利用X.509DoSTool发现漏洞
即使有了构造证书的思路,手动去进行证书的修改和畸形证书的构造仍然是一项复杂的任务。
为了更好的辅助使用证书对密码算法库中的实现问题进行检测,研究人员开发了一款名为X.509DoSTool的自动化工具,该工具包含了Generate、Edit和Detect三个子模块,通过根据用户指定的风险类型自动化地生成对应的证书并将其作为输入传入待检测的API中执行,并根据执行结果(如Crash)和监测系统的CPU/内存资源消耗情况来反馈是否存在对应的漏洞,其示意图如图3所示。
△图3.X.509DoSTool工具示意图
实验结果:检测出新漏洞
针对每个未受特定证书影响的密码算法库,研究人员进一步区分了其免疫性是由于实现中的防御策略,还是由于缺乏相关行为的实现,并将所有新发现的漏洞报告给相应的密码库的维护者或供应商,其对应的版本号和CVE分配情况等信息如图4所示:
△图4.实验过程中检测出的漏洞信息汇总
此外,为了进一步说明研究人员在威胁模型部分提到的TLS握手和App验签两类威胁模型并展示这些漏洞的实际威胁,他们以在Botan算法库和Apple Security算法库中发现的两个问题(分别为CVE-2024-34703和CVE-2024-54538)为例进行了攻击演示:
1、CVE-2024-34703:攻击者通过在双向TLS握手环节向基于Botan搭建的HTTPS网站发送畸形证书,即可使得该网站在解析证书过程中由于漏洞触发的资源耗尽而瘫痪。
2、CVE-2024-54538:攻击者只需发送一封包含畸形证书链的S/MIME加密邮件,即可在收件人未进行任何操作的情况下,导致其macOS/iOS系统在验证证书链过程中由于漏洞触发的资源耗尽而瘫痪。
该部分内容详见论文中的第7章,关于上述实验过程的演示视频请参考宣传网站中给出的视频链接。
缓解措施
针对这类攻击,除了及时更新至最新版本外,他们还就开发人员如何在项目中更好地避免引入此类风险提出了一些建议:
安全编程实践:密码算法库的开发涉及多种复杂的密码学场景,开发人员通常难以在脱离相关教材(如数学模块)或行业标准(如ASN.1或X.509模块)的情况下独立完成开发。然而,这些资料的设计初衷主要用于教学和指导,在编写过程中可能并未充分考虑实际应用中潜在的安全风险。
因此,开发人员应意识到,即使严格按照这些参考资料进行开发,并不意味着实现就一定是安全的。在开发过程中,还应高度重视安全编程实践,尤其是在处理不可信的用户输入时,需要加入足够的检查和验证机制。
此外,良好的编程习惯也有助于缓解X.509DoS攻击的风险。例如,在复杂的while循环中引入计数器以防止无限循环,在分配动态内存前检查其大小是否超出预定义阈值,从而避免潜在的安全漏洞。
高效代码实现:一些密码算法库虽然缺少对参数的安全检查,但采用了一些更高效的实现方式,例如在F_{2^m}中,乘法运算可以通过更高效的算法替代传统实现。这些更为高效的实现方式在一定程度上能够缓解DoS攻击带来的影响,同时增加攻击者实施攻击的成本。
一种衡量X.509DoS攻击成本的典型标准是构造出的畸形证书文件大小。例如,部分密码库在其TLS实现中会对证书大小设置上限(如OpenSSL的默认最大证书大小为100KiB)。因此,此类防御机制在一定程度上也可以间接降低潜在实际应用中的危害。
减少冗余特性:一些密码算法库之所以受到X.509DoS攻击的影响相对较小,并非是因为它们主动实现了许多防御机制,而是因为这些库本身并未实现和支持某些容易被利用的特性,因此也就没有包含存在问题的代码实现。
尽管通过限制功能来规避安全风险不应作为主要的防护手段,但这也从侧面反映出:新增功能往往会带来新的安全隐患。开发人员应根据系统的实际需求,审慎评估是否需要引入特定功能。例如,在早期ECC技术尚未成熟时,ANSI X9.62等标准允许在X.509证书中使用自定义曲线。
随着安全意识的提高,RFC 5480等后续规范已明确禁止该行为,但许多密码算法库仍保留对该功能的支持以确保向后兼容性。在未来,开发人员应逐步淘汰这类不安全的特性,采用经过严格安全评估的NIST曲线等,从而提升整体的安全性。
总结
在本工作中,研究人员进行了一项针对密码算法库中易受DoS攻击影响的代码实现的系统性的安全分析。在这一过程中,他们识别出了三种新型的DoS风险,并探讨了一种借助畸形X.509证书作为攻击向量来利用密码算法库中潜在的DoS漏洞的攻击形式。
围绕该攻击,他们进一步展开了一系列同密码算法库中存在的DoS风险相关的漏洞原理及其利用手法的分析。借助他们开发的自动化工具,在七款主流密码算法库中发现了18个新漏洞,并针对HTTPS网站的双向TLS握手和苹果macOS/iOS系统验签两个实践中的真实场景作为case study进行了演示。
实验结果展示了他们构造的畸形X.509证书在检测和利用密码算法库中的DoS漏洞方面的可行性,同时也揭示了X.509DoS是一类影响广泛但先前尚未被充分研究的安全威胁,值得研究人员投入更多的关注。鉴于此,他们也讨论了这类攻击的根本原因,并提出了一系列可行的缓解策略。
未来,研究团队希望这项工作能进一步提高安全社区对密码学漏洞和攻击手法的认识,并激励更多研究人员探索有效的检测与防御机制,共同推动密码系统的建设和保障用户的安全。
本论文包括第一作者石冰在内的主要作者均来自于阿里巴巴集团安全部下属安全研究团队。团队在负责人白小龙博士(本论文通讯作者)的带领下,长期专注于系统安全、数据安全等方向上的创新技术研究,研究成果多次发表于Usenix Security、CCS、BlackHat、DEFCON等学术界与工业界计算机安全顶会,获得过苹果、华为等国内外知名厂商的致谢。
论文链接:https://www.usenix.org/conference/usenixsecurity25/presentation/shi-bing
X.509Dos攻击:https://www.x509dos.com/
Banana Mail攻击:https://www.banana-mail.com/
一键三连「点赞」「转发」「小心心」
欢迎在评论区留下你的想法!
— 完 —

🌟 点亮星标 🌟

- 点赞 (0)
-
分享
微信扫一扫
-
加入群聊
扫码加入群聊