Linux 最新的内核漏洞没有一个花哨的名字,它就叫“ssh‑keysign‑pwn”。这是短短几周内 Linux 遭遇的第四个高调本地安全漏洞。这个漏洞让普通用户能够悄悄读取系统上一些最敏感的文件,包括 Secure Shell (SSH) 主机私钥和 shadow 密码文件。
该漏洞的“ssh‑keysign‑pwn”绰号来自主要的利用途径之一:滥用 OpenSSH 的 ssh-keysign 辅助二进制文件。Keysign 用于基于主机的认证,通常以 setuid root 运行,在打开系统的 SSH 主机密钥后才会降权完成工作。
安全公司 Qualys 的研究人员披露了 CVE‑2026‑46333,这是 Linux 内核 ptrace 访问检查中的一个信息泄露漏洞。Qualys 声称该漏洞以某种形式存在了大约六年。
漏洞位于进程退出时运行的 __ptrace_may_access() 逻辑中。在某些条件下,一旦进程丢弃其内存映射,内核会跳过正常的“可转储”检查。这为另一个进程窃取其文件描述符打开了一个短暂的窗口。
虽然 ssh‑keysign‑pwn 本身不会提供完整的 root shell,但能够窃取主机密钥和密码哈希是横向移动和长期持久化的强大基石。此外,利用窃取的 SSH 主机密钥,攻击者可以在基于主机的信任关系中冒充机器。有了 shadow 密码目录的访问权限,他们可以尝试离线密码破解,并在系统间重用这些凭据。
在他的补丁中,Linus Torvalds 解释了问题存在的原因:“我们有一个奇怪的特殊情况:ptrace_may_access() 使用‘dumpable’来检查各种其他完全独立于 MM 的东西(通常显式使用像 PTRACE_MODE_READ_FSCREDS 这样的标志)。包括那些不再有 VM 的线程(也许从未有过,比如大多数内核线程)。这不是这个标志的设计目的,但事实就是如此。”
这对你和我意味着什么?通过将这个逻辑错误与 pidfd_getfd(2) 系统调用结合,无特权用户可以进入正在关闭的特权进程,抓取它们仍然打开的文件描述符,然后读取通常只有 root 才能访问的文件。
好消息是修复已经到位。Linux 稳定版维护者 Greg Kroah‑Hartman 已经在多个支持的分支上推出了更新,包括 7.0.8、6.18.31、6.12.89、6.6.139、6.1.173、5.15.207 和 5.10.256 等新版本,所有这些都包含了 ssh‑keysign‑pwn 的修复。你最好尽快迁移到这些内核之一。该漏洞影响 2026 年 5 月 14 日之前发布的所有 Linux 内核。
在补丁内核广泛可用之前,安全团队确实有一些缓解选项,但每个都有权衡。一个快速而粗糙的解决方法是收紧 Linux 的 Yama ptrace 限制,这会禁用非 root 用户的 ptrace 并阻止利用,但也会破坏许多调试和监控工作流程。你也可以通过禁用基于主机的 SSH 认证和 ssh-keysign 辅助程序来减少暴露,但这会完全停止 SSH 功能。
正如 Manjaro Linux 团队一位疲惫的成员所说:“如果你不需要你的电脑,就不要运行它。把自己锁起来,时刻警惕。”嗯,这当然是处理问题的一种方式!