(Platform name), Vulnerability type, CVE(id) (and if low or medium or critical)

Listen to this Post

CVE-2026-31431 (copy.fail) 漏洞原理

该漏洞本质为 Linux 内核 AF_ALG 加密套接字组件 `algif_aead` 模块中的执行路径逻辑错误。漏洞核心在于名为 “Copy Fail” 的本地权限提升漏洞,源于 2017 年引入的 “就地优化” 特性,该特性意外地将页面缓存页放入可写入的散列表中。
具体而言,当 `authencesn` AEAD 算法在进行解密操作时,会向输出边界外写入 4 字节的临时数据。在 “就地优化” 路径下,结合 `splice()` 系统调用,这 4 字节的溢出会直接落入进程打开的任意文件的页面缓存中,且此文件可以是以只读模式(O_RDONLY)打开的。

这意味着一个无特权的本地攻击者可以利用AF_ALG套接字和splice(),实现对系统中任意可读文件的内存副本(页面缓存)进行受控的、确定的 4 字节写入。该漏洞攻击确定性极高,无需竞争条件或针对特定内核进行调试,732字节的Python脚本即可稳定触发提权。

在 Kubernetes 环境中,此漏洞尤为严峻,因为 containerd 会跨 OverlayFS 挂载重用相同的 XFS 页面缓存页面。攻击者只需调度一个普通 Pod,即可通过篡改共享镜像层(如 /usr/sbin/nft)的页面缓存,实现对特权 DaemonSet(如 kube-proxy)的代码注入。这使得攻击者能实现容器逃逸并获得主机的 root 权限。

dailycve form

Platform: Linux Kernel
Version: 4.9 到 6.18
Vulnerability : 页面缓存损坏
Severity: 高危 (CVSS 7.8)
date: 2026-04-30

Prediction: 2026-05-15

Analytics under heading What Undercode Say:

快速检测脚本

!/bin/bash
VERSION=$(uname -r)
if [[ "$VERSION" =~ ^([4-6].) || "$VERSION" =~ ^6.1[0-8] ]]; then
echo "可能受影响,内核版本: $VERSION (范围 4.9 - 6.18)"
else
echo "当前内核版本 $VERSION 可能已安全或不在受影响范围内。"
fi
modprobe -n algif_aead 2>/dev/null | grep -q "install /bin/false" && echo "尝试通过modprobe禁用,但请注意algif_aead可能为内置模块,需使用内核引导参数" || echo "未检测到明确的modprobe禁用配置。"

受影响范围验证 PoC 概念

// 概念性验证代码片段,展示核心逻辑流程
include <sys/socket.h>
include <linux/if_alg.h>
int main() {
int sockfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
struct sockaddr_alg sa = { .salg_type = "aead", .salg_name = "authencesn(hmac(sha256),cbc(aes))" };
bind(sockfd, (struct sockaddr )&sa, sizeof(sa));
int opfd = accept(sockfd, NULL, 0);
// 此处使用 splice() 将只读文件描述符的内容通过 opfd 管道进行写入
// 该操作将触发页面缓存损坏漏洞
}

Exploit:

攻击者首先创建一个 AF_ALG 类型套接字并绑定到受影响 AEAD 算法(如 authencesn)。随后通过 `splice()` 系统调用,将一个以只读方式打开的目标文件(如 /usr/bin/su)的文件描述符数据,通过管道直接 “拼接” 到该 AF_ALG 套接字的操作文件描述符(op_fd)上。在写入过程中,受影响的 `authencesn` 解密路径会错误地将4字节输出值写入目标文件的共享页面缓存中。通过多次迭代(如40次)精确地将一个用于获取root权限的自定义 shellcode 写入只读文件的内存副本,从而生成一个隐藏的提权后门。当受害者执行原本合法的系统二进制文件时,实际执行的是攻击者注入的恶意代码,实现本地权限提升。

Protection from this CVE:

1. 立即停用受影响模块:通过内核引导参数 `initcall_blacklist=algif_aead_init` 阻止模块初始化。此方法适用于将 algif_aead 编译进内核的系统。

2. 使用 Seccomp 限制:为所有工作负载部署自定义 Seccomp 配置文件,阻止创建 `AF_ALG` 套接字调用。配置文件示例如下:

defaultAction: SCMP_ACT_ALLOW
syscalls:
- names:
- socket
action: SCMP_ACT_ERRNO
args:
- index: 0
value: 38
op: SCMP_CMP_EQ

3. 部署 eBPF 程序:在主机上运行 eBPF 程序,在运行时层面直接阻断 `algif_aead` 模块的相关调用路径。

  1. 升级系统:将 Linux 内核升级至修复版本(6.18.22, 6.19.12, 7.0 或更高版本)或升级至包含该内核的 Talos 版本(v1.12.7 或 v1.13.0)。

Impact:

本地攻击者可获得 root 权限。在容器化平台如 Docker 和 Kubernetes 中,一个低权限容器即可实现容器逃逸并获得宿主机完整的 root 访问权限,进而访问节点机密和横向移动。CISA 已将其列入已知被利用漏洞目录(KEV),并要求联邦机构在 2026 年 5 月 15 日前完成修补。

🎯Let’s Practice Exploiting & Learn Patching For Free:

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top