聚焦源代码安全,网罗国内外最新资讯!
0x00 漏洞描述
2020年1月15日,微软公布了1月份的补丁更新列表,其中存在一个位于 CryptoAPI 椭圆曲线密码(ECC)证书检测绕过相关的漏洞 (CVE-2020-0601),该漏洞为NSA发现并汇报给微软。攻击者可以利用这个漏洞,使用伪造的代码签名证书对恶意的可执行文件进行签名,并以此恶意文件来进行攻击。
0x01 补丁分析
从微软的官方介绍上可知,此漏洞存在于crypt32.dll文件。在官方网站下载了补丁文件升级更新后,新的crypt32.dll与未更新的版本对比如下:
从图中可以看出,CertDllVerifyMicrosoftRootCertificateChainPolicy函数存在改动,查看引用该函数的地方:
从图可知,函数 CertVerifyCertificateChainPolicy 中有两处调用了CertDllVerifyMicrosoftRootCertificateChainPolicy函数,查看CertVerifyCertificateChainPolicy的代码:
从上图代码可知,函数CertVerifyCertificateChainPolicy将四个参数pszPolicyOID, pChainContext, pPolicyPara, pPolicyStatus直接