日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

openssl 签发sm2证书_首个NSA公开披露的软件系统漏洞——CVE20200601数字证书验证漏洞分析与实验...

發布時間:2025/3/19 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openssl 签发sm2证书_首个NSA公开披露的软件系统漏洞——CVE20200601数字证书验证漏洞分析与实验... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文/林璟鏘?劉廣祺 孟令佳 萬會慶 王瓊霄 王偉 王文杰 徐博文

中國科學院數據與通信保護研究教育中心

中國科學院信息工程研究所?信息安全國家重點實驗室

1.

CVE-2020-0601漏洞

2020年1月15日,微軟公布了1月份的補丁更新列表,其中包括有CVE-2020-0601,是Windows操作系統CryptoAPI (Crypt32.dll)的橢圓曲線密碼(Elliptic Curve Cryptography, ECC)數字證書驗證相關的漏洞;該漏洞會導致Windows操作系統將攻擊者偽造的數字證書誤判為由操作系統預置信任的根CA所簽發。該漏洞由美國國家安全局(National Security Agency, NSA)發現并匯報給微軟公司;這一漏洞被認為是第一個NSA公開披露的軟件系統漏洞。

2.

?影響

基于該漏洞,攻擊者可以基于某一張Windows操作系統預置信任的根CA證書、偽造任意虛假信息的數字證書,而且會被Windows操作系統誤判為“該證書沒有問題”、誤判為是由操作系統預置信任的根CA所簽發。進一步,攻擊者能夠(結合其它的攻擊手段)任意創建可被驗證通過的代碼簽名證書、安裝惡意可執行代碼,創建任意域名的服務器TLS證書、發起TLS中間人攻擊,創建可被驗證通過的電子郵件證書、以其它人名義發送安全電子郵件。

只有支持“定制參數的ECC數字證書”的Windows操作系統版本會受到影響。這一機制最早在Windows 10引入,所以該漏洞只影響Windows 10和Windows Server 2016/2019、以及各種依賴于Windows操作系統數字證書驗證功能的應用程序。2020年1月14日起停止維護的Windows 7和Windows Server 2008不支持“定制參數的ECC數字證書”,不受影響。

3.

漏洞基本原理

Windows操作系統CryptoAPI的CertGetCertificateChain()函數,在構建證書鏈過程中,對ECDSA (Elliptic Curve Digital Signature Algorithm)算法的公鑰參數驗證存在漏洞。構建證書鏈、判定是否由操作系統預置信任的根CA所簽發,過程如下:先逐層驗證輸入者提供的各數字證書的CA數字簽名是否正確有效、直至輸入者提供的根CA自簽名證書,然后比較輸入者提供的根CA自簽名證書與操作系統預置信任的根CA證書列表。如果CA數字簽名全部正確有效、且輸入者提供的根CA自簽名證書在Windows操作系統預置信任列表中,則判定該證書鏈“該證書沒有問題”。

其中,Windows操作系統CryptoAPI在比較輸入者提供的根CA自簽名證書與操作系統預置信任的根CA證書列表過程中,存在缺陷。攻擊者可以自己生成惡意的根CA自簽名證書,滿足:(a)ECC公鑰坐標點與某一張Windows操作系統預置信任的根CA證書的ECC公鑰坐標點完全一致,(b)但是二者ECC曲線參數不一致,即橢圓曲線基點不一致,(c)且攻擊者能夠自動擁有該根CA自簽名證書的私鑰。然后,Windows操作系統CryptoAPI會將攻擊者偽造的根CA自簽名證書誤判為是操作系統預置信任的根CA證書(只是比較ECC公鑰坐標點、沒有比較所有的ECC曲線參數;因為ECC公鑰坐標點相同,所以Subject Key Identifier擴展值相同)。

對于ECDSA算法,ECC曲線參數包括素域p、方程參數a和b、基點G、階n和cofactor系數h,私鑰d是隨機數,公鑰P = [d]G、是橢圓曲線的點坐標。美國NIST已經標準化地確定了多條橢圓曲線(也就是,確定了各條曲線的p、a、b、G、n和h參數);所以,在X.509數字證書中,ECC曲線參數可以直接以OID的形式表示、不需要一一列出各參數,例如,曲線secp224k1的OID就是1.3.132.0.32。同時,X.509數字證書也允許以定制參數的方式來給出ECC曲線參數,也就是,在X.509數字證書中,直接一一列出曲線的p、a、b、G、n和h參數。

攻擊者偽造數字證書的過程如下。對于某一張Windows操作系統預置信任的根CA證書,已有公鑰P = [d]G;攻擊者生成隨機數r,計算G’ = [R]P,其中R是r的逆元,則有[r]G’ = [r*R]P = P。也就是,對于基點為G’的橢圓曲線,攻擊者擁有公鑰P對應的私鑰r,甚至r可以等于1。注意:對于基點為G的橢圓曲線,公鑰P對應的私鑰是d、攻擊者并不知道。基于以上原理,攻擊者就可以任意偽造Windows操作系統CryptoAPI驗證通過的證書鏈。

4.

?實驗

我們基于Microsoft ECC Product Root Certificate Authority 2018(使用NIST P384曲線,OID是1.3.132.0.34)生成了用于攻擊測試的根CA自簽名證書,然后簽發了用于代碼簽名攻擊測試的終端證書,進行代碼數字簽名,結果如下(在未安裝補丁的Windows操作系統):

?相應的證書路徑如下(注意,左圖的頒發者是xu,右圖的證書路徑則顯示是頒發者Microsoft ECC Product Root Certificate Authority 2018):

?在已經安裝了補丁的Windows操作系統上,則顯示如下、驗證不通過:?

?類似的,我們也生成了用于HTTPS攻擊測試的服務器證書,在Edge瀏覽器上顯示如下(瀏覽器有警告提示“不安全”、但是Windows操作系統的證書路徑顯示成功):?

?瀏覽器應該在Windows操作系統CryptoAPI之外,有進一步的額外處理。注意:按照Internet公開的其它攻擊測試,有些瀏覽器沒有警告提示。

5.

討論

CVE-2020-0601數字證書驗證漏洞涉及ECC橢圓曲線密碼的基礎知識,否則難以發現漏洞;同時,Windows操作系統CryptoAPI在比較根CA證書時,只處理了公鑰坐標點(或者,可能是Subject Key Identifier擴展值),也是實現上的常見疏忽。

對于國產公鑰密碼算法SM2,有不同的情況。目前SM2算法只支持唯一的一條ECC曲線,實現中出現類似漏洞的可能性很小;但是,也不能完全排除可能性:如果系統支持“定制參數的ECC數字證書”,就有可能會有類似問題。

參考資料

https://research.kudelskisecurity.com/2020/01/15/cve-2020-0601-the-chainoffools-attack-explained-with-poc/

https://github.com/ollypwn/CVE-2020-0601

https://securityaffairs.co/wordpress/96414/security/microsoft-cve-2020-0601-flaw-nsa.html

https://github.com/kudelskisecurity/chainoffools

總結

以上是生活随笔為你收集整理的openssl 签发sm2证书_首个NSA公开披露的软件系统漏洞——CVE20200601数字证书验证漏洞分析与实验...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。