最近一项学术研究展示了如下情况:对于某些特定设备,他人可以监听其 SSH 连接,然后借助一些运气在无声无息中破译出主机的私有 RSA 密钥,从而冒充该设备。
冒充这些设备后,通过使用推断出的主机密钥私钥实施的中间人攻击,间谍可以安静地记录用户的登录信息,同时,通过将这些连接转发给真正的设备,他们还可以监控用户在远程 SSH 服务器上的活动。尽管 SSH 还有其他功能,但其主要应用场景仍然是用户登录到设备并通过命令行接口进行控制。
据悉,可以通过被动监视从客户端到易受攻击设备的 SSH 服务器的连接,获得主机的 RSA 密钥私钥:无论是在签名生成过程中的偶发运算错误,还是因宇宙射线等微小故障产生的自然错误,都可以被观察和利用来推算 SSH 服务器的主机密钥私钥,这本应是保密的。
虽然可能认为自然错误发生的概率很小,偶发错误可能已为众所周知,但实际上只要你连续观察足够多的到有漏洞的 SSH 服务器的 SSH 连接,你就有可能发现一个你可以利用的。
重要的一点是,软件库 OpenSSL 和 LibreSSL,以及 OpenSSH,都未发现存在上述密钥推导问题的漏洞。由此,我们认为,网上的大部分设备、服务器和其他设备都不会受到影响,只有特定的物联网设备和类似的嵌入式设备可能会对此种攻击敏感。此外,这种问题也仅影响 RSA 密钥。
细节
由加利福尼亚大学圣地亚哥分校的 Keegan Ryan、Kaiwen He(他同时也在麻省理工学院任职)、George Arnold Sullivan 以及 Nadia Heninger 基于早期的一些研究,完成并撰写了这项研究。他们采用的技术,旨在揭示 RSA 密钥私钥,该技术源于 Florian Weimer 在 2015 年对 TLS 的突破性研究,以及 2022 年圣地亚哥论文的几位作者以及其他研究者的一些工作,这些工作可追溯到 1990 年代。
信息安全专家 Thomas Ptacek 曾高度赞扬了 2023 年研究的合著者 Nadia Heninger,并在此分享了 RSA 密钥分析论文的摘要,以便于理解这个问题。我们同时也要感谢曾在 Register vulture 工作的 Dan Goodin,他在周一通过 Ars Technica 向我们报告了 UC 圣地亚哥论文的消息。
基本上,当客户端尝试连接到一个容易受到攻击的 SSH 服务器时,它们在协商建立全面安全加密通信的过程中,服务器将会生成一个数字签名以供客户端检查,以确保其正在与预期的服务器通信。
如我们之前所述,这个签名的计算过程可能会随机或意外地产生错误,聪明的算法可以从错误的签名中推导出服务器的私有 RSA 密钥,此密钥用于签名生成。对此的一种防范措施是在将签名发送给客户端前确保其计算正确;OpenSSL 和 LibreSSL 已经在实施这种防范。
正如论文作者在他们的摘要中提到的:
“我们证明了一种可能性:若 SSH 服务器在进行签名计算过程中出现自然故障,一名被动的网络攻击者便有机会获得其私有 RSA 主机密钥。
在之前的研究中,我们通常认为这对于 SSH 协议是不可行的,因为签名中包含了一些信息,比如 Diffie-Hellman 共享密钥,这些信息对于被动的网络观察者来说无法获得。
然而,我们证明了,在 SSH 中经常使用的签名参数下,如果出现了签名错误,我们便能有效地使用 格攻击lattice attack
我们对 SSH、IKEv1、IKEv2 协议进行了安全分析,在此场景下,我们利用我们的攻击方法在现实环境中挖掘出几个存在漏洞的独立实现中的数百个被攻破的密钥。
“一个被动的对手可以安静地监控合法的连接,不用冒被检测的风险,直到他们观察到一个包含私钥的错误签名。”研究团队做出了这样的结论:“然后,攻击者可以主动且不会被检测地冒充被攻破的主机,从而截取敏感数据。”
研究人员表示,他们已经扫描了整个互联网,并翻查了以前收集的 SSH 扫描数据,以测量易受攻击的签名的流行程度。他们声称,他们的数据集涵盖了 52 亿条 SSH 记录和超过七年的观察,其中包含了超过 59 万个无效的 RSA 签名。
通过他们的格密钥恢复技术,学者们表示,其中超过 4900 个错误的签名揭示了对应 RSA 公钥的因子分解。他们利用这些信息,推导出了 189 个公钥的私有 RSA 密钥。
在他们的研究中,作者们发现,思科、Zyxel、山石网科和 Mocana 这四个制造商的产品都可能受到这种密钥侦测攻击。研究者已经向思科和 Zyxel 报告了这个问题,观察到两家供应商都迅速进行了调查行动。
思科判定其 ASA 和 FTD 软件在 2022 年已经解决了此问题,且在这篇论文发布之前,公司正在对其 IOS 和 IOS XE 软件进行调查,看看如何应对此问题。
同一时间,Zyxel 发现这个缺陷只影响到了它那些已停止服务的固件,并且它已经开始使用不受此问题影响的 OpenSSL。研究人员表示,他们没有成功地与山石网科和 Mocana 取得联系,所以决定把这个问题提交给了 CERT 协调中心。
据称,自诩为 “SSH-2.0-SSHD” 的 SSH 服务器实现也可能受到攻击,这可能会影响到一些企业级的 Java 应用。有鉴于这个密钥推导技术的关键在于 PKCSv1.5,使用 PKCSv1.5-RSA 签名的 DNSSEC 可能也在风险之中。
他们还指出,他们在 IPsec 连接中收集到的签名数据集不大,所以无法确定此协议是否也可能受到类似的密钥泄漏攻击。他们表示:“鉴于易受攻击的签名故障很罕见,根据我们的数据,我们无法对 IPsec 实现得出多少结论,我们认为这个问题值得进一步研究。”