JFrog安全研究团队于2026年6月25日公开发布了Linux内核高危本地提权漏洞DirtyClone(CVE-2026-43503,CVSS评分8.8)的完整利用分析报告。这是DirtyFrag漏洞家族的第四个成员,允许本地非特权用户通过克隆网络数据包破坏文件支持的内存,从而获得root权限。
漏洞根源:一个丢失的安全标记
DirtyClone的根源在于Linux内核处理socket buffer(skb)片段时,两个辅助函数(__pskb_copy_fclone()和skb_shift())未能正确传播SKBFL_SHARED_FRAG标记位。该标记用于标识数据包内存与磁盘文件共享。当内核内部复制网络数据包时,这一安全标记被丢弃——整个漏洞就此产生。
攻击原理:七步提权链条
攻击者首先将特权二进制文件(如/usr/bin/su)加载至内存页缓存,通过splice和vmsplice将页缓存内存挂载到UDP套接字缓冲区。随后利用unshare -Urn在用户命名空间内获取CAP_NET_ADMIN能力,配置回环IPsec隧道。通过netfilter TEE规则触发数据包经__pskb_copy_fclone()克隆,由于安全标记丢失,克隆包在IPsec解密阶段(esp_input())直接覆写了/usr/bin/su内存副本中的认证逻辑。此后任何用户执行su都将直接获得root权限。
磁盘上的文件始终未被修改,篡改仅存在于内核内存副本中。文件完整性检测工具无法发现异常,攻击不留下任何审计日志,重启即可恢复原始二进制。
影响范围:默认配置下广泛暴露
Debian和Fedora默认启用非特权用户命名空间,本地用户可在新命名空间内获取CAP_NET_ADMIN能力。Ubuntu 24.04及更高版本通过AppArmor限制命名空间创建,可阻止默认攻击路径。页缓存在宿主机层面共享,命名空间内的修改将影响机器上所有进程。
JFrog已在Debian、Ubuntu和Fedora的默认命名空间配置上成功验证了该漏洞。最高风险环境包括多租户服务器、CI运行器、容器宿主机及Kubernetes集群。
DirtyFrag家族:同一缺陷的反复出现
DirtyClone是近期第四个具有相同失效模式的提权漏洞:
| | | | |
|---|
| | | | |
| CVE-2026-43284 / CVE-2026-43500 | | | |
| | | | |
| | | | |
原始DirtyFrag研究员Hyunwoo Kim于5月16日提交了覆盖多个剩余片段传输辅助函数的更广泛补丁。该综合修复于5月21日合并至主线(commit 48f6a5356a33),5月23日分配CVE编号,5月24日在Linux v7.1-rc5中发布。
修复与缓解
立即更新: 安装Linux内核至v7.1-rc5或应用发行版提供的CVE-2026-43503反向移植补丁。Debian、Ubuntu和SUSE已发布安全公告。
临时缓解(无法立即修补时):
根本问题:契约缺陷
这不是单个辅助函数的错误,而是一个契约问题:每个移动skb片段的代码路径都必须每次都保留共享片段标记位。内核的零拷贝网络允许文件支持的内存充当数据包数据,链条中任何一处被丢弃的标记都会将性能优化转化为写入原语。任何移动片段描述符而未传播SKBFL_SHARED_FRAG标记的函数都可能成为新的CVE。
DirtyFrag漏洞家族很可能尚未终结。