OpenSSH 是几乎所有类 Unix 和 Linux 系统上默认安装的应用程序,最近由于Qualys发现的一个严重漏洞而受到严格审查。
该漏洞被命名为CVE-2024-6387,并被恰当地命名为“regreSSHion”,它使 Linux 环境面临远程未经身份验证的代码执行风险。该漏洞的影响深远,可能会影响全球无数的服务器和基础设施组件。
在这篇博文中,Splunk 威胁研究团队将剖析 CVE-2024-6387 的技术复杂性,探讨其对受影响系统的潜在影响,并提供检测机会和缓解策略。
关于 CVE-2024-6387 的要点:
-
漏洞:远程未经身份验证的代码执行(CVE-2024-6387)
-
受影响版本: OpenSSH 8.5p1 至 9.8p1
-
架构: 32 位 (x86)、64 位 (amd64) 的主要 PoC 理论上存在漏洞
-
系统:基于 glibc 的 Linux 发行版
-
影响:若被利用则可获得根级访问权限
-
复杂度:高(需要精确计时、多次尝试)
-
状态:补丁可用(OpenSSH 9.8p1)
技术细节
漏洞
CVE-2024-6387 源自 OpenSSH 中的信号处理程序竞争条件,影响基于 glibc 的 Linux 系统上的 8.5p1 至 9.8p1 版本。该漏洞是旧漏洞 (CVE-2006-5051) 的回归,允许远程攻击者以 root 身份执行任意代码,从而导致整个系统被攻陷。
信号处理程序竞争条件的性质:该漏洞发生在 OpenSSH 服务器 (sshd) 处理 SIGALRM 信号时。在受影响的版本中,SIGALRM 处理程序会调用非异步信号安全的函数,例如 syslog()。这会产生竞争条件,信号处理程序可能会中断代码的关键部分,从而可能导致系统处于不一致状态。攻击者可以利用这种不一致性来操纵内存并执行任意代码。
与旧版 CVE-2006-5051 的关系:有趣的是,此漏洞是 CVE-2006-5051 的回归,该漏洞最初于 2006 年得到修补。旧漏洞也是 OpenSSH 中的信号处理程序竞争条件。实施的修复程序在 2020 年 10 月对 OpenSSH 8.5p1 中的日志记录基础结构进行更改时无意中引入了新的漏洞。
这种回归凸显了长期维护复杂软件系统的安全性所面临的挑战。
利用的具体条件:利用此漏洞需要满足几个条件:
-
目标必须在基于 glibc 的 Linux 系统上运行易受攻击的 OpenSSH 版本(8.5p1 到 9.8p1)。
-
攻击者需要精准把握攻击时机,以达到竞争条件窗口。
-
由于竞争条件的性质,通常需要多次尝试。
-
该漏洞利用了 glibc 内存分配器的特定行为,使其主要在 Linux 系统上有效。
此漏洞的复杂性意味着,虽然漏洞十分严重,但成