在1月14日的补丁星期二活动中,微软修复了存在于所有受支持Windows系统的严重高危安全漏洞。此漏洞由美国国家安全局(NSA)发现并披露给了Microsoft , 漏洞编号为CVE-2020-0601。
在最新公告中,微软承认CVE-2020-0601带来的高危影响,并表示Windows CryptoAPI(Crypt32.dll)中用于验证椭圆曲线密码学(ECC)证书的方式中存在一个欺骗漏洞。黑客利用该漏洞可以签署任意恶意可执行文件,将其伪装成为受信任的合法来源。微软表示:“成功利用此漏洞还可以使攻击者进行中间人攻击并解密机密信息。用户与受影响软件的连接。”
ECC椭圆曲线加密(Elliptic curve cryptography)是一种建立公开密钥加密的算法,基于椭圆曲线数学,于1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC的主要优势在于某些情况下比其他方法使用更小的密钥(如RSA加密算法)来提供相当或更高等级的安全。
ECC椭圆曲线加密原理在于:设G为曲线上一点,d为一个整数令点Q = d.G,若给定d和G,很容易求出Q,若给定G和Q ,很难求出d。 其中Q为公钥,d为私钥。
CVE-2020-0601漏洞原理在于 win10 增加了对带参数ECC密钥的支持,但在 crypt32.dll 中做签名验证时,只检查匹配的公钥 Q,而没有检查生成元 G。 公钥 Q = dG,d 是私钥。由于 win10 支持自定义生成元 G’,攻击者可以提供 G’ = Q,d’ = e(单位元),使得 公钥Q = dG = d’G’。 这两对(Q, G)-(Q, G’)中 公钥Q 相同,G 与 G’ 不同,由于验证缺陷,只检测 公钥Q。 从而,攻击者用自己的私钥 d’ 签名,会被验证通过,认为是官方私钥d 做出的签名。
影响版本
Microsoft Windows 10 Version 1607 for 32-bit Systems
Microsoft Windows 10 Version 1607 for x64-based Systems
Microsoft Windows 10 Version 1709 for ARM64-based Systems
Microsoft Windows 10 Version 1803 for 32-bit Systems
Microsoft Windows 10 Version 1803 for ARM64-based Systems
Microsoft Windows 10 Version 1803 for x64-based Systems
Microsoft Windows 10 Version 1809 for 32-bit Systems
Microsoft Windows 10 Version 1809 for ARM64-based Systems
Microsoft Windows 10 Version 1809 for x64-based Systems
Microsoft Windows 10 Version 1903 for 32-bit Systems
Microsoft Windows 10 Version 1903 for ARM64-based Systems
Microsoft Windows 10 Version 1903 for x64-based Systems
Microsoft Windows 10 Version 1909 for 32-bit Systems
Microsoft Windows 10 Version 1909 for ARM64-based Systems
Microsoft Windows 10 Version 1909 for x64-based Systems
Microsoft Windows 10 for 32-bit Systems
Microsoft Windows 10 for x64-based Systems
Microsoft Windows 10 version 1709 for 32-bit Systems
Microsoft Windows 10 version 1709 for x64-based Systems
Microsoft Windows Server 1803
Microsoft Windows Server 1903
Microsoft Windows Server 1909
Microsoft Windows Server 2016
Microsoft Windows Server 2019
安全建议
建议尽快安装2020年1月发布的补丁更新,以有效缓解Windows 10和Windows Server 2016/2019系统上的此漏洞。