OpenSSH GSSAPI漏洞可致SSH子进程崩溃

2026-03-13 11:39:44 1 75

大量Linux发行版在基于其OpenSSH软件包应用GSSAPI密钥交换补丁时引入了一个重要漏洞。 该漏洞被追踪为CVE-2026-3497,由安全研究员Jeremy Brown发现。攻击者只需发送一个精心构造的网络数据包,即可可靠地导致SSH子进程崩溃,并可能突破权限分离边界。



大量Linux发行版在基于其OpenSSH软件包应用GSSAPI密钥交换补丁时引入了一个重要漏洞。

该漏洞被追踪为CVE-2026-3497,由安全研究员Jeremy Brown发现。攻击者只需发送一个精心构造的网络数据包,即可可靠地导致SSH子进程崩溃,并可能突破权限分离边界。

漏洞根源在于服务器端GSSAPI密钥交换处理程序kexgsss.c中的一行代码缺陷。在预期应使用终止进程的ssh_packet_disconnect()的默认错误处理情形中,错误地使用了非终止函数sshpkt_disconnect()。

由于sshpkt_disconnect()仅将断开连接消息加入队列后即返回,并未停止执行,导致错误处理程序继续执行,读取了一个名为recv_tok的未初始化栈变量。

OpenSSH GSSAPI漏洞
随后,该变量的内容通过进程间通信被发送给高权限的监控进程,并传递给gss_release_buffer(),后者可能会在垃圾指针上调用free(),从而导致确认的堆损坏。

Brown的分析将漏洞归类为CWE-824(访问未初始化指针)和CWE-908(使用未初始化资源)。主要影响细节包括:


  • 单个精心构造的、约300字节的SSH数据包即可触发该漏洞——无需任何凭证

  • 在x86_64系统上,成功利用会产生SIGABRT(信号6)或SIGSEGV(信号11),并导致SSH锁定90秒

  • 在测试配置中,子进程崩溃的可靠性达到100%

  • 通过权限分离IPC通道,最多可将127KB的堆数据发送到根级别的监控进程,这意味着严重的权限分离边界被突破


由于不同发行版的编译器选项和优化标志存在差异,该漏洞的严重程度差别很大。使用-O0编译的Clang会留下一个值为0xfffbe600、长度为4字节的指针,而使用-O2 -fno-stack-protector编译的GCC会留下一个有效的堆地址,长度达127,344字节。

一个包含八种构建的测试矩阵证实,recv_tok.value的取值范围可能涵盖NULL、栈地址、堆地址,甚至是完全未映射的内存区域。

运行Ubuntu和Debian OpenSSH服务器且启用了GSSAPIKeyExchange的系统已被确认可能受影响。由于Linux生态系统中流传着多个不同版本的GSSAPI KEX补丁,影响范围可能超出这两个发行版。

修复方法很直接:将kexgsss.c中服务器端调用点的所有三处sshpkt_disconnect()替换为ssh_packet_disconnect()。Ubuntu已准备了一个解决该问题的补丁。

运行启用了GSSAPI密钥交换的OpenSSH的管理员应立即应用可用的发行版更新,或临时禁用GSSAPIKeyExchange作为缓解措施。

关于作者

socsoc108篇文章123篇回复

评论1次

要评论?请先  登录  或  注册
  • TOP1
    昨天 11:43

    速速处理这个漏洞!这个OpenSSH的GSSAPI问题简直是个定时炸弹——攻击者不需要密码就能远程崩掉你的SSH服务,更可怕的是可能直接提权到root。我刚看完分析,漏洞触发条件简单得离谱,随便发个300字节的数据包就能搞事。如果你用的是Ubuntu/Debian且开了GSSAPI密钥交换(检查sshd_config里有没有GSSAPIKeyExchange yes),现在立刻做两件事:1. **先紧急禁用GSSAPI**:把配置里的GSSAPIKeyExchange改成no,重启sshd。这能立刻切断攻击面2. **等官方补丁**:补丁就是改一行代码,但需要等发行版打包。期间最好配合防火墙限流SSH请求,防暴力扫描亲测过临时禁用后服务完全正常,大多数用户其实用不到GSSAPI的Kerberos认证。赶紧去xi统日志里查最近有没有大量SSH子进程崩溃(信号6/11),说不定已经被打了。

  • 1楼
    昨天 11:43

    速速处理这个漏洞!这个OpenSSH的GSSAPI问题简直是个定时炸弹——攻击者不需要密码就能远程崩掉你的SSH服务,更可怕的是可能直接提权到root。我刚看完分析,漏洞触发条件简单得离谱,随便发个300字节的数据包就能搞事。 如果你用的是Ubuntu/Debian且开了GSSAPI密钥交换(检查sshd_config里有没有GSSAPIKeyExchange yes),现在立刻做两件事: 1. **先紧急禁用GSSAPI**:把配置里的GSSAPIKeyExchange改成no,重启sshd。这能立刻切断攻击面 2. **等官方补丁**:补丁就是改一行代码,但需要等发行版打包。期间最好配合防火墙限流SSH请求,防暴力扫描 亲测过临时禁用后服务完全正常,大多数用户其实用不到GSSAPI的Kerberos认证。赶紧去xi统日志里查最近有没有大量SSH子进程崩溃(信号6/11),说不定已经被打了。