阿里安全揭示:惡意郵件可致macOS/iOS瞬間癱瘓!畸形證書發(fā)現(xiàn)密碼庫新漏洞
已獲得“黑客界奧斯卡”提名
阿里安全團(tuán)隊 投稿
量子位 | 公眾號 QbitAI
一封加密郵件,就能讓macOS/iOS系統(tǒng)瞬間死機(jī)?
這并非科幻情節(jié),而是阿里安全最新研究成果揭示的真實攻擊。
為了有效提防這種攻擊,阿里安全與美國印第安納大學(xué)伯明頓分校聯(lián)合探索并發(fā)現(xiàn)了一項用于檢測密碼算法庫中潛在的DoS(Denial-of-Service,拒絕服務(wù))類安全問題的攻擊向量——畸形X.509證書,并圍繞該向量展開了一系列針對密碼算法庫中存在的相關(guān)問題的研究工作。
此成果已發(fā)表于USENIX Security’25會議,且已獲得“黑客界奧斯卡” Pwnie Awards提名。

借助畸形X.509證書,研究者在六款主流開源密碼算法庫:OpenSSL、Botan、Bouncy Castle、Crypto++、GnuTLS和phpseclib,以及一款專為Apple生態(tài)設(shè)計的密碼庫Security進(jìn)行了實驗,共計發(fā)現(xiàn)了18個新CVE漏洞,并識別出了12個已知的CVE漏洞。

