Sploitus

Exploit for DirtyFrag-for-dummies

kitploit · 2026-09-03

Exploit Code

MARKDOWN88 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CHERNSTEPANOV-DIRTYFRAG-FOR-DUMMIES
# Dirty Frag / CVE-2026-43284 — 研究笔记

## 概述

该仓库包含一个经过清理的技术示意图和辅助笔记,用于描述通常被称为 **Dirty Frag** 且针对 xfrm-ESP 路径被追踪为 **CVE-2026-43284** 的 Linux 内核漏洞。

该问题属于由 Hyunwoo Kim(@v4bel)发现的更广泛的 **Dirty Frag** 类别。一个相关的 RxRPC 变体被单独追踪为 **CVE-2026-43500** 。

本材料的目的是:

  * 在系统层面解释漏洞机制;
  * 记录 XFRM ESP、UDP 封装、`splice()`、`skb` 片段、文件支持页以及页缓存损坏之间的关系;
  * 提供可用于报告、案例研究和防御简报的出版级图表。



本仓库**不是** 利用指南。

实际上,该仓库以更易于检查的形式扩展并记录了最初公开的 Dirty Frag ESP 概念验证。包含的材料仅适用于 **64 位 Linux 系统** 。

* * *

## 工作原理

在高层面上,该问题与 xfrm ESP 接收路径中的**错误的原地处理** 有关。

链条如下:

  1. 一个本地非特权进程通过 `unshare(CLONE_NEWUSER | CLONE_NEWNET)` 进入新的用户和网络命名空间;
  2. 通过 Netlink 套接字安装 XFRM 安全关联;
  3. 每个安全关联在扩展序列号状态中存储一个 192 字节的小型 ELF 负载的 4 个字节;
  4. 通过 `splice()` 和 `SPLICE_F_MOVE` 将 `/usr/bin/su` 的只读页面移入 UDP 数据包路径;
  5. 数据包携带一个文件支持的页面作为 `skb` 片段;
  6. ESP 接收路径执行原地重放窗口更新,其中片段页面被视为可写;
  7. 4 字节写入落在页缓存支持的页面中;
  8. **磁盘上的文件保持不变** ,但**内存中的缓存表示被破坏** ;
  9. 后续执行可能使用修改后的变体而不是干净的磁盘内容。



* * *

![Dirty Frag diagram](https://assets.kitploit.com/production/public/readmes/15980/de3151bfe30e8403053556df713f37a81214ede3ad44c53a0b7a41878f4e3625.png)

* * *

## 本仓库包含内容

  * `poc/dirtyfrag_sim.cpp` — 清理后的 C++ 研究源码产物
  * `poc/dirtyfrag` — 编译的 64 位二进制产物
  * `docs/dirtyfrag-flow.png` — 生成的出版图表



## 二进制构建

仓库还包含一个从 C++ 源文件编译的 C++ 二进制产物。示例构建命令:

root@kitploit:~
    
    
    g++ -std=c++17 -o poc/dirtyfrag poc/dirtyfrag.cpp
    

* * *

## 受影响版本

从 `cac2661c53f3`(2017-01-17)到 `f4c50a4034e6`(2026-05-05,已发布修复)之间的内核。

有效暴露窗口约为 9 年。

## 免责声明

本仓库仅供防御性研究、文档记录和教育分析使用。

请勿将其用于瞄准真实系统、修改特权可执行文件或获取未经授权的访问。

该漏洞类别由 **Hyunwoo Kim(@v4bel)** 发现。本仓库是一个独立的、经过清理的研究产物,旨在加速分析。

* * *

## 参考资料

  * 原始 Dirty Frag 研究与链:V4bel/dirtyfrag
  * 原始分析文章:dirtyfrag write-up
  * CVE-2026-43284 的内核修复:提交 `f4c50a4034e6`