九年前的 Linux 内核漏洞使攻击者可窃取 SSH 私钥
一项新的公开披露的 Linux 内核漏洞(编号为CVE-2026-46333)暴露出一个严重的本地权限提升漏洞,该漏洞已存在近九年仍未被发现。
一项新的公开披露的 Linux 内核漏洞(编号为CVE-2026-46333)暴露出一个严重的本地权限提升漏洞,该漏洞已存在近九年仍未被发现。
Qualys 风险研究部门(TRU)的安全研究人员指出,该漏洞使得攻击者能够窃取敏感数据(包括 SSH 私钥),并能够在受影响的系统上以 root 身份执行任意命令。
问题出在Linux内核的 __ptrace_may_access() 函数上,该函数负责决定一个进程是否能够检查或与另一个进程进行交互。
由于在 Linux 内核版本 4.10-rc1(2016 年 11 月)中引入了一个逻辑错误,该函数在特权进程正在放弃凭证的短暂时间段内错误地允许其访问系统。
通过将这种竞争条件与 pidfd_getfd() 系统调用相结合,攻击者能够从具有特权的进程获取文件描述符,并在自身无特权的环境中重复使用这些描述符。
Linux 内核漏洞致使 SSH 密钥泄露
这实际上绕过了常规的权限检查程序,从而能够访问到敏感资源。
Qualys 在多个默认的 Linux 发行版(包括 Debian 13、Ubuntu 24.04 和 26.04 以及 Fedora 43/44)上展示了可靠的漏洞利用能力。
四个实际的攻击场景已得到验证:
- ssh-keysign:允许从位于 /etc/ssh/ 下存储的 SSH 主机私钥进行泄露操作。
- change:使密码哈希信息能够被披露,这些信息位于 /etc/shadow 中。
- pkexec:便于以 root 身份执行任意命令。
- accounts-daemon:通过 D-Bus 交互实现权限提升。
尽管被归类为本地漏洞,但其影响却相当严重。任何拥有低权限 shell 的攻击者,比如通过 SSH 访问、受侵的服务账号或 CI/CD 流程,都能够升级到完全的 root 权限。
这实际上消除了有限权限访问与系统完全被攻破之间的界限。
该漏洞源于在 __ptrace_may_access() 函数中对“可导出”状态的不当处理。
当目标进程退出,且其内存描述符(mm)变为 NULL 时,内核会跳过关键的安全检查。此时访问控制将回退至 YAMA Linux 安全模块。
在默认的内核配置下,yama.ptrace_scope 的值为 1,此时 YAMA 会允许攻击者访问权限,而这种情况通常属于利用漏洞的场景。
这便形成了攻击链。然而,将 ptrace_scope 设置为 2 会加强检查力度,需要具备 CAP_SYS_PTRACE 权限,从而有效地阻断了该漏洞利用路径。
上游补丁于 2026 年 5 月 14 日发布,发布时间紧随责任披露之后。
包括 Debian、Fedora、Red Hat、SUSE、AlmaLinux 和 CloudLinux 在内的主要 Linux 发行版均已发布安全更新。
强烈建议管理人员们:
- 立即应用最新的内核更新。
- 对可能存在的暴露系统中的 SSH 主机密钥和敏感凭证进行更换。
- 检查系统是否存在未经授权的权限提升行为。
作为临时的缓解措施,系统可以执行以下操作:
- kernel.yama.ptrace_scope = 2
然而,此设置可能会干扰诸如 gdb 和 strace 这样的调试工具,以及某些容器或崩溃报告流程。
随着相关公开漏洞信息的传播,以及该漏洞影响了近十年的众多 Linux 系统,CVE-2026-46333 这一漏洞已构成严重威胁,需要在企业及云环境中立即予以重视。


评论1次
这个洞说实话挺有意思的,藏了快十年才被发现。
从攻击角度看,4.10-rc1那会儿引的逻辑bug,刚好卡在特权进程甩凭证的窗口期。YAMA那套默认配置ptrace_scope=1,基本等于给攻击者开了后门。
最骚的还是ssh-keysign那个场景——能直接捞/etc/ssh/下的主机私钥,省了钓鱼这一步。本地低权shell的入口太多了,SSH进来的、服务账号跑崩的、CI/CD脚本外泄的,哪个都能用。
有个点值得注意:这洞利用需要race,成功率不是100%,但 Qualys 能搞出可靠利用链说明他们调教过参数。实操的话可能得在pidfd_getfd那块多试几次。
临时缓解那个ptrace_scope=2确实管用,但会影响strace这类的正常使用。要是被控环境里正好有运维在跑调试工具,设成2反而会打草惊蛇——不如先不动配置,自己摸清楚目标环境再说。