Linux 0-day漏洞:非特权用户可访问root拥有的文件

Lobsters Hottest 新闻

摘要

Linux内核__ptrace_may_access()存在0-day漏洞,非特权用户可读取root拥有的文件,例如SSH主机密钥和/etc/shadow。该漏洞影响众多发行版和内核版本,已有针对ssh-keysign和chage的利用代码可用。

<p><a href="https://lobste.rs/s/wskhre/linux_0_day_access_root_owned_files_as">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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}_keyssh-keysign.cpermanently_set_uid() 之前以 0600 权限打开这些文件,然后在 EnableSSHKeysign=no 时退出,fd 保持打开状态。自 2002 年以来一直是这个形态。

chage_pwn —— 拉取 /etc/shadowchage -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

Lobsters Hottest

CVE-2026-31431(Copy Fail)是Linux内核中的一个本地提权漏洞,影响自2017年以来的所有主流发行版,允许非特权用户通过AF_ALG加密子系统对任何可读文件的页缓存进行确定性的4字节写入,从而获得root shell访问权限。

Dirtyfrag:通用 Linux 本地权限提升漏洞

Hacker News Top

一份名为“Dirty Frag”的报告详细描述了一种通用的 Linux 本地权限提升(LPE)漏洞。该漏洞通过串联两个内核错误,可在主要发行版上获取 root 访问权限。披露信息指出,由于保密期失效,目前尚无针对此关键安全问题的补丁。