这是Copy Fail LPE (CVE-2026-31431)的一个更精简的移植版本,它修补了/etc/passwd的前几个字节,使得通过su切换到root不需要密码。这减小了原始漏洞利用的总体积并使其更具可移植性。像Alpine这样的发行版使用busybox/musl而不是独立的su二进制文件和glibc链接,因此原始的二进制修补方法通常不起作用。我特别想制作一个能在Alpine上运行的移植版本,但这种方法应该适用于任何存在漏洞的内核的发行版,与底层的coreutil格式和CPU架构无关,因为它依赖于修改一个更普遍的目标。(注意:此PoC不是容器逃逸)
使用Go实现以获取可移植的独立二进制文件:
go build -o exp main.go
./exp

或者简单地在非特权用户下运行python脚本:python3 exp.py,然后享受root shell。

在运行内核6.6.69的Alpine Linux 3.20.5上测试通过。
压缩的blob包含字节字符串root::0:0:,它从原始root条目(root:x:0:0:root:/root:/bin/sh)中修补掉了'x',从而在调用su时绕过对/etc/shadow中密码的检查。
参考: