CVE-2026-46333
针对 pidfd_getfd(2) 中 ptrace_may_access() mm=NULL 竞态条件的本地权限提升漏洞利用程序。
当进程正在消亡且其 mm 已被释放时,内核会完全跳过 ptrace 访问检查。通过让 pidfd_getfd() 与进程退出进行竞争,非特权用户可以窃取特权进程的打开文件描述符。
该漏洞利用程序针对 accounts-daemon:它通过 SetIconFile 触发一个短生命周期子进程,赢得竞争以获取守护进程的 D-Bus 套接字文件描述符,然后发送 SetShell、SetAccountType 和 SetPassword 调用,将调用用户提升为已知密码的管理员账户。
该漏洞利用程序会将目标用户的密码设置为硬编码值——构建前请在源码中修改 :)
已在 RHEL 10 和 Fedora 44 上使用 dbus-broker 进行测试(D-Bus 套接字位于 FD 5)。
make
./ptrace_may_dream [--retries N] [--nthreads N] [fd-slot]
“进程已死,进程万岁。”——内核,大概如此