背景
2024年7月1日,OpenSSH 官方发布安全通告,披露CVE-2024-6387 OpenSSH Server 远程代码执行漏洞,该漏洞为高危漏洞
在OpenSSH服务器中发现的严重安全漏洞,具体来说,它是一个远程代码执行(Remote Code Execution, RCE)漏洞,且这个漏洞主要影响基于glibc的Linux系统
漏洞细节:
描述了一个在OpenSSH服务器中与信号处理器(SIGALRM)相关的竞态条件。如果客户端在LoginGraceTime(默认120秒,旧版本中为600秒)内未完成认证,sshd的信号处理器会被异步调用,而这个处理器调用了非异步信号安全的函数(如syslog()),导致了问题
历史关联:
提及这个漏洞实际上是CVE-2006-5051的一个回归,该漏洞最早在2006年由Mark Dowd报告。CVE-2006-5051描述的是OpenSSH在4.4版本前存在的信号处理器竞态条件,可能允许远程攻击者造成拒绝服务(崩溃),甚至执行任意代码
漏洞演变:
•介绍漏洞如何随OpenSSH版本变化:
•OpenSSH < 4.4p1版本:如果未打补丁修复CVE-2006-5051或CVE-2008-4109(后者的修复不正确),则存在信号处理器竞态条件的漏洞
•4.4p1 <= OpenSSH < 8.5p1版本:由于CVE-2006-5051补丁中添加了预处理指令#ifdef DO_LOG_SAFE_IN_SIGHAND到sigdie()函数,使得它在信号处理器中成为安全的调用,所以这个时期版本的OpenSSH不受此竞态条件影响
•8.5p1 <= OpenSSH < 9.8p1版本:2020年10月在OpenSSH 8.5p1版本中,由于提交752250c(“修订OpenSSH的日志架构”)意外地去掉了sigdie()函数中的#ifdef D