Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
copyfail-deconstructed — CVE-2026-31431 的易于理解版本 | Kitploit
工具/GitHubGitHub/bootsareme/copyfail-deconstructed
权限提升漏洞利用Shellcode学习与教育Payload 开发二进制利用
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

CVE-2026-31431 的易于理解版本

查看仓库
313个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

copyfail-deconstructed

易于理解的 CVE-2026-31431 版本,这是一种允许任何人成为 root 的权限提升技术。原始概念验证位于:https://github.com/theori-io/copy-fail-CVE-2026-31431,但经过高度压缩和混淆,以尽可能减小体积。本仓库试图以更易读的方式分解该代码,包括代码的作用、payload 的加载方式以及如何针对不同架构。更多技术细节请参见:https://xint.io/blog/copy-fail-linux-distributions。

使用方法

默认情况下,运行 python3 copyfail.py 将执行利用 /usr/bin/su 的 x64 shellcode。你可以通过运行 python3 copyfail.py [path/to/custom/payload.elf] 提供自己的 payload。例如,payloads/ 中有一个 ARM64 shellcode 汇编文件。要在 ARM64 设备上测试,你首先应使用我们的自定义链接脚本构建一个最小化 payload:

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

然后你可以使用 python3 copyfail.py shellcode_aarch64.elf 运行主利用程序。

对于在 C 中运行:

  1. 构建(见下文)
  2. ./c_copyfail 运行与上面相同的默认 shellcode。
  • 你也可以通过运行 ./c_copyfail [path/to/custom/payload.elf] 提供自己的 payload。

构建 C 版本:

root@kitploit:~
cd c_port
make

具体来说,该过程将目标 .S 文件编译为原始二进制,并输出为 C 语言 unsigned char 数组:

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

或者,对于 32 位 x86:

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

然后你可以将该文件的内容复制到源代码中,或者直接运行 ./c_copyfail.exe [path/to/payload.elf],其中 payload.elf 是由 as + ld(而不是 gcc + objcopy)生成的。

修复方法

为避免被利用,请运行:

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

如果已经被利用,你可以重启机器,或者运行: echo 3 | sudo tee /proc/sys/vm/drop_caches

原理解释

  1. 内核允许用户通过 AF_ALG 类型的 socket 与加密 API 通信
  • 2017 年,Crypto API 的 algif_aead 部分加入了“in-place 优化”
  • 当使用 splice() 系统调用通过 socket 发送数据时,内核会将你 splice 的文件的实际 page cache 页面放入加密工作区
  • 加密算法 authencsn 将其输出缓冲区视为临时空间,并写入超出应有位置 4 字节的数据
  1. 假设的攻击者可以做什么
  • 选择任意可读文件(例如本例中的 /usr/bin/su)
  • 选择该文件中将发生 4 字节写入的偏移位置
  • 选择要写入的 4 字节值(AEAD 操作中关联数据的一部分)
  • 写入 shellcode 以在内存中覆盖文件
  1. 通过 page cache 覆盖实现 root
  • 内核永远不会将损坏的页面标记为脏页,文件看起来没有变化
  • 当执行 /usr/bin/su 时,内核从 page cache 中读取它并得到被修改的字节
  • 通过重复 4 字节写入(约 40 次),他们可以覆盖 /usr/bin/su 内部的 UID 检查,使 UID 为 0(root)
  • 任何用户都可以获得 root shell
  1. 修复措施
  • 刷新 page cache,清除内存中被修改的文件,以便下次从磁盘读取
  • 卸载内核模块
  • 将其加入黑名单阻止加载
  • 如果是内置模块,你必须使用 seccomp 或 eBPF 阻止该 syscall,或者将其从初始化中移除并重启机器。

su 二进制文件在内存中被破坏,因此文件修改不会被检测到。要从磁盘恢复,你可以刷新 page cache。

下载工具