在万众"期待"的Windows 7停服日,也就是2020年微软第一次补丁更新日,发生了一件让业界众说纷纭的事件:
美国NSA国家安全局,在发现一个"严重"漏洞后,上报给了微软。
下面先撇开这么好用的漏洞不留着自己存漏洞武器库,反而报送给微软让全世界安全研究人员研究的话题,主要来讲讲漏洞情况。
该漏洞存在于CryptoAPI.dll,也就是微软提供的加密应用程序API接口,其中windows 10系统在对
椭圆曲线密码(ECC)
证书进行检测时,由于只校验了证书中匹配的可信公钥以及参数,但并没有对对应的生成元进行校验,从而导致可以使用与伪造的生成元配套的伪造的私钥对文件进行签名,从而绕过微软的官方公钥验证。
用黑鸟灵魂作画大致流程如下,这里要注意的是每条椭圆曲线对应的算法不一样,每个证书都可以使用不一样的椭圆曲线算法,
因此下图的
dG
可以代指各种椭圆曲线,只要生成证书的时候自行选择即可
。
(只是黑鸟的理解,若有差错可能是黑鸟描述不够形象)
除了可以通过构造恶意的签名证书,用来签名恶意文件进行攻击外,由于ECC证书还广泛的应用于通信加密中,如果通过某些不可描述的手段,使得受害者浏览器或本地安装了恶意的TLS证书,那么攻击者便可以成功利用该漏洞实现对应的中间人攻击,达到解密https流量的目的。
当然,你选择在自己网站签署该证书也可以。
经过一天的发酵,国外安全研究员也将POC发布在Github上。
https://github.com/ollypwn/cve-2020-0601
https://github.com/kudelskisecurity/chainoffools
还有老外配套的分析文章,里面提到了获取公钥相关事宜
https://research.kudelskisecurity.com/2020/01/15/cve-2020-0601-the-chainoffools-attack-explained-with-poc/
觉得黑鸟描述还是有问题不妨再看看专家的言论
https://news.ycombinator.com/item?id=22048619
下图为奇安信威胁情报中心对漏洞进行复现后,构造的自签名的勒索软件样本。
下图为效果,左边可见已经通过微软的校验,并没有显示证书不可用,而右边恶意软件进行数字签名后杀软报警的对比图,可见通过数字签名查杀还是很多杀软的"路数"。
此外最早国外安全研究员展示了通过该漏洞签发的证书劫持浏览器HTTPS的示例
其中提到了Firefox在签署后是安全的,并没有接受该证书,而Chrome虽然信任该证书,但是报错了。其称后续会继续研究。
相关链接:
https://threadreaderapp.com/thread/1217495681230954506.html
下动图为
奇安信CERT
通过Edge浏览器
展示了通过伪造的证书劫持github.com的过程:
现在你们估计明白了,为什么会对NSA将该漏洞上报给微软一事感到震惊吧。
想不通。
最后题外话,当你对上文的描述的内容完全不懂,不明意义时,请不要担心,留给你们的时间,便是进行系统更新,对了,该漏洞不影响Windows 10 之前的版本,Windows 7\Windows Server 2008 R2 都不受影响。该漏洞仅针对在 Windows 10/Windows Server 2016&2019 之后引入的特定的椭圆曲线加密(ECC)证书的系统。
漏洞描述和补丁链接:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0601
然而,即使Windows 7\Windows Server 2008 R2,但这些系统都已经停止更新,带来的安全隐患将会逐日递增,不要在电脑被入侵发现之日才懊悔没有加强安全防护,升级Windows 7 到Windows10吧。
此处有一个免费升级通道。
https://www.microsoft.com/en-us/software-download/windows10
附录:
椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的演算法,基于椭圆曲线数学。