修改版的 Dirty Pipe (CVE-2022-0847) PoC,通过劫持 SUID 二进制文件来生成 root shell。(同时尝试恢复受损的二进制文件)
在 Linux 内核的 copy_page_to_iter_pipe 和 push_pipe 函数中,新管道缓冲区结构的 "flags" 成员缺乏正确初始化,因此可能包含过时值。本地非特权用户可利用此漏洞写入由只读文件支持的页缓存中的页面,从而提升其在系统上的权限。
一种名为 'Dirty Pipe' 的新 Linux 漏洞允许本地用户通过公开可用的漏洞利用获得 root 权限。
今天,安全研究员 Max Kellermann 负责任地披露了 'Dirty Pipe' 漏洞,并表示它影响 Linux 内核 5.8 及更高版本,甚至波及 Android 设备。
该漏洞被追踪为 CVE-2022-0847,允许非特权用户在只读文件中注入并覆盖数据,包括以 root 身份运行的 SUID 进程。
Kellerman 是在追踪一个导致某客户 Web 服务器访问日志损坏的 bug 时发现了这个漏洞。
随后 Bl4sty 编写了另一个版本。它不是覆盖像 /etc/passwd 这样的文件,而是覆盖用户指定的 SUID 二进制文件(如 /bin/su),注入 shellcode,然后以特权用户(即 root)权限执行。
gcc dirtypipez.c -o exploit
./exploit /bin/su