X.509數(shù)字證書是網(wǎng)絡(luò)世界的“身份證”
隨著互聯(lián)網(wǎng)的普及與廣泛應(yīng)用,網(wǎng)絡(luò)安全問題日益突出。為了確保網(wǎng)絡(luò)通信的安全性與可靠性,數(shù)字證書成為保障身份認(rèn)證和數(shù)據(jù)安全的重要手段。
數(shù)字證書就像是網(wǎng)絡(luò)世界中的“身份證”,它由可信的第三方機(jī)構(gòu)(稱為證書頒發(fā)機(jī)構(gòu),CA)簽發(fā),用于驗證通信雙方的身份,并確保信息在傳輸過程中不被篡改。
目前,X.509是國際上最廣泛采用的數(shù)字證書標(biāo)準(zhǔn)之一。它定義了證書的基本結(jié)構(gòu)和內(nèi)容,包括主體信息、公鑰、簽名算法、有效期等字段,并支持證書鏈驗證機(jī)制,從而構(gòu)建起一個可信賴的公鑰基礎(chǔ)設(shè)施(PKI)。
不僅如此,X.509證書也已成為現(xiàn)代網(wǎng)絡(luò)安全體系的基礎(chǔ)組成部分,被應(yīng)用于多種協(xié)議(如 TLS、S/MIME)中,以實現(xiàn)通信安全。現(xiàn)代操作系統(tǒng)(如macOS/iOS)也使用X.509證書進(jìn)行簽名驗證,從而確保應(yīng)用程序的真實性和完整性。
盡管X.509證書為網(wǎng)絡(luò)安全提供了重要支撐,但其處理過程本身也可能成為攻擊者的目標(biāo)。
為了解決上述安全問題,研究人員重點關(guān)注了一種借助畸形X.509證書發(fā)起遠(yuǎn)程DoS攻擊(包含CPU資源耗盡、內(nèi)存耗盡、Crash等類型)的攻擊形式。
在證書解析、證書鏈驗證等環(huán)節(jié)中,若密碼算法庫的代碼實現(xiàn)存在缺陷,攻擊者便可據(jù)此構(gòu)造出畸形證書,使得目標(biāo)系統(tǒng)在處理證書的過程中觸發(fā)DoS類漏洞,從而對其可用性造成影響。
對于一個開啟雙向TLS認(rèn)證的HTTPS網(wǎng)站而言,攻擊者可以在握手環(huán)節(jié)中通過向服務(wù)器發(fā)送畸形證書使得服務(wù)器因資源耗盡而癱瘓,繼而使得其他用戶無法再訪問該網(wǎng)站。
對于操作系統(tǒng)而言,攻擊者可通過發(fā)送包含惡意證書的郵件(例如針對macOS/iOSS下的S/MIME郵件攻擊,該形式被單獨命名為Banana Mail攻擊)等手段,耗盡用戶系統(tǒng)處理證書進(jìn)程的資源,導(dǎo)致其無響應(yīng)。
這繼而使得系統(tǒng)中的其他應(yīng)用程序因無法正常驗證簽名而被阻止執(zhí)行。此類問題對實際應(yīng)用場景構(gòu)成了實質(zhì)性的威脅。
通過畸形X.509證書解決Dos類問題
密碼學(xué)相關(guān)的API往往設(shè)計復(fù)雜,而許多開發(fā)人員對密碼學(xué)知識的掌握又相對匱乏,二者之間形成的矛盾使得密碼學(xué)API誤用問題在實踐中頻頻發(fā)生,這也促使現(xiàn)有的研究工作多圍繞如何更好地消除密碼學(xué)API誤用問題而展開。
然而,即使用戶嚴(yán)格遵守了使用規(guī)范并正確地調(diào)用了某個密碼庫中的API,安全風(fēng)險仍然可能由該API本身實現(xiàn)中的安全問題引入。
目前關(guān)于密碼學(xué)實現(xiàn)中安全問題的研究,主要集中在CIA三元組(機(jī)密性、完整性和可用性)中的機(jī)密性(如側(cè)信道攻擊)和完整性(如哈希碰撞)方面,而對可用性問題的關(guān)注較少。
這是因為在設(shè)計層面,密碼學(xué)對數(shù)據(jù)機(jī)密性和完整性的保障作用更為顯著,相比之下,其對數(shù)據(jù)可用性的貢獻(xiàn)則相對較小。因此,許多研究工作也會預(yù)設(shè)密碼學(xué)庫中可以用于分析可用性安全問題(如DoS攻擊)的場景也較為有限。
然而,研究團(tuán)隊注意到,出于以下兩個特性,密碼庫相較于其他類型的項目,實際上往往更容易受到DoS類攻擊的影響:
1、密碼庫的實現(xiàn)中經(jīng)常會涉及“大數(shù)”運(yùn)算(例如涉及一個1024比特的素數(shù)的有限域上的運(yùn)算),這類運(yùn)算及其數(shù)量級在非密碼學(xué)項目中較為少見。
2、密碼庫的實現(xiàn)中經(jīng)常會涉及處理各種的數(shù)據(jù)類型(如ASN.1)和編碼規(guī)則(如DER編碼),這些方案的設(shè)計往往較為復(fù)雜,在實現(xiàn)過程中很容易考慮不周全。
為了進(jìn)一步驗證這一觀察,研究團(tuán)隊開展了一項針對多款密碼算法庫中易受DoS攻擊影響的代碼實現(xiàn)的系統(tǒng)性的分析工作,并在這一過程中論證了使用畸形X.509證書作為攻擊向量來利用和檢測密碼算法庫中DoS類問題的可行性。
該工作的主要貢獻(xiàn)包括以下三點:
系統(tǒng)性分析與新發(fā)現(xiàn):他們進(jìn)行了首個針對密碼算法庫中易受DoS攻擊實現(xiàn)的系統(tǒng)性分析工作。在這一過程中,他們發(fā)現(xiàn)了三種新的DoS類安全風(fēng)險,并揭示了一種通用的攻擊向量——畸形X.509證書,以利用本研究中總結(jié)出的共計10種典型風(fēng)險所關(guān)聯(lián)的DoS漏洞。
自動化工具開發(fā)+漏洞挖掘與利用:他們開發(fā)了一款名為X.509DoSTool的自動化工具,可用于快速生成特定畸形證書并檢測加密庫相應(yīng)實現(xiàn)中的DoS漏洞。利用該工具,他們成功發(fā)掘了18個新漏洞,并識別出了12個已知漏洞。同時,他們基于這些漏洞在實際場景中進(jìn)行了驗證,并在macOS/iOS平臺上發(fā)現(xiàn)了新的遠(yuǎn)程漏洞利用方法。
威脅建模與緩解策略:通過威脅建模和實驗結(jié)果,他們展示了X.509DoS在現(xiàn)實世界中是一種廣泛存在但先前卻缺乏足夠研究的實際威脅。在此基礎(chǔ)上,他們進(jìn)一步分析了X.509DoS攻擊的根本原因,并提出了可行的緩解策略,以幫助開發(fā)人員增強(qiáng)其系統(tǒng)的安全性。
該部分內(nèi)容詳見論文中的第1節(jié)。此外,為了更好地理解后續(xù)章節(jié)的內(nèi)容,建議讀者參考論文第2節(jié)中的背景知識介紹,以獲取對橢圓曲線中的數(shù)學(xué)部分、ASN.1和X.509等內(nèi)容的進(jìn)一步了解。
威脅模型
研究團(tuán)隊的攻擊模型主要建立在針對證書的解析或針對證書鏈的驗證先于簽名驗證這一基本事實之上,這一前提確保了攻擊者可以直接修改證書或證書鏈,而無需獲取頒發(fā)者的私鑰進(jìn)行重新簽名。
因此,任何使用了密碼算法庫中存在代碼實現(xiàn)漏洞的與X.509相關(guān)的API、并嘗試處理來自不可信外部源的證書的項目,理論上都存在受到X.509DoS攻擊的可能性。
鑒于X.509證書在實踐中的廣泛應(yīng)用,他們以TLS握手和App驗簽兩個場景來對威脅模型做進(jìn)一步說明:
一個典型的TLS v1.2握手過程的示意圖如圖1所示:

