近期,Theori / Xint Code 公开披露 Linux 内核漏洞 Copy Fail(CVE-2026-31431)。该漏洞存在于 Linux 内核加密子系统相关逻辑中,攻击者在获得本地普通用户权限后,可通过 AF_ALG、splice() 与 authencesn 相关逻辑组合,触发对 page cache 的受控写入,从而实现本地提权。研究方称,公开 PoC 可在多个主流 Linux 发行版上将普通用户提升为 root。
该漏洞的危险点不在于远程直接入侵,而在于它会把“已经获得的低权限执行点”迅速放大为 root 权限。因此,对于多用户 Linux 主机、Kubernetes 节点、容器平台、CI/CD 构建机、自托管 Runner、云端 Notebook、沙箱执行环境等场景,风险显著高于普通单用户服务器。研究方特别指出,page cache 在宿主机范围内共享,因此该问题也具备容器逃逸和跨租户影响。
漏洞也就不过多介绍,主要说明在我的场景,我使用的k8s集群,目前不是很方便去升级内核了,所以使用以下方案进行提权阻断。
1.通过内核阻断
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo update-initramfs -u然后进行验证
lsmod | grep algif_aead #正常无输出
sudo modprobe algif_aead
#返回以下错误说明验证通过
modprobe: ERROR: ../libkmod/libkmod-module.c:990 command_do() Error running install command '/bin/false' for module algif_aead: retcode 1
modprobe: ERROR: could not insert 'algif_aead': Invalid argument由于 algif_aead 属于 按需自动加载 的模块。当用户态程序调用 socket(AF_ALG, ...) 时,内核会自动加载 algif_aead.ko(前提是它没有被 blacklist 或 install /bin/false 阻止)。
如果只是当前未加载,但没有任何阻止机制,攻击者触发一次 AF_ALG 调用,模块就会立刻被内核加载上,漏洞即可利用。
设置的 install algif_aead /bin/false 作用就是即使有人/程序尝试触发加载,内核会执行 /bin/false 来代替真正的模块加载,导致加载失败。这相当于一个强力的黑名单,比单纯的 blacklist 更可靠。
2.内核启动参数强制禁止
还有使用内核启动参数强制禁止algif_aead 模块初始化函数运行,此方案需要重启
sudo sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="initcall_blacklist=algif_aead_init"/' /etc/default/grub
sudo update-grub # Debian/Ubuntu
sudo reboot3.k8s和容器配置 seccomp 策略
seccomp:
defaultAction: "SCMP_ACT_ALLOW"
syscalls:
- names: ["socket"]
action: "SCMP_ACT_ALLOW"
args:
- index: 0
value: 38 # AF_ALG
op: "SCMP_CMP_NE"内容版权声明:除非注明,否则皆为本站原创文章。
评论列表