OpenSSH 中的 regreSSHion 漏洞
一种新的漏洞允许远程攻击者在 Linux 服务器上获取 root 权限。CVE-2024-6387 漏洞的利用难度如何?以及如何防止它被利用
在 OpenSSH 中发现了一个漏洞,这是一套用于远程管理 *nix 系统的流行工具。该漏洞允许未经身份验证的攻击者在受影响的系统上执行任意代码并获取 root 权限。这个漏洞被命名为 regreSSHion,并分配了 ID CVE-2024-6387。鉴于 sshd(OpenSSH 服务器)集成在大多数操作系统和许多物联网设备以及防火墙中,这一漏洞的描述听起来像是 WannaCry 和 Log4Shell 级别的新流行病的开端。实际上,情况有些复杂。该漏洞的大范围利用不太可能。然而,所有使用 OpenSSH 的服务器管理员必须紧急处理这一漏洞。
OpenSSH 的使用场景
OpenSSH 工具集几乎无处不在。它是 SSH(安全外壳)协议的一种流行实现,集成在大多数 Linux 发行版、OpenBSD 和 FreeBSD、macOS 以及基于 Junos OS 的专用设备中。由于许多电视、智能门铃、婴儿监视器、网络媒体播放器,甚至机器人吸尘器都基于 Linux 系统,OpenSSH 也常用于这些设备中。从 Windows 10 开始,OpenSSH 也可以在 Microsoft 的操作系统中使用,尽管它是一个默认不安装的可选组件。毫不夸张地说,sshd 运行在数千万台设备上。
如何触发 regreSSHion 漏洞
在 SSH 认证尝试期间,用户有一个时间限制来完成该过程,默认设置为 120 秒。如果认证未完成,sshd 服务器会异步调用特殊的 “sigalarm” 函数,而该函数又会调用系统级内存管理函数。这是在异步执行环境下不安全的。在某些条件下,并且有小概率,这可能触发竞争条件,导致内存边界违规和任意代码执行。
要利用这一漏洞,攻击者平均需要进行约 10,000 次尝试,并且目标系统必须基于使用 GNU C 库(glibc)的 Linux 版本,例如所有的 Debian 变种。此外,攻击者需要准备适用于特定版本的 glibc 和 Linux 的内存结构。研究人员已经在 32 位 Linux 系统上重现了攻击,但理论上,也有可能在 64 位系统上利用——尽管成功率较低。地址空间布局随机化(ASLR)减慢了利用过程,但不能提供完全保护。
有趣的是,OpenSSH 团队在 2006 年已经修复了这个漏洞,当时分配了 CVE-2006-5051。因此,这个新漏洞是一个回归——由于代码中引入的一些变化而重新出现的已知缺陷。这就是新漏洞名称 regreSSHion 的由来。
CVE-2024-6387 被实际利用的可能性
该漏洞是由研究人员发现并负责任地披露给开发团队的。因此,立即被利用的可能性不大。此外,上述技术复杂性使得大规模利用不切实际。使用标准 OpenSSH 设置进行 10,000 次认证尝试每台服务器需要 6 到 8 小时。此外,还需要知道服务器运行的是哪个版本的 Linux。如果服务器有任何防止暴力攻击和 DDoS 的保护措施,这些措施可能会阻止攻击。
尽管如此,定向利用还是有可能的。耐心的攻击者可以进行侦察,然后从不同的 IP 地址进行低频率的尝试,迟早他们可能会成功。
如何保护你的服务器免受利用
运行在 glibc-Linux 上的 OpenSSH 4.4p1 及以下版本,以及 8.5p1 到 9.7p1 版本都是脆弱的。基于 OpenBSD 的服务器不受影响,因此这些管理员可以稍微放心;然而,其他所有人都应该将 sshd 更新到 9.8 版本。
如果由于某些原因无法立即更新,管理员可以将登录超时设置为零(在 sshd_config 中设置 LoginGraceTime=0)作为临时缓解措施。然而,开发人员警告这会使 SSH 服务器更容易受到 DDoS 攻击的影响。
另一种可能的缓解措施是通过防火墙和其他网络安全工具实施更严格的 SSH 访问控制。