圖1.TLS v1.2握手示意圖
在這一過程中,X.509DoS攻擊的威脅主要來自于以下兩個步驟:
步驟3:攻擊者可以飾演一個惡意的服務(wù)器,并向客戶端發(fā)送精心構(gòu)造的證書或證書鏈。
步驟7:攻擊者可以飾演一個惡意的客戶端,并向服務(wù)器發(fā)送精心構(gòu)造的證書或證書鏈(需開啟雙向TLS握手)。
如果客戶端或服務(wù)器使用了存在漏洞的第三方庫實現(xiàn)來處理證書,則有可能成為DoS攻擊的受害者。在HTTPS場景下,這通常表現(xiàn)為服務(wù)器上搭建的網(wǎng)站無法訪問,或者客戶端瀏覽器無法正常運(yùn)行。
為了確保應(yīng)用程序來自可信的發(fā)布者并且在發(fā)布后未被篡改,現(xiàn)代操作系統(tǒng)(如macOS/iOS)通常采用簽名驗證的方式來保證應(yīng)用程序的真實性和完整性。
這一過程包括基于系統(tǒng)內(nèi)置的可信根證書列表對應(yīng)用程序的證書進(jìn)行驗證,并從證書中提取公鑰來驗證應(yīng)用程序的簽名,繼而決定該應(yīng)用程序后續(xù)是否應(yīng)該被啟動或阻止。
在操作系統(tǒng)中,上述證書的驗證和管理通常由一個特定的系統(tǒng)進(jìn)程處理。如果這一進(jìn)程的涉及證書處理的代碼實現(xiàn)中存在DoS漏洞,該進(jìn)程在處理攻擊者構(gòu)造的畸形證書后,就可能會因資源耗盡等問題而陷入未響應(yīng)。
此時,后續(xù)發(fā)起的同其他應(yīng)用程序簽名驗證相關(guān)請求同樣無法被該進(jìn)程處理,繼而表現(xiàn)為系統(tǒng)內(nèi)所有應(yīng)用程序無法正常啟動,并且隨著資源的逐步耗盡,最終表現(xiàn)為整個操作系統(tǒng)的癱瘓。
針對這兩類場景,他們均在實驗環(huán)節(jié)以發(fā)現(xiàn)的具體CVE漏洞作為case study進(jìn)行了攻擊實例的演示,請參見實驗結(jié)果部分的論述。
安全分析與利用
根據(jù)DoS風(fēng)險存在于密碼庫中模塊位置的不同,研究人員將典型的DoS風(fēng)險分為了數(shù)學(xué)模塊、ASN.1模塊和X.509模塊三類:
數(shù)學(xué)模塊:密碼算法的實現(xiàn)依賴底層數(shù)學(xué)運(yùn)算的實現(xiàn),例如對于采用ECDSA簽名的X.509證書而言,在解析公鑰和使用公鑰驗簽時會引入有限域上的橢圓曲線的基礎(chǔ)運(yùn)算的實現(xiàn)(如點加運(yùn)算、倍點運(yùn)算等操作會用到F_p或F{2^m}上的運(yùn)算等),這些運(yùn)算的實現(xiàn)是一類容易引入DoS風(fēng)險的典型實現(xiàn)。
ASN.1模塊:X.509證書使用ASN.1來定義其數(shù)據(jù)結(jié)構(gòu),并通過特定的編碼方式(如DER或PEM)進(jìn)行傳輸和存儲。在解析一個特定的X.509證書的過程中,一個重要的步驟就是將DER編碼后的ASN.1對象進(jìn)行解碼并同X.509證書的特定字段進(jìn)行對應(yīng),這些解碼過程和對不同ASN.1對象的處理過程的實現(xiàn)同樣容易引入DoS風(fēng)險。
X.509模塊:除了前述的數(shù)學(xué)模塊和ASN.1模塊外,DoS風(fēng)險也可能源自X.509證書相關(guān)功能的實現(xiàn)本身。在此類情況下,風(fēng)險通常不再來自單個證書,而是來自于對多個證書構(gòu)成的證書鏈進(jìn)行path validation的過程(詳見RFC 5280第6章)。當(dāng)目標(biāo)系統(tǒng)接收到證書鏈后,該驗證過程往往先于簽名的驗證過程而被觸發(fā)。
在上述分類的基礎(chǔ)上,研究人員對每一分類中的典型運(yùn)算或處理場景進(jìn)行了進(jìn)一步探索,圖2展示了她們在本研究中分析的10種典型風(fēng)險,并對每類風(fēng)險(尤其是新發(fā)現(xiàn)的Risk-1、Risk-2和Risk-5)的漏洞原理進(jìn)行了詳細(xì)分析。相關(guān)內(nèi)容詳見論文中的第4章和附錄A。

