一个出奇简单却又致命的 Linux 内核本地提权漏洞
CVE-2026-31431(别名 "复制失败")是 Linux 内核加密子系统中的一个本地提权漏洞,具体影响 algif_aead 接口。
未授权的本地用户可利用此漏洞对系统中 任意可读文件(包括 setuid 二进制文件)的页缓存执行 受控的 4 字节写入,最终实现 以 root 权限执行任意代码。
该漏洞由 2017 年的提交 72548b093ee3("crypto: algif_aead - support in-place operations")引入。
内核错误地假设 AEAD 请求可以安全地 原地 执行(req->src == req->dst)。然而,当使用 AF_ALG 套接字配合 splice() 操作普通文件时,源和目标缓冲区通常位于 不同的内存映射 中。
这种不匹配导致了逻辑错误,使得页缓存中的受控内存破坏成为可能。
利用 非常简单。一个约 10 行的 Python PoC 即可在未修补的系统上可靠地获取 root 权限。
| 指标 | 值 |
|---|---|
| CVSS v3 评分 | 7.8(高危) |
| Red Hat 评级 | 重要 |
| Ubuntu 评级 | 高危 |
a664bf3(或等效反向移植)的内核建议操作:立即 更新你的内核。
官方修复还原了 crypto/algif_aead.c 中有问题的原地优化。
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
# RHEL / Fedora / Rocky / Alma
sudo dnf update kernel -y
# 检查内核版本
uname -r
临时缓解措施(如果无法立即修补):
AF_ALG 套接字的使用公开利用程序已可用,其中包括一个非常小巧且可靠的 Python 概念验证。
⚠️ 警告:披露后未打补丁的系统极易受到攻击。
保持安全。尽早修补。经常修补。
为 Linux 社区倾情制作 ❤️
| 攻击类型 | 本地提权 |