DirtyClone,Linux内核又爆一提权大洞一句话概括:Linux内核网络栈的一个标志位丢失bug,让任何普通用户都能静默拿到root权限——不改磁盘、不留日志、绕过完整性监控。
| |
|---|
| CVE编号 | |
| 漏洞名称 | |
| CVSS评分 | |
| 漏洞类型 | |
| 发现者 | |
| 披露时间 | |
| 影响范围 | Linux Kernel 3.9 ~ 7.1-rc5以下全系列 |
| PoC状态 | |
| 在野利用 | |
DirtyClone是DirtyFrag漏洞家族的第四个成员。前三个分别是Copy Fail、DirtyFrag和Fragnesia——半年内同一个内核子系统连续炸了四次,可见Linux网络栈的安全债务有多深。
攻击效果极其干净:
🔹 普通本地用户 → 直接拿到root shell
🔹 零磁盘痕迹:只改内存页缓存,不动磁盘文件
🔹 零日志痕迹:不触发审计、不写syslog
🔹 绕过完整性监控:AIDE、Tripwire等文件监控工具全部失效
🔹 容器可逃逸:Docker/K8s环境可从容器内打到宿主机root
第一步:把目标程序加载到页缓存。 攻击者mmap映射/usr/bin/su,让这个特权二进制的代码页进入内核页缓存。
第二步:让内核把页缓存"当成"网络缓冲区。 通过nftables转发规则+IPsec ESP隧道,攻击者构造特殊数据包,利用_pskbcopyfclone函数在克隆分片时丢失SKBFLSHARED_FRAG标志位。内核误以为这块内存是可写的网络缓冲区,而非只读的文件页缓存。
第三步:IPsec原地解密 = 写原语。 IPsec ESP解密时会在缓冲区上原地写入。由于标志位丢失,内核没有执行写时复制(CoW),解密操作直接覆盖了/usr/bin/su在内存中的认证逻辑。下次执行su时,校验被绕过,直接拿到root。
整个过程中,磁盘上的su文件完好无损,只有RAM中的页缓存被篡改。重启后攻击痕迹自动消失——堪称"完美犯罪"。
# 直接运行脚本即可python3 dirtyclone.py利用前提: 系统默认开启非特权用户命名空间 + 加载esp4/esp6内核模块(绝大多数发行版默认满足)。
下载地址:该漏洞PoC已经公开,可以网上搜索下载。有需要的也可以在留言区留言:CVE-2026-43503
永久修复:升级内核
升级至Linux Kernel 7.1-rc5及以上,或安装各发行版安全补丁:
🔹 Debian:https://security-tracker.debian.org/tracker/CVE-2026-43503
🔹 Ubuntu:https://ubuntu.com/security/CVE-2026-43503
🔹 Fedora:https://bugzilla.redhat.com/show_bug.cgi?id=2480902
🔹 补丁commit:https://git.kernel.org/stable/c/48f6a5356a33
临时缓解(无法立即升级时):
# 1. 禁用非特权用户命名空间sysctl -w kernel.unprivileged_userns_clone=0# 2. 禁用IPsec ESP模块(会影响IPsec/AFS功能)modprobe -r esp4 esp6 rxrpcecho"install esp4 /bin/false" >> /etc/modprobe.d/esp-disable.confecho"install esp6 /bin/false" >> /etc/modprobe.d/esp-disable.conf⚠️ Ubuntu 24.04+因AppArmor已限制非特权命名空间,默认不受影响。但Debian、Fedora等发行版仍需立即处理。
半年内DirtyFrag家族连出四变,说明Linux内核网络栈的"共享内存保护"这一底层设计存在系统性缺陷。JFrog在报告中直言:任何在传输过程中丢弃shared-frag标志的函数都可能成为下一个变种,全面审计仍是未完成的工作。