圖2.本工作中分析的10種典型DoS風(fēng)險總覽
此外,他們展示了如何針對某一類特定的DoS風(fēng)險來構(gòu)造對應(yīng)的畸形X.509數(shù)字證書(如修改SubjectPublicKeyInfo結(jié)構(gòu)中的某個字段,修改證書中某個OBJECT IDENTIFIER對象的DER編碼后的sub-identifier的值,修改某個證書鏈中攜帶的name constraints的數(shù)量等)來觸發(fā)對應(yīng)的代碼實現(xiàn)中的漏洞,即基于X.509證書的漏洞利用的手法。
對于每一種手法,他們還討論了如何繞過常見的檢查來確保漏洞的觸發(fā)(如通過設(shè)置ECDSA公鑰攜帶的橢圓曲線中的素數(shù)為模8余1來繞過計算二次剩余的簡便算法),該部分內(nèi)容詳見論文中的第5章。
利用X.509DoSTool發(fā)現(xiàn)漏洞
即使有了構(gòu)造證書的思路,手動去進(jìn)行證書的修改和畸形證書的構(gòu)造仍然是一項復(fù)雜的任務(wù)。
為了更好的輔助使用證書對密碼算法庫中的實現(xiàn)問題進(jìn)行檢測,研究人員開發(fā)了一款名為X.509DoSTool的自動化工具,該工具包含了Generate、Edit和Detect三個子模塊,通過根據(jù)用戶指定的風(fēng)險類型自動化地生成對應(yīng)的證書并將其作為輸入傳入待檢測的API中執(zhí)行,并根據(jù)執(zhí)行結(jié)果(如Crash)和監(jiān)測系統(tǒng)的CPU/內(nèi)存資源消耗情況來反饋是否存在對應(yīng)的漏洞,其示意圖如圖3所示。

