🧬 核心原理:页缓存写入原语
DirtyFrag 属于 Dirty Pipe / Copy Fail 漏洞家族,其本质是滥用内核的页缓存(Page Cache)写入原语。
根本缺陷:攻击者利用
splice()将一个只读文件的页缓存页面固定到内核数据结构(如sk_buff的 frag 成员)中。随后,内核代码在该页面之上执行原地写入(in-place write),永久性地破坏了攻击者原本只能读取的文件在内存中的副本,从而修改只读文件(如setuid程序或/etc/passwd)来提权。双漏洞链:为了覆盖不同系统环境,DirtyFrag 串联了两个独立漏洞:
CVE-2026-43284(xfrm-ESP 路径):通过 IPsec ESP 输入路径触发,提供任意 4 字节 STORE 原语。需要
unshare(CLONE_NEWUSER)权限,但绝大多数发行版都可用。CVE-2026-43500(RxRPC 路径):通过 RxRPC 原地解密路径触发,提供 8 字节 STORE 原语。无需命名空间权限,但依赖
rxrpc.ko模块(Ubuntu 默认加载)。回退机制:利用程序会先尝试 ESP 路径;若命名空间创建被阻止(如 AppArmor 加固),则自动回退到 RxRPC 路径,从而实现“通用”提权。
Android 工程实现:在三星设备上,DirtyFrag 将页缓存写入原语用于加载一个临时内核模块(dfroot.ko)来绕过 RKP/KDP 保护,并以 uid 1000 启动一个一次性进程来写入下载模式授权字节(D2 Writer),整个过程不会向磁盘复制任何内容,也没有常驻守护进程。Root 是临时的,重启设备即恢复干净状态,这本身也是一种恢复路径。
🛡️ 解决方案与缓解措施
1. 临时缓解方案(立即执行)
在官方补丁未普及时,最有效的临时缓解措施是禁用相关内核模块,直接切断攻击路径。
以 root 身份执行以下命令:
sh -c "printf 'install esp4 /bin/falseninstall esp6 /bin/falseninstall rxrpc /bin/falsen' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"该命令会创建配置文件阻止模块加载,并尝试卸载已加载的模块。
2. 官方修复与升级
CVE-2026-43284:已在 Linux 主线内核通过提交
f4c50a4034e6修复(2026-05-08)。CVE-2026-43500:披露时尚无补丁合并到任何内核树。
彻底方案:关注发行版安全公告,通过
yum update --cve CVE-2026-43284或类似命令升级内核至包含修复的版本。
3. Android / 三星设备特别说明
官方修复:检查三星固件更新。若厂商已回填补丁,DirtyFrag 日志会提示“设备不易受攻击”。
临时缓解:Android 设备通常不便直接执行上述
modprobe命令,需依赖厂商更新。恢复干净状态:若曾运行过 DirtyFrag,直接重启设备即可清除临时的内核模块和 Root 状态,恢复到未 Root 的干净环境。
4. 检测与清理(若怀疑已被利用)
由于攻击修改的是内存中的页缓存,传统文件完整性监控(FIM)可能失效。若曾在未缓解系统上执行过漏洞利用,建议:
丢弃页缓存:执行
echo 3 | sudo tee /proc/sys/vm/drop_caches,强制系统从磁盘重新读取数据,清除被污染的内存副本。重启系统:最彻底的方式,直接清空易失性内存中的所有恶意修改。
总的来说,DirtyFrag 是 Dirty Pipe 类漏洞在 Android 生态的工程化延伸,其“临时 Root”特性降低了持久化后门风险,但漏洞本身(CVE-2026-43284/43500)影响广泛。临时禁用 esp4、esp6、rxrpc 模块是当前阻断攻击最直接有效的手段,彻底修复仍需等待并安装官方内核更新。
温馨提示
学习研究为主、切勿用于非法用途
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……



