亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行CVE-2020-0601漏洞的詳細分析

發布時間:2021-12-24 22:05:15 來源:億速云 閱讀:1185 作者:柒染 欄目:安全技術

這期內容當中小編將會給大家帶來有關如何進行CVE-2020-0601漏洞的詳細分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

0x00 漏洞描述

   2020年1月15日,微軟公布了1月份的補丁更新列表,其中存在一個位于CryptoAPI橢圓曲線密碼(ECC)證書檢測繞過相關的漏洞(CVE-2020-0601),該漏洞為NSA發現并匯報給微軟。攻擊者可以利用這個漏洞,使用偽造的代碼簽名證書對惡意的可執行文件進行簽名,并以此惡意文件來進行攻擊。

0x01 補丁分析

從微軟的官方介紹上可知,此漏洞存在于crypt32.dll文件。在官方網站下載了補丁文件升級更新后,新的crypt32.dll與未更新的版本對比如下:

如何進行CVE-2020-0601漏洞的詳細分析

從圖中可以看出,CertDllVerifyMicrosoftRootCertificateChainPolicy函數存在改動,查看引用該函數的地方:

如何進行CVE-2020-0601漏洞的詳細分析

從圖可知,函數CertVerifyCertificateChainPolicy中有兩處調用了CertDllVerifyMicrosoftRootCertificateChainPolicy函數,查看CertVerifyCertificateChainPolicy的代碼:

如何進行CVE-2020-0601漏洞的詳細分析

從上圖代碼可知,函數CertVerifyCertificateChainPolicy將四個參數pszPolicyOID, pChainContext, pPolicyPara, pPolicyStatus直接傳遞給了CertDllVerifyMicrosoftRootCertificateChainPolicy,并未做處理。接著查看CertDllVerifyMicrosoftRootCertificateChainPolicy的代碼。

如何進行CVE-2020-0601漏洞的詳細分析

注意到CertDllVerifyMicrosoftRootCertificateChainPolicy函數中有多處形如memcmp(v16, &pbComputedHash, 0x20u)的內存對比代碼,其中v16是crypt32.dll某處固定的數據,pbComputedHash是由CryptHashCertificate2函數計算過的hash值,0x20u是指對比的內存長度,剛好是ECC數字簽名證書的指紋hash長度,這可以通過查看ECC根證書的詳細信息可知。

如何進行CVE-2020-0601漏洞的詳細分析

而CryptHashCertificate2函數傳入的值由CertDllVerifyMicrosoftRootCertificateChainPolicy的參數解析而來,并且只包含了公鑰信息。由此可以判斷,雖然函數CertVerifyCertificateChainPolicy將參數pszPolicyOID, pChainContext, pPolicyPara, pPolicyStatus都傳遞給了CertDllVerifyMicrosoftRootCertificateChainPolicy函數,但CertDllVerifyMicrosoftRootCertificateChainPolicy函數只利用了其中的公鑰信息,存在參數校驗不全的邏輯缺陷。至于為什么只校驗公鑰信息就會被偽造的數字簽名繞過檢查,在介紹CVE-2020-0601漏洞原理之前,我們先來簡單介紹下橢圓曲線數字簽名算法(ECDSA)。

0x02 橢圓曲線數字簽名算法(ECDSA

在2009年修訂的FIPS 186加入了基于橢圓曲線密碼的數字簽名方法,稱其為橢圓曲線數字簽名算法(ECDSA)。由于橢圓曲線密碼效率方面的優勢,ECDSA的應用越來越廣泛。

ECDSA算法過程如下:

參與數字簽名的所有方都使用相同的全局域參數,用于定義橢圓曲線以及曲線上的基點。

簽名者首先需要生成一對公鑰、私鑰。簽名者可以選擇一個隨機數作為私鑰,使用隨機數和基點,可以計算橢圓曲線上的另一個解點,作為公鑰。

對于待簽名的消息計算其Hash值。簽名者使用私鑰、全局域參數、Hash值產生簽名,包括兩個整數r和s。

驗證者使用簽名者的公鑰、全局域參數、整數s作為輸入,計算v,并與r比較。如果兩者相等,則簽名通過。

0x03 漏洞原理

通常,簽名者產生一對公私鑰后,要去證書中心(certificate authority,簡稱CA),為公鑰做認證,以此來證明簽名者本身身份。證書中心用自己的私鑰,對簽名者的公鑰和一些相關信息一起做簽名,生成數字證書(DigitalCertificate)。由補丁分析部分可知,微軟在對數字簽名做合法校驗時,支持橢圓曲線參數的自定義輸入,又只對公鑰信息做校驗,存在嚴重缺陷。

攻擊者可以傳入自定義的全局域參數、簽名信息s,只需要公鑰信息與系統ECC根證書Microsoft ECC Product Root Certificate Authority 2018的公鑰保持一致,就可以繞過校驗邏輯,讓數字簽名信息看起來就是ECC根證書簽發的一樣。而這,是很容易做到的。

假設ECC根證書的私鑰是d(對攻擊者未知),基點是G,公鑰是Q=dG。攻擊者可以選擇跟ECC根證書一樣的橢圓曲線,只需d'=1(單位元),G‘=Q,則Q‘=d'G'=Q,從而完成攻擊。

0x04 漏洞驗證

提取ECC根證書公鑰信息

如何進行CVE-2020-0601漏洞的詳細分析

生成偽造的ECC根證書

如何進行CVE-2020-0601漏洞的詳細分析

生成代碼簽名用的證書,并用偽造的ECC根證書做簽名

如何進行CVE-2020-0601漏洞的詳細分析

打包數字簽名證書

如何進行CVE-2020-0601漏洞的詳細分析

對可執行文件CVE20200601.exe簽名

如何進行CVE-2020-0601漏洞的詳細分析

在未打補丁的機器上,可執行文件CVE20200601.exe的數字簽名校驗通過

如何進行CVE-2020-0601漏洞的詳細分析

如何進行CVE-2020-0601漏洞的詳細分析如何進行CVE-2020-0601漏洞的詳細分析

打完補丁后,可執行文件CVE20200601.exe的數字簽名信息無法驗證。

如何進行CVE-2020-0601漏洞的詳細分析

上述就是小編為大家分享的如何進行CVE-2020-0601漏洞的詳細分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴中市| 湖南省| 修水县| 德昌县| 德清县| 宝应县| 乌鲁木齐市| 政和县| 左贡县| 上饶县| 玛多县| 开化县| 济源市| 庆城县| 五大连池市| 屏东市| 霞浦县| 沾化县| 乌恰县| 博客| 景宁| 浑源县| 鄂尔多斯市| 丰顺县| 内黄县| 资溪县| 海伦市| 喀什市| 盐边县| 咸丰县| 临城县| 中西区| 章丘市| 青铜峡市| 凤阳县| 洛宁县| 牙克石市| 元谋县| 新沂市| 广水市| 兴业县|