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

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

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

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

工具目录

分类

查看所有分类
Loading categories
copy-fail-CVE-2026-31431 — CVE-2026-31431 的本地权限提升漏洞利用程序,针对 Linux 内核 AF_ALG + splice 页缓存覆盖漏洞。包含 PoC、BPFtrace 检测脚本,以及用于授权安全研究的 QEMU 测试环境。 | Kitploit
工具/GitHubGitHub/astounds/copy-fail-cve-2026-31431
权限提升漏洞利用框架漏洞分析漏洞利用学习与教育二进制利用实验室与实践
GitHubastounds/copy-fail-cve-2026-31431

copy-fail-CVE-2026-31431

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-31431 的本地权限提升漏洞利用程序,针对 Linux 内核 AF_ALG + splice 页缓存覆盖漏洞。包含 PoC、BPFtrace 检测脚本,以及用于授权安全研究的 QEMU 测试环境。

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

CVE-2026-31431 — Copy Fail

Linux 内核通过 AF_ALG + splice 覆盖页缓存实现本地权限提升

CVE CVSS License

仅限授权的安全研究、渗透测试和教育用途。 请勿对您不拥有或未经明确书面许可的系统使用。

技术分析文章


目录

  • 描述
  • 漏洞详情
  • 仓库结构
  • 快速开始
  • 检测
  • 环境要求
  • 缓解措施
  • 测试环境(可选)
  • 参考资料
  • 许可证

描述

CVE-2026-31431 是 Linux 内核中的一个本地权限提升(LPE)漏洞。非特权本地用户可以通过将 AF_ALG 套接字接口与 splice() 结合使用,直接向属于 setuid 二进制的页缓存页面执行经过认证的写入,从而获得 root 访问权限。

该漏洞利用程序会覆盖页缓存中的 su 二进制文件,而无需修改磁盘上的 inode,从而绕过仅依赖文件元数据或块级校验和的完整性机制。


漏洞详情

受影响环境


仓库结构

root@kitploit:~
.
├── exploit.py    # PoC — 页缓存覆盖和权限提升
├── detect.bt     # 用于实时检测的 BPFtrace 脚本
├── run-vm.sh     # QEMU 测试环境自动化(可选)
├── PAYLOAD.md    # 载荷编码分析(hex → zlib → ELF → shellcode)
└── LICENSE

快速开始

在任何易受攻击的系统上以非特权本地用户身份运行 exploit.py — 无需 sudo:

root@kitploit:~
python3 exploit.py

该脚本执行以下步骤:

  1. 验证内核是否支持 AF_ALG(algif_aead)并定位 su 二进制文件。
  2. 选择并解压适合架构的载荷。
  3. 以原始文件描述符打开 su 二进制文件,并通过 AF_ALG + sendfile 覆盖其页缓存页面。
  4. 测试权限提升。如果成功,则进入 root shell。

支持的架构:


检测

使用 detect.bt 实时监控利用尝试。需要 root 权限:

root@kitploit:~
sudo bpftrace detect.bt
# 或
doas bpftrace detect.bt

该脚本使用 @suspect[pid] 中的位掩码跟踪每个 PID 的三个指标:

当同一 PID 上三个位全部置位(@suspect[pid] == 0x7)时,将触发警报。


环境要求

exploit.py

  • Python 3.6+
  • 已加载 AF_ALG/algif_aead 模块的 Linux 内核
  • 本地非特权用户账户(不需要 root)

detect.bt

  • bpftrace ≥ 0.12
  • root 权限(BPF 跟踪所需)
root@kitploit:~
# Ubuntu/Debian
sudo apt install bpftrace

# RHEL/CentOS/Fedora
sudo dnf install bpftrace

# Amazon Linux
sudo yum install bpftrace

# SUSE
sudo zypper install bpftrace

# Alpine
sudo apk add bpftrace

缓解措施

1. 补丁(首选)

将发行版的内核包更新为包含主线提交 a664bf3d603d 的版本, 该提交撤销了 2017 年的 algif_aead 原地优化,使页缓存页面不再可能出现在可写目标 scatterlist 中。大多数主流发行版目前正在推送此修复。

2. 禁用 algif_aead(等待补丁期间)

blacklist 可以通过显式 modprobe algif_aead 绕过。install .../bin/false 指令会完全覆盖安装命令,使每次加载尝试都失败:

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

这会破坏什么 — 几乎不会破坏任何东西

