知名SSH客户端PuTTY日前被发现一枚高危安全漏洞,该漏洞广泛影响PuTTY各个版本,包括:0.68、0.69、0.70、0.71、0.72、0.73、0.74、0.75、0.76、0.77、0.78、0.79、0.80版。是不是发现漏了一个版本?是的PuTTY0.67版是不受影响的,目前该漏洞计划是在0.81版中修复,该版本尚未发布。
根据说明PuTTY从0.68~0.80版中使用NISTP521椭圆曲线算法(ECDSA)私钥生成签名的代码存在严重漏洞,当PuTTY使用密钥向SSH服务器验证身份时就会生成签名。
坏消息是这个安全漏洞会泄露用户使用的私钥,当攻击者拿到几十条签名消息和公钥后就可以用来恢复私钥然后伪造签名,接着攻击者就可以登录服务器进行各种操作了。
作为安全建议PuTTY建议用户从服务器中删除旧公钥文件authorized_keys,其他SSH服务器中的等效密钥也应该删除,这样密钥的签名文件就不具备任何作用,再生成一对新密钥替换即可。
好消息是目前经过检查唯一受影响的密钥类型为521位ECDSA,也就是说用户如果使用的是其他类型的密钥那么是不受影响的,包括ED25519等也都不受影响。
如何检查密钥类型:WindowsPuTTYgen生成器中可以看到密钥指纹的提示框,包括ecdsa-sha2-nistp521等,或者加载到WindowsPageant中的描述为NISTp521,也就是看到提示或描述中带有p521那就是受影响的密钥类型。
为了彻底解决这个漏洞,PuTTY0.80版计划完全放弃用于生成密钥的旧系统,同时将所有DSA和ECDSA密钥类型切换到RFC6979标准。
技术细节:https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-p521-bias.html