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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-31431-live-code-corruption — CVE-2026-31431(复制失败)新型漏洞利用:通过页缓存实现实时代码破坏。利用 MAP_PRIVATE 页共享覆盖 libc 的 exit() 代码——影响所有正在运行的进程。 | Kitploit
工具/GitHubGitHub/ikow/cve-2026-31431-live-code-corruption
权限提升漏洞利用框架漏洞分析漏洞利用二进制利用
GitHubikow/cve-2026-31431-live-code-corruption

CVE-2026-31431-live-code-corruption

CVE-2026-31431(复制失败)新型漏洞利用:通过页缓存实现实时代码破坏。利用 MAP_PRIVATE 页共享覆盖 libc 的 exit() 代码——影响所有正在运行的进程。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
164个月前尚未审核

CVE-2026-31431 — 通过页缓存实现实时代码破坏

一种针对 CVE-2026-31431(“Copy Fail”)的新型利用技术,通过 Linux 内核的页缓存破坏运行中进程的可执行代码,实现 root 权限提升。

不同之处

该 CVE 的所有已发布漏洞利用都是破坏数据文件——修改 /etc/passwd 以更改 root 的 UID,或修补磁盘上的 setuid 二进制文件。此漏洞利用则完全不同:它通过内核的页缓存机制破坏内存中的实时可执行代码。

已发布的漏洞利用本漏洞利用
目标数据文件(/etc/passwd、/usr/bin/su)可执行代码(libc .text 段)
机制由程序解析的文件内容由 CPU 直接执行的代码页
范围单个文件所有映射 libc 的进程
磁盘更改是(文件内容被修改)否(仅内存中的页缓存)
检测文件完整性监控对文件系统检查不可见

工作原理

页缓存洞察

当 Linux 使用 MAP_PRIVATE 映射共享库时,它不会立即复制文件页。相反,进程的页表项直接指向页缓存物理页。复制仅在写入时发生(写时复制)。对于代码页(.text),进程永远不会写入它们——因此它们永远与页缓存保持共享。

root@kitploit:~
进程 A (bash)     进程 B (su)      页缓存 (libc)
  ┌──────┐            ┌──────┐            ┌──────────┐
  │ PTE  │───────────>│      │            │ exit():  │
  │      │            │ PTE  │───────────>│ endbr64  │
  └──────┘            └──────┘            │ push rax │
    MAP_PRIVATE         MAP_PRIVATE       │ ...      │
    (干净页)            (干净页)          └──────────┘
                                               ↑
                                    Copy Fail 在此写入!

CVE-2026-31431 为我们提供了对任何可读文件页缓存的受控 4 字节写入。通过破坏 libc 的代码页,我们修改了每个进程都会执行的指令。

漏洞利用

  1. 写入 shellcode(39 字节)到 libc 页缓存中的 on_exit() 函数位置——每次 4 字节,共 10 次写入
  2. 修补 exit() 使其跳转到我们的 shellcode——1 次 4 字节写入
  3. 触发:任何调用 exit() 的程序(几乎所有程序)都会执行我们的 shellcode

该 shellcode 执行 setuid(0) → setgid(0) → execve("/bin/sh"),从而获得 root shell。

CVE-2026-31431 概述

  • 缺陷:crypto/algif_aead.c 中的逻辑错误——2017 年的原地优化(72548b093ee3)允许 splice() 将页缓存页送入 AEAD 解密。authencesn 算法的 ESN 重排将 4 个临时字节写回源 scatterlist,从而破坏被拼接文件的页缓存。
  • 原语:对任何可读文件页缓存的确定性 4 字节写入
  • 要求:无——AF_ALG 套接字对非特权用户可用
  • 修复:在加密操作前复制到非原地缓冲区(内核 6.12.85+、6.15+)

使用方法

root@kitploit:~
# 编译
gcc -o exploit exploit.c

# 以非特权用户运行
./exploit /lib/x86_64-linux-gnu/libc-2.31.so

# 触发——运行任意程序(它会调用 exit())
su -c id
# uid=0(root) gid=0(root) groups=0(root)

测试环境

  • 内核:6.12.79(Ubuntu/Debian,6.12.85 修复之前)
  • glibc:2.31-0ubuntu9.7
  • 结果:完整 root shell,已通过内核日志验证:process 'id' launched '/bin/sh'

文件

  • exploit.c — 带 shellcode 注入的完整漏洞利用
  • copyfail_test.c — 原语验证(测试 4 字节写入)

时间线

  • 2017:引入原地优化(72548b093ee3)
  • 2026-04-29:CVE-2026-31431 披露
  • 2026-04-30:内核 6.12.85 发布修复
  • 2026-05-06:开发本漏洞利用(新型实时代码破坏技术)

参考

  • NVD — CVE-2026-31431
  • 修复提交
  • Copy Fail 分析(Xint)

免责声明

本工具仅供授权的安全研究和教育目的使用。请勿将其用于您不拥有或未经明确许可测试的系统。

相关:Dirty Frag(2026 年 5 月 7 日)

Dirty Frag 披露了同一缺陷类别中的另外两种页缓存写入变体:

  • ESP 路径(esp4/esp6):与 Copy Fail 相同的 authencesn 汇点,通过 IPsec ESP-in-UDP 到达。需要用户命名空间。4 字节写入。
  • RxRPC 路径(rxrpc/rxkad):在 splice 固定的页上进行 pcbc(fcrypt) 原地解密。无需命名空间。8 字节写入。

本仓库中的实时代码破坏技术适用于任何这些页缓存写入原语——只需将 write4() 函数替换为 ESP 或 RxRPC 触发器即可。该技术与原语无关。

下载工具