SSH协议中发现新安全漏洞CVE-2023-48795

德国波鸿鲁尔大学的一组研究人员发现了 Secure Shell (SSH) 协议中的新安全漏洞,攻击者可能会利用该漏洞破坏 SSH 连接的完整性。

该漏洞名为 Terrapin Attack,编号为(CVE-2023-48795,CVSS 评分:5.9),该漏洞被描述为“有史以来第一个实际可利用的前缀截断攻击”。

SSH 是一种网络协议,用于在不安全的网络上安全访问远程服务器和服务。它使用加密技术确保连接安全,并对服务器进行身份验证。SSH 被系统管理员和开发人员广泛用于管理服务器和基础设施。

研究人员发现 SSH 存在两个核心问题,它们破坏了加密信息流的完整性:

  • SSH 无法完全验证客户端与服务器之间的初始握手。这使得攻击者可以注入信息并操纵用于验证数据包顺序的序列号。
  • 激活加密密钥时,SSH 不会重置序列号。因此,加密前对序列号的任何操作在安全通道内仍然有效。

通过利用这些缺陷,研究人员演示了一种 "前缀截断攻击",攻击者可以在不被发现的情况下删除 SSH 会话开始时的加密数据包。客户端和服务器都不会注意到丢失的数据包。

Terrapin 攻击是 SSH 协议本身的一种新型攻击,通过中间人(MITM)攻击,导致被攻击的客户端错误地认为服务器不支持用户身份验证中使用的最新签名算法。

该漏洞会影响所有 SSH 连接。

本研究将重点关注 OpenSSH 实现。有两种易受攻击的 OpenSSH 配置:

  • ChaCha20-Poly1305
  • 任何使用默认 MAC 的 aes(128|192|256)-cbc ciphers(或任何使用 Encrypt-then-MAC, EtM 的 MAC,例如 - hmac-sha2-256-etm@openssh.com)。

默认的 OpenSSH 客户端和服务器容易受到这种攻击,因为它们被配置为允许使用易受攻击的 ChaCha20-Poly1305 密码。

注意:仅更新服务器或客户端是不够的!两者都必须打补丁。连接到固定服务器的易受攻击客户端仍会导致易受攻击连接。

研究人员展示了几种可以使用前缀截断攻击的实用方法:

  • 通过欺骗客户端了解服务器的能力,降低所支持的密钥交换和身份验证算法的等级。
  • 禁用 OpenSSH 9.5 中最近推出的防范密码输入过程中击键计时攻击的对策。
  • 将用户在 AsyncSSH 上的 SSH 登录重定向到攻击者控制的 shell,从而完全控制会话。
  • 用攻击者选择的信息替换客户端的扩展协商信息,从而操纵会话。

通过全网扫描,研究人员发现 77% 的 SSH 服务器支持易受攻击的加密模式,因此它们都有可能受到攻击。

SSH 设计中发现的根本原因
根据分析,造成这些缺陷的根本原因是

  • SSH 握手不验证完整的副本,只验证选择性部分。这就允许 MitM 注入不支持的信息。
  • SSH 的设计目的是在整个连接过程中单调递增序列号。更改密钥时重置序列号并不是最初设计的一部分。

这些弱点以前没有被利用,是因为多年来添加的新加密模式和协议扩展开始以不可预见的方式相互作用,暴露了底层漏洞。

研究人员建议对 SSH 规范进行两项主要修改,以解决这些问题:

  • 激活加密密钥时,将序列号重置为零。这样可以防止在握手过程中操纵数字影响安全通道。
  • 在安全通道开始时验证完整握手副本的哈希值,类似于 TLS 中的 "完成 "信息。这样就能检测出任何篡改握手过程的恶意软件。

对于现在的客户端和服务器,可以通过避免使用易受攻击影响的加密算法(如 ChaCha20-Poly1305 和 CBC-EtM)来减少漏洞。不过,要想获得长期的解决方案,建议修复协议中的根本原因。