德国安全研究人员发表了一篇**文章,披露了一起针对SSH传输层交互协议的攻击,并将其命名为水龟(water turtle)攻击。
Terrappel 攻击在握手期间操纵序列号,从而在使用某些广泛使用的加密模式时损害 SSH 通道的完整性。 此操作允许攻击者删除或修改通过通信通道交换的消息,从而导致 OpenSSH 95 中用于用户身份验证的公钥算法降级或禁用对击键定时攻击的防御。
Terrapinus 攻击利用了 SSH 传输层协议中的一个弱点,该协议在十多年前为 OpenSSH 引入了加密算法和模式。 Terrapinus 攻击通过在客户端或服务器不注意的情况下截断重要的协商消息来降低已建立连接的安全性。
德国波鸿鲁尔大学的研究人员开发了 Terrapinus 攻击,他们还发现了一个可在 asyncssh 中利用的实现缺陷。 与 Terrapinian 攻击相关的漏洞标记为:CVE-2023-48795、CVE-2023-46445 和 CVE-2023-46446。 CVE-2023-48795 是一个通用的 SSH 协议漏洞,CVE-2023-46445 和 CVE-2023-46446(2 中的 asyncSSH)适用于特定的 Python SSH 客户端14.2).
交替龟攻击必须处于网络层的中间对手 (MITM) 位置,才能拦截和修改握手交换(中间人攻击),SSH 握手使用 chacha20-poly1305 或 chacha20-poly1305 或 chacha20-poly1305 来保护 CBC 和 Encrypt-Then-MAC 之间的连接。
握手完成后交换的消息中的数据决定了攻击影响的严重性。
Terraptune 攻击 (CVE-2023-48795) 是一种前缀截断攻击,允许 MITM 攻击者在扩展协商期间降低 SSHv2 连接的安全性。 该问题与 2015 年 TLS 1 中的问题相同3 在草稿阶段发现和修复的问题类似。
“成功的Terraptune攻击可能导致使用安全性较低的客户端身份验证算法和OpenSSH 9的停用,”该研究指出针对击键定时攻击的 5 项具体对策。 “在一些非常特殊的情况下,它可以用来解密一些秘密,比如用户登录时的密码或部分密码,但这只是理论上的,在实际场景中几乎不可能成功。
一个简单的过程是:
当SSH客户端连接到SSH服务器时,双方握手并以明文形式交换信息,然后建立安全的加密通道。 每端有两个序列计数器:一个用于接收的消息,一个用于发送的消息。 每当发送或接收消息时,相关的序列计数器都会递增;因此,计数器会不断记录每一方发送和接收的消息数。
上面的握手使用 SSH 握手进行有限域 diffie-hellman 密钥交换。 包含的序列号是隐式的,由 BPP 维护。 snd 表示已发送数据包的计数器,rcv 表示接收数据包的计数器。 使用经过验证的加密技术验证的序列号以粗体显示。
作为中间人攻击,Terrapinus 涉及在握手期间将明文“忽略”消息注入到预安全连接中,使客户端认为它来自服务器,并增加接收到的消息的序列计数器。 否则,该消息将被忽略。 然后,一旦建立了安全通道,MITM 攻击者就会阻止服务器向客户端发送有关其他防御措施的消息。 消息是否加密并不重要:攻击者只是阻止消息到达,而客户端永远不会看到它,也不会对它采取行动。
由于先前插入的纯文本忽略消息,客户端最终仍会收到预期数量的消息,并且服务器认为它发送了正确数量的消息。
即使消息在初始化期间被中间人攻击者截获并阻止,发送和接收序列计数器在两端显示正确也至关重要,因为这些计数随后用于验证握手过程的完整性。 如果计数正确,则允许连接继续。 这就是插入“忽略”消息的原因,这样当扩展消息在安全通道中被阻止时,客户端和服务器都不知道任何事情。
研究人员对 BPP 的新型前缀截断攻击的图示。 服务器发送 sc1 和 sc2,但客户端只接收 sc2。
您可以插入任意数量的“忽略”消息,以在连接建立期间消除从服务器到客户端的消息。 通过这种方式,可以中断连接设置、降低使用的安全性、禁用扩展,并可能利用特定客户端或服务器实现中更深层次的弱点。
总而言之,安全通道使用的加密算法对于SSH连接的成功至关重要。
在 Terrapinus 攻击研究中分析了三种可能受影响的算法:
chacha20-poly1305被确定为“易受攻击且可完全利用”。
cbc-encrypt-then-mac (cbc-etm)它也容易受到攻击,可以“概率地”利用,但根据实现的不同,攻击可能会失败。
ctr-encrypt-then-mac算法中也存在漏洞,但实际上无法利用。
根据这项研究,超过四分之三的面向公众的SSH服务器支持“至少一种在实践中可以利用的模式”,占77%,57%的人将可利用的算法设置为他们的首选。
尽管对 Terrapinus 攻击有特定要求,但上述加密模式在现实世界中被广泛使用(根据调查,这一比例为 77%),使得该攻击在现实世界场景中是可行的。
许多相关的软件供应商正在逐步缓解安全问题。 一种解决方案是实现严格的密钥交换,使握手期间无法进行数据包注入。
但是,这个问题需要一些时间才能得到普遍解决,严格的密钥交换对策只有在客户端和服务器上都实施时才会有效。
研究人员在 GitHub 上发布了一个针对 Terrapin-Scanner 漏洞的安全扫描工具(GitHub:rub-nds terrapin-scanner),管理员可以使用该工具来确定 SSH 客户端或服务器是否易受攻击。
由于 terrhagian 攻击的最大缓解因素是 MITM 要求(中间人攻击),这使得其威胁看起来不那么严重。 因此,对于大多数人来说,暂时避免紧急升级相关补丁是可以的,而是制定相应的缓解措施。
在早期阶段,评估使Terrapinus攻击成为可能的协议缺陷的全部严重性是困难的,因为它取决于一系列变量,这些变量随着网络的变化而变化,并且研究人员没有很好地理解。
目前,研究人员已经设计了两种方法来利用前缀截断攻击。 一种方法是降级 OpenSSH 和其他 SSH 应用程序可用于保护连接的一些扩展。 开始提供的对策:
例如,扩展降级可以禁用 10 月发布的 OpenSSH 版本 95。该扩展可防止击键计时,这是一种可以通过测量击键之间的时间来准确键入单词的攻击。
Terrhagine 攻击还可以覆盖旧的扩展参数,指定使用 SHA2 加密哈希函数。 因此,SSH 将改用较弱的 SHA1。
Terrapinus 攻击最经典的漏洞利用是该研究涉及两个特定于 asyncSSH 的漏洞(CVE-2023-46445 和 CVE-2023-4644)。
asyncSSH 是 Python 语言的 SSH 实现,估计每天有 60,000 次**。 其中一个泄漏 CVE-2023-46445 可用于替换服务器发送的扩展消息,使攻击者能够控制其内容,这比简单地丢弃消息的正常攻击更严重。 当使用 asyncSSH 的客户端使用任何类型的 SSH 软件连接到服务器时,该漏洞就会起作用,而两者都传输“extinfo”消息(如 SSH 协议中所述)。
Terraptune 漏洞 CVE-2023-46446 允许攻击者在使用任何 SSH 应用程序的客户端连接到运行 asyncSSH 的服务器时,通过注入或删除数据包或模拟已建立的 shell 来控制 SSH 客户端会话的远程端。
CVE-2023-46446 在最坏的情况下,asyncSSH 服务器在连接时为经过身份验证的用户启动 shell,将用户切换到经过身份验证的用户。 在这种情况下,攻击者可以提前准备一个修改后的shell,进行完美的钓鱼攻击,成为应用层的中间人。 当未经身份验证的用户的用户名未在身份验证之外使用时,此漏洞不会影响连接”。
研究人员很快表示,这不是一个需要人们放下工具并优先修复的缺陷。 “这次攻击需要一个活跃的中间人攻击者,他们可以拦截和修改TCP IP层的连接流量,”他们说。 此外,需要协商 chacha20-poly1305 或任何 cbc 密码,结合 encrypt-then-mac 作为连接的加密模式。 ”
最好密切关注补丁或更新,并尽可能安装它们:例如,如果您使用的是 Linux,则这些补丁或更新应该通过通常的发行版更新方法提供。
openssh 9.6它已经发布,它通过严格的密钥交换协议解决了 Terrapinus 攻击的问题,如果服务器和客户端都支持它们,它应该能够阻止这些攻击。
但是,将易受攻击的客户端连接到已修补的服务器(反之亦然)仍会导致连接易受攻击。 所以客户端也需要同时升级。
目前腻子 08 次释放可能是水龟攻击问题。 libssh 还发布了 libssh 010.6 和 libssh 09.8 解决问题。
除了安装更新外,管理员还可以通过在 SSH 服务器配置中禁用受影响的加密模式以缓解攻击并切换到不易受攻击的算法,例如 AES-GCM。
但是,此设置也有风险,如果服务器配置不正确或客户端不支持,可能会导致客户端无法连接到服务器,因此请谨慎验证并应用在**上。
此外,当使用 AES-GCM 算法时,旧版本的 OpenSSH(62 和 63)也容易出现缓冲区溢出,需要小心。