Linux 内核严重漏洞“ssh-keysign-pwn”暴露 SSH 密钥和影子密码

来源: Critical Linux Kernel Flaw 'ssh-keysign-pwn' Exposes SSH Keys and Shadow Passwords

新披露的Linux 内核漏洞引起了整个安全界的严重担忧,因为它允许攻击者访问受影响系统上的高度敏感数据,包括 SSH 私钥和密码哈希值。

该漏洞被追踪为 CVE-2026-46333,绰号为“ssh-keysign-pwn”,影响范围广泛,包括 Linux 发行版。

2026 年 Linux 系统遭受了多个漏洞攻击,包括Dirty Pipeio_uring UAFCopy Failio_uring ZCRX FreelistDirty FragFragnesia

Linux 内核漏洞“ssh-keysign-pwn”

问题源于 Linux 内核的 ptrace 访问控制逻辑,具体来说是 __ptrace_may_access() 函数。

这种机制旨在限制进程如何检查其他进程或与之交互。然而,内核“可转储性”检查中的一个逻辑缺陷导致了危险的竞争条件。

简单来说,当一个特权进程(例如 ssh-keysign 或 chage)关闭时,会有一个短暂的窗口期,在此期间其内存上下文会被清除(mm = NULL),但其打开的文件描述符仍然存在。在这个短暂的窗口期内,非特权本地攻击者可以利用 pidfd_getfd() 函数的漏洞窃取这些文件描述符。

这实际上绕过了预期的权限检查,允许未经授权访问敏感文件。

包括Qualys在内的安全研究人员警告称,这种漏洞可能导致严重后果:

  • SSH 私钥被盗后,攻击者可以冒充系统或用户。
  • 中间人攻击(MitM)会持续攻击,直到被泄露的密钥轮换为止。
  • 对 /etc/shadow 具有完全读取权限,暴露密码哈希值,可进行离线破解。
  • 利用被盗凭证在基础设施中横向移动的可能性。

由于 SSH 密钥经常在不同环境中重复使用,因此单个被攻破的系统可能会引发更广泛的网络访问。

受影响的系统

该漏洞影响大多数运行在 2026 年 5 月 14 日发布的补丁之前的 Linux 内核的发行版。其中包括:

  • Ubuntu
  • Debian
  • Arch Linux
  • CentOS
  • 树莓派操作系统

鉴于该缺陷据称已存在六年多,许多长期部署的系统可能会受到影响。

核心问题在于内核如何处理没有内存上下文的进程。“可转储性”标志最初设计用于控制核心转储,但现在却在 ptrace 检查中被重新使用,即使这样做已经不再合乎逻辑。

当进程退出时,其内存会在文件描述符清理之前被释放。内核在此过渡状态下未能正确执行访问限制,导致攻击者能够绕过安全边界。

GitHub PoC 精确地ssh-keysign-pwn 演示了如何利用 pre- 31e62c2ebbfd kernel 上的这种竞态条件。

PoC 反复生成攻击进程,与特权助手的退出路径竞争,以便 pidfd_getfd 在 root 用户拥有的文件关闭之前获取文件描述符。

根据公开分析,该漏洞通常在 100 到 2000 次尝试内就能成功利用,因此在实际系统中是可行的。


本文重点介绍了两种核心攻击路径:

  • 目标 ssh-keysign 是从 SSH 主机读取私钥 /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key
  • 目标是 通过类似的文件描述符窃取模式chage -l <user> 进行读取 /etc/shadow

缓解措施

各组织应立即采取行动降低风险:

  • 应用最新的内核补丁来修复 CVE-2026-46333。
  • 轮换所有 SSH 密钥,尤其是在关键系统上。
  • 审核对敏感文件(例如 /etc/shadow)的访问。
  • 监控是否存在可疑的 ptrace 或 pidfd 相关系统调用的使用情况。
  • 尽可能限制本地用户访问,因为攻击需要本地用户在场。

由于GitHub上已经发布了公开的概念验证(PoC)漏洞利用代码,这增加了该漏洞在实际环境中被利用的可能性。因此,修复该漏洞的紧迫性显著增加。

SSH 作为云和企业环境中安全访问的支柱,私钥的泄露会带来不容忽视的重大风险