阿里安全揭示:惡意郵件可致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所示:

△圖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-bingX.509Dos
攻擊:https://www.x509dos.com/Banana Mail攻擊:https://www.banana-mail.com/





























