1. 前言
OpenSSH是一套基于安全外壳(SSH)协议的安全网络实用程序,它提供强大的加密功能以确保隐私和安全的文件传输,使其成为远程服务器管理和安全数据通信的必备工具。
OpenSSH 自 1995 年问世近 20 年来,首次出现了未经验证的远程执行(RCE)漏洞,攻击者可以提权至 root 最高权限,在不需要用户交互的情况下执行任意代码。
该漏洞是由于OpenSSH服务器 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在Linux系统上以root身份执行任意代码。
2. 漏洞信息
2.1 发现
该漏洞于今年 5 月被网络安全公司 Qualys 发现,追踪编号为 CVE-2024-6387,存在于 OpenSSH 服务器(sshd)中,由于信号处理器竞赛条件存在缺陷,可以让未经认证的远程攻击者以 root 用户身份执行任意代码。
2.2 相关公告
Debian 安全公告:
如果客户端没有在 LoginGraceTime 秒(默认为 120 秒)内通过身份验证,那么 sshd 的 SIGALRM 处理程序就会被异步调用,并调用各种不安全的异步信号函数。
Qualys 公司的公告:
攻击者利用该漏洞,可以让系统全面瘫痪,以 root 最高级别权限全面接管系统,安装恶意软件、篡改数据和创建后门便于后续访问等等。
而且攻击者可以利用该漏洞发起连锁攻击,以已经被入侵的系统为立足点,辐射攻击网络中其它存在问题的设备。
奇安信公司的安全风险通告:
2.2技术细节
以下是我对Qualys 提供的技术文档的总结。
CVE-2024-6387是一个影响OpenSSH服务器的漏洞(sshd),存在于glibc基础的Linux系统上。这一漏洞源于一个信号处理竞态条件,当客户端未在指定的LoginGraceTime秒内完成认证时,sshd的SIGALRM信号处理程序会被异步调用,而这个信号处理程序调用了非异步信号安全的函数(如syslog())。这个漏洞的重现来源于2006年报道的CVE-2006-5051漏洞。
影响版本
- OpenSSH < 4.4p1:若未对CVE-2006-5051完成补丁,容易受到这个信号处理竞态条件的影响。
- 4.4p1 <= OpenSSH < 8.5p1:不受此漏洞影响。
- 8.5p1 <= OpenSSH < 9.8p1:由于2020年10月的一个错误提交重新引入了这个漏洞。
漏洞细节及利用
- 信号处理竞态条件:当sshd的LoginGraceTime到期后,其SIGALRM处理程序会调用syslog()等非异步信号安全的函数,从而导致潜在的远程代码执行(RCE)。
利用方式
-
理论研究:
- 找到一个有用的代码路径,如果在正确的时间被SIGALRM打断,那么sshd会处于一种不一致的状态,然后利用这种不一致状态进行攻击。
-
实践经验:
- 通过中断sshd的公钥解析代码中的free()调用,造成堆中内存状态不一致。
- 利用这种不一致状态在SIGALRM处理程序的另一个free()调用中实现远程代码执行。
时间策略
-
旧版本攻击:
- SSH-2.0-OpenSSH_3.4p1:通过实践发现平均需要约10,000次尝试来赢得竞态条件,最终大约需要一周时间获得远程root shell。
- SSH-2.0-OpenSSH_4.2p1:类似的方法大约需要1-2天获得远程root shell。
-
现代版本攻击:
- SSH-2.0-OpenSSH_9.2p1:
- 在SIGALRM中断malloc()调用,造成堆内存不一致。
- 利用不一致内存状态在SIGALRM处理程序中的另一个malloc()调用(尤其在syslog()内部)。
- 平均需要10,000次尝试约3-4小时以内实现,最终6-8小时内获得远程root shell。
- SSH-2.0-OpenSSH_9.2p1:
针对amd64的利用前景
- 计划针对Rocky Linux 9进行攻击,利用glibc映射的地址特点及malloc系列函数的漏洞进行远程代码执行。
修复与缓解
- 官方修复:2024年6月6日的commit(81c1099)修复了这一漏洞,改进了sshd信号处理的机制。
- 临时解决方案:对于无法立即更新或重编译的系统,可以通过配置LoginGraceTime为0来暂时规避远程代码执行问题,但会造成潜在的拒绝服务(DoS)风险。
2.3 漏洞利用
尽管该漏洞很严重,但 Qualys 称 regreSSHion 很难被利用,需要多次尝试才能实现必要的内存破坏。
Qualys 的技术文件对漏洞利用的描述如下:
由于该漏洞的远程竞态条件性质,使得利用它变得具有挑战性,需要多次尝试才能成功攻击。这可能导致内存损坏,并需要克服地址空间布局随机化(ASLR)。深度学习技术的进步可能显著提高利用率,从而为攻击者在利用此类安全漏洞时提供巨大的优势。
2.4 影响版本
8.5p1 <= OpenSSH < 9.8p1
2.5 处理建议
1. 目前官方已有可更新版本,建议受影响用户升级至最新版本:
OpenSSH > 9.8p1
官方补丁下载地址:
https://www.openssh.com/releasenotes.html
2. 使用防火墙等网络控制手段限制 SSH 访问,并实施网络分段以防止横向移动(指网络攻击者或威胁行为者在搜索最终成为攻击活动目标的关键数据和资产时用来逐步在网络中移动的技术)。
3. 如果 OpenSSH 服务器无法立即更新,可在 sshd 配置文件中将 "LoginGraceTime" 设置为 0,但要注意这可能会使服务器遭受拒绝服务攻击。
最后
这个漏洞影响极广,因为openSSH被广泛使用。漏洞成功利用后的影响也是极大的,因为可以以root身份执行任意代码。但是同时我们也发现这个漏洞利用难度很大,需要多次尝试才能实现攻击。
在如今AI时间,深度学习技术的加持可以帮助黑客显著提高漏洞利用成功率,所以这个漏洞我们不容轻视。
参考资料
Qualys博客:
regreSSHion: Remote Unauthenticated Code Execution Vulnerability in OpenSSH server | Qualys Security Blog
问题代码:
whttps://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt
奇安信CERT
OpenSSH 远程代码执行漏洞(CVE-2024-6387)安全风险通告 (qq.com)
阿里云漏洞库
阿里云漏洞库
IT之家