文章总结: OpenSSH客户端CVE-2026-60002漏洞存在UAF风险,恶意SSH服务器可致客户端崩溃或潜在RCE。影响OpenSSH≤10.3p1的客户端组件。修复方案为升级至10.4p1或启用backport。临时缓解包括限制连接不可信服务器和调整KEX设置。自查需确认客户端版本及CI/CD镜像配置。 综合评分: 94 文章分类: 漏洞预警,安全工具,网络安全,漏洞分析,应急响应
紧急预警 | CVE-2026-60002 | OpenSSH 客户端主机密钥重协商 Use-After-Free 漏洞
撅人
2026年7月9日 00:00 广东
在小说阅读器读本章
去阅读
各位 Linux/Unix 运维、跳板机管理员及安全负责人请注意!OpenSSH 官方披露 ssh 客户端存在 Use-After-Free 漏洞(CVE-2026-60002)。恶意或遭入侵的 SSH 服务器可在密钥重协商阶段触发客户端释放后使用内存访问,导致 ssh 客户端崩溃(DoS),特定条件下存在代码执行风险。请立即排查客户端版本并升级!
🔴 漏洞速览(关键指标)
| 关键指标 | 详情 |
| — | — |
| 漏洞编号 | CVE-2026-60002 |
| 漏洞类型 | Use-After-Free(UAF)→ 内存破坏 / 客户端崩溃 / 潜在 RCE |
| CVSS 评分 | 高危(预计 7.0–8.0,需连接恶意/被攻破 SSH 服务端) |
| 攻击前提 | 用户/自动化脚本 用受影响 OpenSSH 客户端连接恶意或被入侵的 SSH 服务器 |
| 影响组件 | OpenSSH Client(ssh / scp / sftp / git+ssh 等)≤ 10.3p1 — sshconnect2.c :: ssh_kex2() |
| 核心风险 | 连接恶意服务器 → 重协商时触发 UAF → ssh 进程 SIGSEGV / 未定义行为 |
💥 核心危害(攻击者能做什么?)
🛑 SSH 客户端 DoS:连接恶意服务器触发密钥重协商 → ssh_kex2()回调访问已 ssh_conn_info_free()释放的 cinfo/host/hostaddr→客户端 segfault 崩溃,自动化脚本(CI/CD、备份、deploy)中断。
💀 潜在代码执行(理论):UAF 可结合堆喷在客户端进程上下文执行任意指令——若 ssh 客户端以提权身份(root 跳板机)运行,影响放大。
📉 信任链干扰:~/.ssh/known_hosts校验回调中访问悬空指针 → 可能跳过或错误处理主机密钥验证(各版本表现不同,官方以 UAF 定性为主)。
🔄 级联影响:CI/CD 流水线、配置管理(Ansible/Fabric 通过 ssh)、Git push over SSH批量失败或被恶意服务器探测内部网络。
🧠 漏洞原理(通俗版)
漏洞根源是”把调用栈局部变量存成全局裸指针,外面已经 free 了里面还拿来用”:
正常流程:ssh_kex2()初始化连接,把 host、hostaddr、cinfo传给验证回调。
缺陷代码(≤10.3p1):
/* sshconnect2.c — 模块级静态裸指针 */static char *xxx_host;static struct sockaddr *xxx_hostaddr;static struct ssh_conn_info *xxx_conn_info; // ← 指向调用方栈/堆分配对象
void ssh_kex2(..., struct ssh_conn_info *cinfo) { xxx_host = host; // 浅拷贝,仅存指针 xxx_hostaddr = hostaddr; // 同上 xxx_conn_info = cinfo; // 指向将由 ssh_conn_info_free() 释放的对象 /* ... KEX ... */}
调用方在 KEX 完成后对 cinfo调 ssh_conn_info_free()—— 但 xxx_conn_info仍指向已释放内存。
触发:服务端发起KEX 重协商(SSH_MSG_KEXINIT 重发)→ verify_host_key_callback()再次读 xxx_conn_info->…/ xxx_host→Use-After-Free。
修复(OpenSSH 10.4p1 / commite8bdfb151a36):
🔍 3秒自查:你的 OpenSSH 客户端是否受影响?
✅ 受影响版本(红区)
OpenSSH Client:所有版本< 10.4p1
确认方式:
ssh -V # 例:OpenSSH_9.6p1 → 受影响
⚠️ 仅 ssh 客户端受影响,
sshd(服务端)不受影响。但跳板机/CI 主机若用 ssh outbound 连接则需在受影响之列。
✅ 安全版本(绿区)
OpenSSH ≥ 10.4p1(官方修复版本)
各发行版 backport 情况:
🛡️ 紧急修复方案
- 根治方案:升级 OpenSSH Client(首选)
# --- Debian/Ubuntu(等待仓库更新或启用 backports)---sudo apt update && sudo apt install openssh-client
# --- RHEL/Rocky/Alma ---sudo dnf update openssh-clients
# --- 源码编译(如需立即获 10.4p1)---wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.4p1.tar.gztar xzf openssh-10.4p1.tar.gz && cd openssh-10.4p1./configure --prefix=/usr/local --sysconfdir=/etc/sshmake -j$(nproc) && make install# 确认新 ssh 在 PATH 前hash -r ; ssh -V # 应显示 OpenSSH_10.4p1
# 重启依赖 ssh 的服务(jenkins/ansible runner 等)使新 binary 生效
关键步骤:
升级前备份 /etc/ssh/ssh_config/ ~/.ssh/config
CI 镜像需同步更新 base image
验证:ssh -V显示安全版本
- 临时缓解(若客户端暂无法升级)
避免连接不可信/被攻破 SSH 服务器:
降低 KEX 重协商触发概率(辅助):
Host * KexRekeyTime none
⚠️ 这只是减少触发窗口,不修复 UAF,不能替代升级。
Git/CI 使用 HTTP(S) 替代 SSH(临时):
监控 crash:journalctl -u ssh.service/ dmesg | grep ssh查 segfault 记录
- 安全自查清单
ssh -V确认 OpenSSH Client ≥ 10.4p1 或含 backport 修复
CI/CD 镜像 Dockerfile 中 openssh-client 版本确认
跳板机/自动化脚本所用 ssh 二进制路径确认(which ssh)
~/.ssh/config中无 Host *指向不明/测试服务器
审查 known_hosts 有无陌生条目(防连入已被控服务器)
⚠️ 安全生死提醒
此漏洞需连接已被攻破或恶意的 SSH 服务器才触发,但在跳板机、CI/CD、配置管理批量 ssh 出站场景下令客户端自身崩溃或被探测内网。若贵司开发/运维常 ssh 至外部客户/供应商设备,风险不可忽视。请在维护窗口内完成 openssh-client 升级或确认发行版 backport 已应用,并收紧可信主机列表!
📢 转发提醒:请立即将本文转发给负责 Linux/Unix 运维、CI/CD 流水线及跳板机管理的同事!
官方参考:OpenSSH Release Notes 10.4p1 — CVE-2026-60002 Fix / Commit e8bdfb151a36
修复要点:
sshconnect2.c对xxx_host/xxx_hostaddr/xxx_conn_info改深拷贝(xstrdup/sockaddr_storage值拷贝/ssh_conn_info_dup()),KEX 重协商回调访问独立副本,原cinfo释放后不再悬空
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:撅人 《紧急预警 | CVE-2026-60002 | OpenSSH 客户端主机密钥重协商 Use-After-Free 漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论