PuTTY0.68 到0.80(含)的各个版本中的签名工具(PuTTY, or Pageant)代码存在严重漏洞,使得使用NIST P521曲线类型的ECDSA私钥证书存在问题,对使用该类密钥对进行身份验证时登陆SSH,可以被人攻击重现攻击窃取私钥。漏洞CVE标准编号为CVE-2024-31497。漏洞由波鸿鲁尔大学的Fabian Bäumer和Marcus Brinkmann发现并上报。
概述摘要:NIST P521私钥因有偏差算法导致生成签名暴露。
类别:高危安全漏洞。
优先级:高,已经在0.81版本中被修复
问题版本: 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
问题修复版本:0.81
该漏洞的影响可以知道私钥泄露。一名攻击者通过数十枚签名消息和公钥,就可以有足够的信息来通过算法来重放攻击恢复出私钥,然后就可以伪造签名来登录到使用该密钥的任何服务器,或者获得使用SSH证书认证的Git平台上(比如Github)上所有仓库的操作权限。为了获得这些签名,攻击者只需要简单地使用密钥进行身份验证的任何服务器,或者立即获得持有密钥的访问权(比如个人所有仓库的操作权限)。
因此,如果签发并使用了这类密钥,建议立即撤销该该证书:从其授权的主机的OpenSSH中删除旧的公钥authorized_keys文件,或者其他SSH认证中的授权(比如Github和Gitlab等的个人证书。),用最新版本的(0.81)重新签发一个新的密钥对来替换掉所有的证书。
但是,该漏洞唯一受影响的PuTTYgen生成密钥类型是ECDSA 521位类型的密码。也就是说,出现在Windows PuTTYgen中的密钥为ecdsa-sha2-nistp521在“密钥指纹”的开头框,或加载到Windows Pageant时描述为“NIST p521”,或者在SSH中协议或密钥文件有一个id ecdsa-sha2-nistp521开头的证书才受影响。其他大小或者类型ECDSA证书不受影响,比如Ed25519证书不受影响。基本上绝大多数人的的证书不受该漏洞影响。
相关软件下面的系统中由于打包了受影响的Putty系统,也受该漏洞的影响:
FileZilla 3.24.1 - 3.66.5
WinSCP 5.9.5 - 6.3.2
TortoiseGit 2.4.0.2 - 2.15.0
TortoiseSVN 1.10.0 - 1.14.6
漏洞详细说明所有DSA签名方案都需要在期间发明一个随机值签名,称为“随机数”。密码学术语,一般表示所使用的值仅一次,常用字母k表示。在DSA签名算法中,如果攻击者可以猜测到使用的k ,或者找到任意两个使用相同的k生成的签名,则可以以此来恢复证书。
这意味着在没有高质量的随机源系统上生成DSA签名是危险的,可能会导致SSH会话泄露,甚至导致私钥泄露。由于PuTTY中的随机数生成算法开发年代比较久远(2001年),其算法中使用确定性方法生成其k,避免了需要对于随机数来说。 一般的技巧是计算一个安全的哈希,要对其加入包括要签名的消息以及私钥。安全哈希输出与随机输出无法区分数据(否则哈希函数无法完成其工作),并且尝试的攻击者无法通过重复生成方法来重放生成私钥。目前现有的安全随机密码技术标准RFC 6979,发布于2013年。
PuTTY由于种种原因并没有遵循该规范,导致了该漏洞的出现。PuTTY使用的算法是通过生成SHA-512哈希值,然后通过mod q计算减少其位数,其中q是在DSA系统的序列。对于整数DSA,q约为160位。而对于椭圆曲线DSA它的位数与曲线模数相同,因此NIST曲线为256,384或521位。
在除P521之外的所有这些情况中,对512位数字mod q的计算偏差可以忽略不计。但是对P521而言,其q为521位(即超过512位),mod q减少的512位数字没起到效果,使得到的随机数k的值为前9位始终为零,从而产生了系统性的偏差。由于这种算法的偏差可以针对性的进行密钥恢复攻击。由于直接可以通过算法计算模拟k值,其攻击的难度减少,比攻击者先窃取k的攻击更容易,因为如果要通过窃取k来进行此类攻击至少需要先窃取60个所有的k值。
问题解决和缓解措施此漏洞已在 PuTTY 0.81、FileZilla 3.67.0、WinSCP 6.3.3 和 TortoiseGit 2.15.0.1。 建议 TortoiseSVN 用户配置TortoiseSVN使用最新PuTTY 0.81版本的Plink通过SSH访问SVN存储库时,直到新补丁可用。
与任何易受攻击的产品/组件一起使用的ECDSA NIST-P521密钥应被认为受到损害请将其从主机证书授权文件authorized_keys、GitHub或者其他平台的证书授权列表中清除,并用最新版本签发证书重新添加授权。