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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-40271 — CVE-2025-40271 由 MadEploits 修改 | Kitploit
工具/GitHubGitHub/madexploits/cve-2025-40271
权限提升漏洞分析漏洞利用论文与研究学习与教育二进制利用
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 由 MadEploits 修改

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-40271 — proc_readdir_de() rb-tree UAF LPE

针对 Linux 内核 proc 文件系统中一个本地权限提升漏洞的概念验证(PoC)。该漏洞是 proc_readdir_de() 中的释放后使用(UAF),由 rb_erase() 未调用 RB_CLEAR_NODE() 所致,残留的红黑树链接在目录枚举期间可被竞态利用。

作者: MadExploits

原始漏洞研究与 C 语言 PoC 由 Aviral Srivastava(N-DAY RESEARCH)完成。本仓库包含一个 shell 移植版(exploit.sh),适用于不便编译的环境。


概述

字段详情
CVECVE-2025-40271
组件fs/proc — proc_readdir_de() / remove_proc_entry()
类型释放后使用(红黑树残留链接)
影响本地权限提升(LPE)
架构x86_64
受影响版本直至 6.18-rc5 的 Linux 内核

根本原因

当 proc 目录项被移除时,会在该项的 rb 节点上调用 rb_erase(),但未调用 RB_CLEAR_NODE()。被释放的节点仍可通过残留的树链接访问。如果 getdents64() 与 /proc/self/net/dev_snmp6/ 下的接口删除发生竞态,内核可能会读取已释放的内存——这些内存通常已被喷洒的 msg_msg 对象回收——并返回异常的 d_ino 值,从而泄露内核堆指针。


受影响与已修补的内核

该 PoC 会检查当前运行的内核版本,并在已修补的构建上退出:

分支

仓库内容

文件描述
exploit.c完整的 C PoC — netlink veth 管理、pthread 竞态、msg_msg 喷洒
exploit.sh免编译 shell 移植版 — unshare、ip、内嵌 Python 3 用于系统调用/竞态

两种实现遵循相同的利用流程:

  1. 进入用户命名空间与网络命名空间(在网络命名空间中获得 CAP_NET_ADMIN)
  2. 创建 veth 对 → 填充 /proc/self/net/dev_snmp6/
  3. 让 getdents64() 与快速 veth 删除 + 堆喷洒进行竞态
  4. 通过类似内核指针的 d_ino 值检测 UAF
  5. 尝试提权(完整 LPE 需要特定内核的 KASLR 偏移)

环境要求

通用要求

  • Linux x86_64
  • 已启用非特权用户命名空间:
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • 非 root 用户(如果已是 root,PoC 将退出)

exploit.c

  • 带 pthread 支持的 gcc
  • Linux 头文件(linux/netlink.h 等)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip(iproute2)
  • unshare(util-linux,支持 --map-root-user)

无需编译器。


使用方法

Shell 版本(建议快速测试)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

C 版本

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

预期输出

存在漏洞的内核 — 已触发 UAF(部分成功):

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

已修补的内核:

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

利用说明

  • 堆泄露: 当竞态成功时,d_ino 会包含符合 x86_64 内核指针模式(0xffff000000000000)的值,通常来自与已释放 proc_dir_entry 数据重叠的 msg_msg 头部的 m_list。
  • 完整 LPE: 覆写 modprobe_path 需要泄露的堆地址与内核文本基址之间的偏移——这是特定于构建的(KASLR)。该 PoC 演示了 UAF 与泄露;完整的利用链需要针对目标内核镜像的偏移。
  • 可靠性: 成功与否取决于调度器时序。默认情况下,PoC 最多重试 30 次竞态尝试。

缓解措施

  • 升级到已修补的内核(见上表)。
  • 如果不需要用户命名空间,请禁用非特权创建:
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • 应用针对 CVE-2025-40271 的厂商安全更新。

免责声明

本项目仅供授权的安全研究、教育与防御性测试使用。

  • 仅可针对你拥有的系统,或获得明确书面授权进行测试的系统运行。
  • 未经授权对第三方系统使用可能违反适用法律。
  • 作者与贡献者对此代码的滥用不承担任何责任。

致谢

角色姓名
仓库作者MadExploits
原始 CVE 研究与 C PoCAviral Srivastava — N-DAY RESEARCH

许可证

自行承担使用风险。不提供任何担保。

下载工具
修复版本
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+已修补