圖3.X.509DoSTool工具示意圖
實驗結(jié)果:檢測出新漏洞
針對每個未受特定證書影響的密碼算法庫,研究人員進(jìn)一步區(qū)分了其免疫性是由于實現(xiàn)中的防御策略,還是由于缺乏相關(guān)行為的實現(xiàn),并將所有新發(fā)現(xiàn)的漏洞報告給相應(yīng)的密碼庫的維護(hù)者或供應(yīng)商,其對應(yīng)的版本號和CVE分配情況等信息如圖4所示:

圖4.實驗過程中檢測出的漏洞信息匯總
此外,為了進(jìn)一步說明研究人員在威脅模型部分提到的TLS握手和App驗簽兩類威脅模型并展示這些漏洞的實際威脅,他們以在Botan算法庫和Apple Security算法庫中發(fā)現(xiàn)的兩個問題(分別為CVE-2024-34703和CVE-2024-54538)為例進(jìn)行了攻擊演示:
1、CVE-2024-34703:攻擊者通過在雙向TLS握手環(huán)節(jié)向基于Botan搭建的HTTPS網(wǎng)站發(fā)送畸形證書,即可使得該網(wǎng)站在解析證書過程中由于漏洞觸發(fā)的資源耗盡而癱瘓。
2、CVE-2024-54538:攻擊者只需發(fā)送一封包含畸形證書鏈的S/MIME加密郵件,即可在收件人未進(jìn)行任何操作的情況下,導(dǎo)致其macOS/iOS系統(tǒng)在驗證證書鏈過程中由于漏洞觸發(fā)的資源耗盡而癱瘓。
該部分內(nèi)容詳見論文中的第7章,關(guān)于上述實驗過程的演示視頻請參考宣傳網(wǎng)站中給出的視頻鏈接。
緩解措施
針對這類攻擊,除了及時更新至最新版本外,他們還就開發(fā)人員如何在項目中更好地避免引入此類風(fēng)險提出了一些建議:
安全編程實踐:密碼算法庫的開發(fā)涉及多種復(fù)雜的密碼學(xué)場景,開發(fā)人員通常難以在脫離相關(guān)教材(如數(shù)學(xué)模塊)或行業(yè)標(biāo)準(zhǔn)(如ASN.1或X.509模塊)的情況下獨立完成開發(fā)。然而,這些資料的設(shè)計初衷主要用于教學(xué)和指導(dǎo),在編寫過程中可能并未充分考慮實際應(yīng)用中潛在的安全風(fēng)險。
因此,開發(fā)人員應(yīng)意識到,即使嚴(yán)格按照這些參考資料進(jìn)行開發(fā),并不意味著實現(xiàn)就一定是安全的。在開發(fā)過程中,還應(yīng)高度重視安全編程實踐,尤其是在處理不可信的用戶輸入時,需要加入足夠的檢查和驗證機(jī)制。
此外,良好的編程習(xí)慣也有助于緩解X.509DoS攻擊的風(fēng)險。例如,在復(fù)雜的while循環(huán)中引入計數(shù)器以防止無限循環(huán),在分配動態(tài)內(nèi)存前檢查其大小是否超出預(yù)定義閾值,從而避免潛在的安全漏洞。
高效代碼實現(xiàn):一些密碼算法庫雖然缺少對參數(shù)的安全檢查,但采用了一些更高效的實現(xiàn)方式,例如在F_{2^m}中,乘法運(yùn)算可以通過更高效的算法替代傳統(tǒng)實現(xiàn)。這些更為高效的實現(xiàn)方式在一定程度上能夠緩解DoS攻擊帶來的影響,同時增加攻擊者實施攻擊的成本。
一種衡量X.509DoS攻擊成本的典型標(biāo)準(zhǔn)是構(gòu)造出的畸形證書文件大小。例如,部分密碼庫在其TLS實現(xiàn)中會對證書大小設(shè)置上限(如OpenSSL的默認(rèn)最大證書大小為100KiB)。因此,此類防御機(jī)制在一定程度上也可以間接降低潛在實際應(yīng)用中的危害。
減少冗余特性:一些密碼算法庫之所以受到X.509DoS攻擊的影響相對較小,并非是因為它們主動實現(xiàn)了許多防御機(jī)制,而是因為這些庫本身并未實現(xiàn)和支持某些容易被利用的特性,因此也就沒有包含存在問題的代碼實現(xiàn)。
盡管通過限制功能來規(guī)避安全風(fēng)險不應(yīng)作為主要的防護(hù)手段,但這也從側(cè)面反映出:新增功能往往會帶來新的安全隱患。開發(fā)人員應(yīng)根據(jù)系統(tǒng)的實際需求,審慎評估是否需要引入特定功能。例如,在早期ECC技術(shù)尚未成熟時,ANSI X9.62等標(biāo)準(zhǔn)允許在X.509證書中使用自定義曲線。
隨著安全意識的提高,RFC 5480等后續(xù)規(guī)范已明確禁止該行為,但許多密碼算法庫仍保留對該功能的支持以確保向后兼容性。在未來,開發(fā)人員應(yīng)逐步淘汰這類不安全的特性,采用經(jīng)過嚴(yán)格安全評估的NIST曲線等,從而提升整體的安全性。
總結(jié)
在本工作中,研究人員進(jìn)行了一項針對密碼算法庫中易受DoS攻擊影響的代碼實現(xiàn)的系統(tǒng)性的安全分析。在這一過程中,他們識別出了三種新型的DoS風(fēng)險,并探討了一種借助畸形X.509證書作為攻擊向量來利用密碼算法庫中潛在的DoS漏洞的攻擊形式。
圍繞該攻擊,他們進(jìn)一步展開了一系列同密碼算法庫中存在的DoS風(fēng)險相關(guān)的漏洞原理及其利用手法的分析。借助他們開發(fā)的自動化工具,在七款主流密碼算法庫中發(fā)現(xiàn)了18個新漏洞,并針對HTTPS網(wǎng)站的雙向TLS握手和蘋果macOS/iOS系統(tǒng)驗簽兩個實踐中的真實場景作為case study進(jìn)行了演示。
實驗結(jié)果展示了他們構(gòu)造的畸形X.509證書在檢測和利用密碼算法庫中的DoS漏洞方面的可行性,同時也揭示了X.509DoS是一類影響廣泛但先前尚未被充分研究的安全威脅,值得研究人員投入更多的關(guān)注。鑒于此,他們也討論了這類攻擊的根本原因,并提出了一系列可行的緩解策略。
未來,研究團(tuán)隊希望這項工作能進(jìn)一步提高安全社區(qū)對密碼學(xué)漏洞和攻擊手法的認(rèn)識,并激勵更多研究人員探索有效的檢測與防御機(jī)制,共同推動密碼系統(tǒng)的建設(shè)和保障用戶的安全。
本論文包括第一作者石冰在內(nèi)的主要作者均來自于阿里巴巴集團(tuán)安全部下屬安全研究團(tuán)隊。團(tuán)隊在負(fù)責(zé)人白小龍博士(本論文通訊作者)的帶領(lǐng)下,長期專注于系統(tǒng)安全、數(shù)據(jù)安全等方向上的創(chuàng)新技術(shù)研究,研究成果多次發(fā)表于Usenix Security、CCS、BlackHat、DEFCON等學(xué)術(shù)界與工業(yè)界計算機(jī)安全頂會,獲得過蘋果、華為等國內(nèi)外知名廠商的致謝。
論文鏈接:https://www.usenix.org/conference/usenixsecurity25/presentation/shi-bing
X.509Dos攻擊:https://www.x509dos.com/
Banana Mail攻擊:https://www.banana-mail.com/
- 快手進(jìn)軍AI編程!“模型+工具+平臺”一口氣放三個大招2025-10-24
- 匯報一下ICCV全部獎項,恭喜朱俊彥團(tuán)隊獲最佳論文2025-10-22
- OpenAI以為GPT-5搞出了數(shù)學(xué)大新聞,結(jié)果…哈薩比斯都覺得尷尬2025-10-20
- 首創(chuàng)“AI+真人”雙保障模式!剛剛,百度健康推出7×24小時「能聊、有料、會管」AI管家2025-10-18




