SSH协议不再安全-揭秘SSH协议前缀截断攻击

admin 2024年7月2日23:39:03评论5 views字数 2989阅读9分57秒阅读模式


摘要

SSH 是一种互联网标准,可提供对网络服务的安全访问,特别是组织网络内的远程终端登录和文件传输以及开放互联网上超过 1500 万台服务器的访问。Terrapin 是一种针对 SSH 协议的前缀截断攻击。更准确地说,Terrapin 破坏了 SSH 安全通道的完整性。通过在握手期间精心调整序列号,攻击者可以删除客户端或服务器在安全通道开头发送的任意数量的消息,而客户端或服务器不会察觉到。

攻击介绍

SSH 使用经过身份验证的密钥交换在客户端和服务器之间建立安全通道,从而保护双向发送的消息的机密性和完整性。安全通道可防止消息操纵、重放、插入、删除和重新排序。在网络级别,SSH 使用基于 TCP 的二进制数据包协议。

随着新的加密算法和缓解措施被添加到 SSH,SSH通道的完整性(INT-PST、aINT-PTXT和INT-sfCTF)在三种广泛使用的加密模式下被破坏了。这允许前缀截断攻击的发生,使得SSH通道开始处的加密数据包可以在客户端或服务器未察觉的情况下被删除。该攻击被证实可以完全破坏SSH扩展协商(RFC 8308),从而使攻击者可以降级用户认证的公钥算法,或关闭在OpenSSH 9.5中引入的针对击键时间攻击的新对策。此外, 在AsyncSSH中的有一个实现缺陷, 该缺陷与前缀截断相结合,允许攻击者将受害者的登录重定向到由攻击者控制的shell中。

更令人吃惊的是, 在整个互联网的探测中, 有71.6% 的 SSH 服务器支持易受攻击的加密模式, 而 63.2% 的服务器甚至将其列为首选。

攻击原理

Terrapin攻击的过程如下图:

SSH协议不再安全-揭秘SSH协议前缀截断攻击

上图展示了Terrapin 攻击的实际应用, 攻击者可以丢弃用于协商多个协议扩展的 EXT_INFO 消息, 而客户端或服务器不会注意到它。通常,客户端在收到服务器发送的下一个二进制数据包时会检测到数据包删除,因为序列号不匹配。为了避免这种情况,攻击者在握手期间注入被忽略的数据包,以相应地偏移序列号。

该攻击在实际中可以执行,使攻击者能够通过从记录中截断扩展协商消息(RFC 8308)来降低连接的安全性。截断操作可能导致使用较不安全的客户端认证算法,并在OpenSSH 9.5中停用针对击键时间攻击的特定对策。

为了在实践中执行 Terrapin 攻击,攻击者必须能够拦截和修改连接的流量。此外,连接必须通过 ChaCha20-Poly1305 或带有 Encrypt-then-MAC 的CBC来保护。然而,通过实际扫描表明这些加密模式被广泛采用;因此,Terrapin 适用于大多数现实世界的 SSH会话。

管理员如何应对

该攻击需要主动的中间人攻击者,该攻击者可以拦截并修改 TCP/IP 层的连接流量。此外,需要协商 ChaCha20-Poly1305 或任何 CBC 密码并结合 Encrypt-then-MAC 作为连接的加密模式。在补丁发布之前,可以通过在 SSH 服务器(或客户端)改用不受影响的加密算法,例如 AES-GCM。但存在的风险是: 如果配置不当或者客户端不支持这些算法, 可能会导致服务器无法访问。另外, 一些旧版本的OpenSSH(6.2和6.3)在使用AES-GCM算法时容易受到缓冲区溢出攻击。

攻击者可以获得什么?

该攻击是一种扩展降级攻击, 允许攻击者在使用 SSH 扩展协商时降低 SSH 连接的安全性。实践中的影响在很大程度上取决于支持的扩展。最常见的是,这会影响使用 RSA 公钥时客户端身份验证的安全性。使用 OpenSSH 9.5 时,它还可以用于停用针对击键定时攻击的某些对策。另外, Terrapin 攻击可用于利用其他实施缺陷进行某些攻击。例如,可以利用 AsyncSSH 内部状态机的缺陷结合攻击来获得会话层的 MitM 位置。然而,一般 Terrapin 攻击的潜在后果取决于握手结束后交换的消息。如果使用自定义 SSH 服务并且不采用身份验证协议,则应检查删除连接的前几条消息不会产生安全风险。

