PuTTY 是一种流行的开源终端仿真器、串行控制台和网络文件传输应用程序,支持 SSH(安全外壳)、Telnet、SCP(安全复制协议)和 SFTP(SSH 文件传输协议)。
系统管理员和开发人员主要使用该软件从基于 Windows 的客户端通过 SSH 远程访问和管理服务器和其他网络设备。
PuTTY 0.68 至 0.80 中的 CVE-2024-31497 漏洞允许有权访问 60 个加密签名的攻击者恢复用于其生成的私钥。
该漏洞被追踪为 CVE-2024-31497,由 PuTTY 为用于 SSH 身份验证的 NIST P-521 曲线生成 ECDSA nonces(临时唯一加密数字)而引起的。
具体来说,由于 PuTYY 使用确定性方式来生成这些数字,以弥补特定 Windows 版本上缺乏强大的加密随机数生成器,因此存在偏差。
PuTTY 技术的工作原理是生成 SHA-512 散列,然后对它进行 mod q 缩减,其中 q 是 DSA 系统中使用的组的阶数。对于整数 DSA(PuTTY 技术最初是为此开发的),q 约为 160 位;对于椭圆曲线 DSA(后来出现),它的位数与曲线模数大致相同,因此 NIST 曲线为 256 或 384 或 521 位。
在除 P521 之外的所有情况下,通过减少 512 位数字 mod q 引入的偏差可以忽略不计。但在 P521 的情况下,其中 q 有 521 位(即超过 512 位),减少 512 位数字 mod q 所带来的偏差可以忽略不计。q 没有影响——得到的 k 值的前 9 位始终为零。
恢复私钥的主要影响是它允许未经授权地访问 SSH 服务器或以开发人员身份签署提交,甚至可能对受影响的软件项目进行供应链攻击。
使用用户的私钥创建数字签名,并通过服务器上相应的公钥进行验证,保证用户的身份和通信的安全。攻击者需要 58 个签名才能计算目标的私钥,他们可以通过从他们控制或受到损害的 SSH 服务器登录或从签名的 Git 提交中收集签名来获取私钥。
从 SSH 服务器收集签名意味着服务器本身已经受到威胁,因此威胁分子可以广泛访问操作系统。然而,从公共提交中获取签名的方法对于攻击者来说更为实用。
在某些情况下,无需提前损害服务器即可利用此漏洞。其中一种情况是使用 SSH 密钥来签署 Git 提交,常见的设置包括在本地使用 Pageant(PuTTY 的 ssh 代理)并将代理转发到开发主机。
在这里,将 Git 配置为使用 OpenSSH 使用 Pageant 提供的 SSH 密钥对 Git 提交进行签名,然后由 Pageant 生成签名,使其容易被私钥恢复。
开发人员在 PuTTY 0.81 版本中修复了该漏洞,该版本放弃了之前的 k 代方法,并针对所有 DSA 和 ECDSA 密钥切换到 RFC 6979 技术。
然而,值得注意的是,使用该工具的易受攻击版本生成的任何 P521 私钥都应被视为不安全,并应替换为新的安全密钥。
以下使用易受攻击的 PuTTY 的软件已确认受到影响:
·FileZilla 3.24.1 – 3.66.5(在 3.67.0 中修复)
·WinSCP 5.9.5 – 6.3.2(在 6.3.3 中修复)
·TortoiseGit 2.4.0.2 – 2.15.0(在 2.15.0.1 中修复)
·TortoiseSVN 1.10.0 – 1.14.6(可以通过配置 TortoiseSVN 使用最新 PuTTY 0.81 版本中的 Plink 来缓解)
可能有更多软件工具受到 CVE-2024-31497 的影响,这具体取决于它们所采用的 PuTTY 版本。因此,建议用户检查他们的工具并根据需要采取预防措施。
参考及来源:https://www.bleepingcomputer.com/news/security/putty-ssh-client-flaw-allows-recovery-of-cryptographic-private-keys/
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.