新聞 | iThome ( ) • 2024-04-17 09:27

受欢迎的虚拟终端与网路档案传输工具PuTTY,被发现存在严重的ECDSA私钥生成漏洞CVE-2024-31497,攻击者可利用此漏洞恢复私钥并伪造签章,官方建议使用者立即撤销受影响的私钥。受影响的PuTTY版本包括0.68至0.80的每一个版本。

PuTTY中的严重漏洞CVE-2024-31497,让攻击者可以从一些已经签章的讯息和公钥恢复出私钥,一旦攻击者取得私钥,便能够伪造签章、假冒身分,进而登入使用该私钥的任何伺服器。

该漏洞之所以严重,是因为攻击者不需要长期控制伺服器或持续拥有存取权,短暂入侵使用该私钥进行身分验证的伺服器,或是暂时获得储存私钥的Pageant工具存取权限,就可获得签章,也就是说,攻击者只需要短暂的存取伺服器,即可产生严重的后果。

PuTTY的这个漏洞与nonce随机值(或称为k值)的生成方法有关。nonce是一个在签章过程需要随机生成的一次性数值,当攻击者能够猜到或是发现使用了相同k值的两个签章,就能立即恢复出私钥。由于PuTTY是在Windows上开发,早期Windows缺乏加密用随机数生成器,PuTTY选择了一种确定性方法来产生k值。

这种方法不仰赖外部随机数生成器,而且由于生成k值完全相依于输入资料和杂凑函式,减少了随机数来源品质不够高,可能导致的安全风险。但这种方法实作不当也可能出现安全问题,在PuTTY这个案例中,这种k值生成方法可用于多数的ECDSA曲线,但却会在NIST P521曲线加密演算法引入偏差,这种偏差足以允许攻击者恢复私钥,攻击者只要收集60个签章,便可恢复出私钥。

不过,值得庆幸的是CVE-2024-31497漏洞的影响范围有限,只有使用521位元的ECDSA私钥受到影响,具体来说,包括带有私钥指纹ecdsa-sha2-nistp521、载入到Windows Pageant中被描述为NIST p521,或者在SSH协定或是私钥档案中,ID以ecdsa-sha2-nistp521开头的私钥。

PuTTY开发团队放弃过去产生k值的旧系统,针对所有DSA和ECDSA私钥类型,切换使用RFC 6979技术。不过,就算PuTTY的CVE-2024-31497漏洞被修复,过去使用受漏洞影响的旧k值生成器所产生的签章,仍会导致P521私钥相关资讯泄漏。

攻击者只要能获得过去的签章和相关的公钥,就能恢复出私钥冒出用户身分,因此对于使用受影响版本的PuTTY与P521私钥的用户来说,除了更新软体之外,也要立即撤销并替换新的私钥。