该漏洞根植于 Linux 内核的
algif_aead 模块(AF_ALG 加密接口的 AEAD 实现)。2017 年引入的 commit
72548b9 在 algif_aead中添加了原地(in-place)操作优化,试图将 TX SGL(发送缓冲区)的数据直接复制到 RX SGL(接收缓冲区)以节省一次内存拷贝。
原地操作有一个致命前提:source 和 destination 必须指向同一块物理内存映射。但在 algif_aead 的实际场景中,TX SGL 的数据来自用户态 sendmsg()提交的内存,而 RX SGL 的数据通过splice()指向另一块映射(如 page cache 页面、pipe buffer)。当两者来自不同映射时,in-place 复制逻辑错误地计算了偏移和长度,导致数据被写入错误的内存位置——形成对 page cache 的可控 4 字节临时写入(scratch-write)。
攻击链:AF_ALG socket→ algif_aead →splice() → 4-byte page cache write → 篡改 Setuid 程序内存映像 → root。
主要危害:
本地提权: 攻击者可通过篡改
/usr/bin/su 等 Setuid 程序在内存中的映像,直接获取 Root 权限。
容器逃逸: 页缓存在宿主机范围内共享,容器内的低权限代码可影响宿主机或其他容器。
隐蔽性强: 攻击仅修改内存缓存而不触碰磁盘文件,传统文件完整性校验工具无法检测。
无需竞态条件: 确定性漏洞,无需竞态条件,732-byte PoC 可在所有主流发行版稳定利用。
经龙蜥社区安全团队评估,以下 Anolis OS 版本及内核组合受此漏洞影响:
|
产品版本 |
受影响内核版本 |
风险等级 |
建议措施 |
|
Anolis OS 7 |
ANCK 4.19 |
高危 |
立即更新至修复版本( ANSA-2026:0566) |
|
Anolis OS 8 |
ANCK 5.10 |
高危 |
立即更新至修复版本( ANSA-2026:0565) |
|
Anolis OS 23 |
ANCK 6.6 |
高危 |
立即更新至修复版本( ANSA-2026:0564) |
龙蜥社区已于 2026 年 5 月 2 日发布 Anolis OS 7/8/23 的官方安全修复公告 ANSA-2026:0566、ANSA-2026:0565、ANSA-2026:0564。受影响用户请立即执行以下命令完成修复:
# Anolis OS 7 / 8 yum update kernel # Anolis OS 23 dnf update kernel
更新后重启系统以加载修复后的内核。重启后请移除所有临时缓解措施(BPF LSM、LD_PRELOAD、systemd 限制等)。
参考链接:
[1]CVE-2026-31431 - NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-31431
[2] Linux Kernel Commit a664bf3d (Fix)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70004278/viewspace-3117262/ ,如需转载,请注明出处,否则将追究法律责任。