“否”行中的子系统直接使用内核内加密 API — 它们从不经过 AF_ALG。性能会回退到普通的用户空间加密库,而这正是几乎所有其他程序已经在使用的。

在禁用之前,要检查系统上是否有任何程序正在积极使用 AF_ALG:

root@kitploit:~
lsof | grep AF_ALG
ss -xa | grep alg

3. 通过 seccomp 阻止(容器、沙箱、CI)

无论补丁状态如何,都拒绝不受信任的工作负载创建 socket(AF_ALG, ...)。将 AF_ALG(协议族 38)添加到您的 seccomp 拒绝列表,或使用限制非特权进程 socket 调用的 AppArmor/SELinux 策略。

4. 使用 detect.bt 进行监控

在任何无法立即修补或锁定的主机上部署附带的检测脚本。它将针对执行完整三步利用原语的任何进程发出警报。


测试环境(可选)

run-vm.sh 自动化创建 Ubuntu 24.04 QEMU 虚拟机,用于在受控环境中进行测试。exploit.py 和 detect.bt 可直接在任何易受攻击的主机上运行 — 不需要 QEMU。

主机要求

依赖项说明
qemu-system-x86_64 + KVM参见下方安装命令
wget 或 curl云镜像下载
cloud-image-utils种子镜像生成(非 Debian 主机上可用 Docker 替代)

安装 QEMU

root@kitploit:~
# Ubuntu/Debian
sudo apt install qemu-system-x86 cloud-image-utils wget

# Fedora/RHEL
sudo dnf install qemu-system-x86 wget

# Arch
sudo pacman -Sy qemu

# Alpine
sudo apk add qemu-system-x86 qemu-ui-gtk wget

运行

root@kitploit:~
sh run-vm.sh

交互式菜单

root@kitploit:~
1. 启动/创建虚拟机
2. 通过 SSH 连接
3. 上传文件到虚拟机  (exploit.py、detect.bt)
4. 在虚拟机内运行 exploit
5. 在虚拟机内运行 detect.bt
6. 检查虚拟机状态
7. 停止虚拟机
8. 清理虚拟机文件
0. 退出

虚拟机凭据

字段值
用户ubuntu
密码cve123
SSH 端口2222

参考资料

  • 技术分析文章 — xint.io
  • 载荷编码分析 — hex → zlib → ELF → shellcode 分解
  • crypto/af_alg.c — 内核源码
  • mm/splice.c — 内核源码

许可证

本项目采用 GNU 通用公共许可证 v3.0 或更高版本 授权。 完整文本请参见 LICENSE。

免责声明: 本仓库仅用于授权的安全研究、渗透测试和教育目的。作者对因使用本软件造成的任何滥用或损害不承担任何责任。

下载工具
字段值
CVE IDCVE-2026-31431
类型本地权限提升(LPE)
CVSS v3.1 评分7.8 高危 — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H(来源:kernel.org)
内核子系统crypto/af_alg.c、mm/splice.c
攻击向量本地 — 需要非特权用户账户
根本原因algif_aead 接受在 AEAD 套接字上执行 sendfile(),但在 splice() 完成传输之前,未对映射的页缓存页面强制执行写时复制语义
发行版内核版本架构
Ubuntu 24.04 LTS6.17.0-1007-awsx86_64
Amazon Linux 20236.18.8-9.213.amzn2023x86_64
RHEL 10.16.12.0-124.45.1.el10_1x86_64
SUSE 166.12.0-160000.9-defaultx86_64
Raspberry Pi OS(Pi 5)6.12.75+rpt-rpi-2712aarch64
架构变体
x86_64—
aarch64—
riscv64—
ppc64le—
armarmv5l、armv6l、armv7l
x86 32 位i386、i486、i586、i686
MIPS 64 位mips64、mips64el
LoongArchloong64、loongarch64
s390x—
位系统调用指标
0x1socket(AF_ALG, SOCK_SEQPACKET)已创建 AF_ALG 套接字
0x2setsockopt(SOL_ALG, ...)已配置加密操作
0x4sendmsg(MSG_MORE) + splice()已尝试页缓存覆盖
受影响?子系统/使用场景
否dm-crypt/LUKS、kTLS、IPsec/XFRM、内核内 TLS
否OpenSSL、GnuTLS、NSS 默认构建
否SSH、内核密钥环加密
可能显式启用 afalg 引擎的 OpenSSL
可能嵌入式加密卸载路径或直接绑定 aead/skcipher/hash 套接字的应用程序