CVE-2026-31431 Linux Copy Fail 提权漏洞修复方案

近期,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 reboot

3.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"


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.sulao.cn/post/1169

评论列表

0%