关于OpenSSH的FAQ
时间 : 2024年07月08日 来源: 安天CERT
OpenSSH是什么?其分布广泛么?
SSH(Secure Shell)是一种安全网络协议,用于通过不安全的网络在两个不受信任的主机之间安全地传输数据。OpenSSH是SSH(Secure Shell)协议的一个开源实现。OpenSSH提供了服务器和客户端的功能,通常被用来实现远程登录和管理(例如通过SSH协议进行远程命令执行)、文件传输(通过SCP或SFTP协议)以及端口转发等功能。OpenSSH被包含在大多数Linux发行版、macOS以及Windows 10(通过Windows Subsystem for Linux或第三方软件)中。
OpenSSH广泛应用于以Linux作为底层系统的各种场景中,如主机系统,包括:服务器、云主机、虚拟主机、部分终端等;网络设备,包括:交换机、路由器等;网络安全设备,包括:防火墙、IDS、等各种安全设备,以及各种安全管理平台。各种嵌入式设备,如摄像头、多种物联网设备等。智能家电,如,智能电视、智能冰箱,扫地机器人等。
CVE-2024-6387漏洞机理是什么?
CVE-2024-6387被称为regreSSHion漏洞(CVE-2024-6387)的原理在于OpenSSH服务器(sshd)处理客户端登录超时时存在一个信号处理程序竞态条件,当客户端在LoginGraceTime设置的时间内未能完成认证时,sshd触发SIGALRM信号处理程序会异步执行,并调用非异步信号安全的syslog()函数,此函数可能执行不安全的内存操作,如malloc()和free()。攻击者利用这个时机发送特殊构造的数据包,尝试在syslog()调用期间精确地触发其它内存操作,造成竞态条件,进而可能操纵堆内存,覆盖关键的控制数据,导致sshd在信号处理程序结束后执行攻击者注入的任意代码,实现了未授权的远程代码执行。
要利用此漏洞,攻击者平均需要进行大约 10,000 次尝试,并且目标系统必须基于使用 GNU C 库 (glibc) 的 Linux 版本,例如Debian 变种。此外,攻击者需要准备针对特定版本的 glibc 和 Linux 量身定制的内存结构。研究人员在 32 位 Linux 系统上重现了这种攻击,但从理论上讲,在 64 位系统上也可以利用这种攻击——尽管成功率较低。地址空间布局随机化 (ASLR) 会减慢利用过程,但不能提供完整的保护。
regreSSHion漏洞(CVE-2024-6387)的出处可以追溯到OpenSSH服务器(sshd)中的一个信号处理程序竞态条件问题。这个问题最初在2006年作为一个拒绝服务(DoS)漏洞被报告为CVE-2006-5051,它涉及到OpenSSH的信号处理程序调用了非异步信号安全的函数。尽管这个原始问题在之后的版本中得到了修复,但在2020年10月,由于OpenSSH版本8.5p1中的一次代码提交(commit 752250c),一个修改日志基础设施的变更意外地移除了一个关键的保护宏#ifdef DO_LOG_SAFE_IN_SIGHAND,从而意外地重新引入了这个竞态条件。
这个变更导致了在OpenSSH的sigdie函数中,原本安全的退出调用被错误地更改,从而再次引入了非异步信号安全的行为。具体来说,当sshd的SIGALRM信号处理程序被触发时,它将调用syslog()函数来记录日志信息,但syslog()在信号处理程序中的调用是危险的,它可能在不安全的上下文中分配或释放内存,从而可能导致堆损坏。
漏洞被利用可能性大么?
有观点认为:上述技术复杂性使得大规模利用也变得不切实际。使用标准 OpenSSH 设置进行一万次身份验证尝试,每台服务器需要 6 到 8 个小时。此外,还需要知道服务器正在运行哪个版本的 Linux。如果服务器有任何针对暴力破解和 DDoS 的保护,这些措施可能会阻止攻击。所以大规模实际利用可能性不大。
安天研究认为:尽管基于已公开PoC在开启地址随机化(ASLR)的环境中平均需要6~8小时的时间才能攻击成功,且可能伴有内存破坏的后果,但并不能据此得出这是一个难以致效的漏洞的结论。防御时间窗口价值仅对具备有效防护管理的资产才是有效的,快速实施加固配置和修复漏洞依然是很大的挑战。由于攻击者具有选择目标和攻击时间窗口的主动权,且掌握大量僵尸/跳板节点资源,其可以基于大量长时间并发试探多点的连接,“捞取”缺乏有效防护管理的突破节点。对这些防御管理缺失的资产来说,平均6~8小时的攻击作业时间窗口带来的防御价值,几乎可以忽略不计。特别值得关注是在一些设备场景中,为了节省计算资源,往往关闭了ASLR,导致攻击可以快速致效。
安天CERT认为该攻击可能被用于扩展僵尸网络、挖矿等攻击活动,同时也会在无管理目标网络中,被APT攻击者用于突防和内部横向移动。
与此同时,我们还需要警惕漏洞可用性的演进,包括可能和其他组合利用。包括该漏洞利用是否本身存在某种高阶形态。
哪些版本的OpenSSH受此漏洞影响?
目前已知受此漏洞影响的OpenSSH版本有:
● OpenSSH < 4.4p1
● 8.5p1 <= OpenSSH < 9.8p1
其他版本暂不受该漏洞影响。
如何修复这个漏洞?
目前官网已发布最新安全版本修复此漏洞,建议受影响用户升级至以下安全版本。
● OpenSSH ≥9.8p1
官网地址:ttps://www.openssh.com/releasenotes.html
无法修复漏洞时的缓解措施有哪些?
在无法通过补丁修复的情况下,可结合自身场景情况使用以下方式进行缓解。
● 检查并启用加固措施:确保已经开启了内存地址空间布局随机化(ASLR)。
● 设置用户访问策略,只给受信任的用户授权SSH登录权限。
● 对系统或主机启用双因素身份验证(2FA)。
目前有提出在配置文件中将LoginGraceTime设置为0的方式来缓解该RCE风险的建议,但这种方法容易使sshd受到拒绝服务攻击,需要防御者根据自身的场景条件决定。开启该方法会增加服务器的连接占用,用于主机管理、设备管理、服务管理等低频的专用服务场景,特别是内网节点防范横向移动等可以采取此措施;但依托OpenSSH支撑开放的服务,需要慎重考虑是否采用该方法。
安天的产品如何辅助用户完善漏洞?
目前安天多款安全产品具备该漏洞的检测防御能力,我们强烈建议您及时更新对应安全产品,并利用安全产品对业务中应用的OpenSSH进行排查与防御。
如果您需要获取产品升级包,请您致电安天技术支持热线:400-840-9234。