Linux 0-day漏洞:非特权用户可访问root拥有的文件
摘要
Linux内核__ptrace_may_access()存在0-day漏洞,非特权用户可读取root拥有的文件,例如SSH主机密钥和/etc/shadow。该漏洞影响众多发行版和内核版本,已有针对ssh-keysign和chage的利用代码可用。
查看缓存全文
缓存时间: 2026/05/15 02:55
0xdeadbeefnetwork/ssh-keysign-pwn Source: https://github.com/0xdeadbeefnetwork/ssh-keysign-pwn
ssh-keysign-pwn
“落在这位永生神的手中是一件可怕的事。” — 希伯来书 10:31
以无特权用户身份读取 root 拥有的文件。适用于 31e62c2ebbfd 之前的内核(截至 2026-05-14 的所有稳定版本)。
漏洞
__ptrace_may_access() 在 task->mm == NULL 时跳过可转储检查。do_exit() 在 exit_files() 之前运行 exit_mm() —— 没有 mm,但 fd 仍然存在。在该窗口期内,当调用者的 uid 与目标 uid 匹配时,pidfd_getfd(2) 调用成功。由 Qualys 报告,Linus 于 2026-05-14 修复。Jann Horn 在 2020 年 10 月指出了 FD 窃取这种攻击形态(https://lore.kernel.org/all/[email protected]/)。六年了。
攻击目标
sshkeysign_pwn —— 拉取 /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key。ssh-keysign.c 在 permanently_set_uid() 之前以 0600 权限打开这些文件,然后在 EnableSSHKeysign=no 时退出,fd 保持打开状态。自 2002 年以来一直是这个形态。
chage_pwn —— 拉取 /etc/shadow。chage -l <用户> 调用 spw_open(O_RDONLY),然后调用 setreuid(ruid, ruid)。两个参数都设置为 ruid 意味着 uid=euid=suid=ruid:完全降权。竞争其退出过程,窃取 shadow fd,离线破解 root 哈希。
构建与运行
make
./sshkeysign_pwn # 主机密钥
./chage_pwn root # /etc/shadow 内容
两者都会在 stdout 上打印文件内容。通常在 100–2000 次生成尝试内命中。
已验证
Raspberry Pi OS Bookworm 6.12.75、Debian 13、Ubuntu 22.04 / 24.04 / 26.04、Arch、CentOS 9。
受控目标 PoC
vuln_target.c 打开 /etc/shadow 然后降权。exploit_vuln_target.c 演示了在目标存活时返回 EPERM,以及在 SIGKILL 后窃取 fd。
sudo install -m 4755 vuln_target /usr/local/bin/vuln_target
./exploit_vuln_target /usr/local/bin/vuln_target
相似文章
CVE-2026-31431: Copy Fail
CVE-2026-31431(Copy Fail)是Linux内核中的一个本地提权漏洞,影响自2017年以来的所有主流发行版,允许非特权用户通过AF_ALG加密子系统对任何可读文件的页缓存进行确定性的4字节写入,从而获得root shell访问权限。
Linux漏洞、禁运失效与补丁窗口缩短
一份关于2026年5月发现的三个严重Linux本地权限提升漏洞的报告,强调了披露模型的崩溃及其对生产环境的影响。
Dirtyfrag:通用 Linux 本地权限提升漏洞
一份名为“Dirty Frag”的报告详细描述了一种通用的 Linux 本地权限提升(LPE)漏洞。该漏洞通过串联两个内核错误,可在主要发行版上获取 root 访问权限。披露信息指出,由于保密期失效,目前尚无针对此关键安全问题的补丁。
你给我一个u32。我让你成为root。 (io_uring ZCRX freelist LPE)
Linux内核io_uring子系统中通过零拷贝接收freelist漏洞实现的本地权限提升利用。
Fragnesia:新的Linux权限提升漏洞利用
一个名为Fragnesia的新的Linux权限提升漏洞利用已在GitHub上发布,并附有概念验证代码。