
Linux Kernel 是 Linux 操作系统的核心组件,承担进程调度、内存管理、文件系统、设备驱动与系统调用接口等基础职责,是绝大多数云服务器与终端环境的运行底座。
近期,Linux Kernel 中的 pidfd_getfd() 系统调用被披露存在一个越权任意文件读取漏洞。漏洞根因位于 __ptrace_may_access() 函数:当目标进程的 task->mm 已被释放(即内存映射已经被回收)时,权限校验中的 dumpable 检查会被跳过。
进入 do_exit() 进程退出流程后,内核会先调用 exit_mm() 释放内存映射,随后才调用 exit_files() 关闭文件描述符。在两步之间存在一个短暂的时间窗口,目标进程的内存已被释放,但其原本打开的文件描述符仍处于存活状态。攻击者只要本地低权限身份与目标进程 uid 匹配,即可通过 pidfd_getfd() 在该窗口内窃取目标进程已打开但本无权访问的敏感文件句柄,进而读取受保护文件内容。
公开资料中已展示了两类典型利用路径:通过 ssh-keysign 进程窃取 SSH 主机私钥,以及通过 chage 进程读取 /etc/shadow 中的密码哈希。鉴于漏洞细节与 PoC 代码已在公开渠道发布,建议受影响用户尽快升级内核或采取临时缓解措施。
Linux Kernel 越权任意文件读取漏洞受影响版本:
31e62c2ebbfd(2026 年 5 月 14 日修复版本之前)官方修复后的安全版本:
31e62c2ebbfd补丁地址:
成功利用该漏洞可导致:
/etc/shadow 密码哈希等敏感文件可被读取;由于利用过程发生在内核层、且无需额外提权动作,单台主机沦陷后可快速演化为内网级别的凭证扩散事件。
1、官方修复方案:
评估业务受影响情况后,按发行版的更新通道升级到包含 commit 31e62c2ebbfd 的内核版本,并按运维流程完成内核重启生效。
注:升级前请做好数据备份,避免出现意外。
2、临时缓解措施:
在无法立即升级的环境下,可结合实际场景考虑以下加固方向:
pidfd_getfd() 系统调用的可达性(如通过 seccomp、SELinux/AppArmor 策略收敛);ssh-keysign、chage 等 setuid/setgid 程序的多用户主机优先排查;pidfd_open + pidfd_getfd 调用组合。
END
更多精彩内容点击下方扫码关注哦~
关注云鼎实验室,获取更多安全情报