该攻击影响有多大?

几乎所有人。Terrapin 攻击利用 SSH 传输层协议中的弱点,并结合 OpenSSH 十多年前引入的较新的加密算法和加密模式。从那时起,这些已被广泛的 SSH 实现所采用,因此影响了大多数当前的实现。

在实践中,该攻击可以针对使用 ChaCha20-Poly1305 或任何 CBC 模式密码与 Encrypt-then-MAC 范例相结合的任何连接。理论上,CTR 模式密码与 Encrypt-then-MAC 范例相结合也很容易受到攻击,尽管这个弱点在现实场景中无法被利用。

该攻击的实用性如何?

Terrapin 攻击需要主动的中间人攻击者,这意味着攻击者可以通过某种方式拦截和修改从客户端或服务器发送到远程对等点的数据。这在互联网上很困难,但在本地网络上可能是一个合理的攻击模型。

除此之外,还要求使用易受攻击的加密模式。Encrypt-then-MAC 和 ChaCha20-Poly1305 已由 OpenSSH 十多年前推出。多年来,两者都已成为默认设置,并因此在 SSH 生态系统中传播。通过扫描发现,互联网上至少 77% 的 SSH 服务器支持至少一种可以在实践中利用的模式。

个人SSH客户端/服务器容易受攻击吗?

用更专业的术语来说,如果你的SSH 实现支持(并配置为提供) [email protected] 加密算法,或任何后缀为 -cbc 的加密算法与任何后缀为 [email protected] ,则很容易受到 Terrapin 的攻击。

其他协议和密码模式是否有影响?

截止到目前,尚未发现其他加密网络协议中存在任何实际的前缀截断。所有版本的 TLS 在更改密钥时都会将消息序列号重置为零,从而解耦未加密和加密的序列号。此外,TLS 对整个握手过程进行身份验证,从而防止攻击者插入任何消息。虽然 IPSec/IKE 仅验证其握手的部分内容,但序列号会像 TLS 一样重置,使其免受该攻击。

AES-GCM (RFC5647) 不受 Terrapin 的影响,因为它不使用 SSH 序列号。相反,AES-GCM 使用从密钥派生中获得的 IV 作为其随机数,并在发送二进制数据包后递增它。在健康的连接中,这会导致随机数与序列号有固定的偏移量。

RFC4253 中的原始加密和 MAC 范式保护明文的完整性,从而阻止了该攻击,这种攻击在解密过程中会产生一个伪随机块。

如何对该漏洞实施检测?

这里有一个开源库可以对该漏洞进行扫描检测:https://github.com/RUB-NDS/Terrapin-Scanner

该Terrapin 漏洞扫描程序是一个用 Go 编写的小型实用程序,可用于确定 SSH 客户端或服务器针对 Terrapin 攻击的漏洞。漏洞扫描器需要与对等方建立单一连接来收集所有支持的算法。但是,它不会执行完全成熟的 SSH 密钥交换,永远不会尝试在服务器上进行身份验证,并且在实践中不会执行攻击。相反,漏洞是通过检查支持的算法和对已知对策(严格密钥交换)的支持来确定的。如果对等方支持此工具未知的对策,这可能会错误地声称存在漏洞。

Terrapin攻击不是一个简单的软件错误,可以通过更新单个库或组件来修复。相反,客户端和服务器需要更新以保护连接免受前缀截断攻击。这意味着需要提高所有 SSH 客户端和服务器实现中对该问题的认识,这是一项相当大的工作。预计一般的 Terrapin 攻击将伴随我们很多年。

原文始发于微信公众号(二进制空间安全):SSH协议不再安全-揭秘SSH协议前缀截断攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日23:39:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SSH协议不再安全-揭秘SSH协议前缀截断攻击https://cn-sec.com/archives/2868699.html

发表评论

匿名网友 填写信息