Copy Fail Linux内核提权漏洞(CVE-2026-31431)

目录

1、确认是否涉及漏洞

2、影响范围

3、复现漏洞

[4、 漏洞修复](#4、 漏洞修复)

方案一:临时缓解(无需重启,快速止血)

方案二:升级修复(彻底根治,需重启)


Copy Fail (CVE-2026-31431) 漏洞技术根因分析

该漏洞的根源位于 Linux 内核加密子系统(crypto)的 authencesn AEAD 模板中(主要用于 IPsec 的扩展序列号 ESN 支持)。其形成是历史代码优化与特定算法逻辑缺陷叠加的结果:

前置条件(2017年代码变更):algif_aead 模块曾引入一项"in-place(就地)优化"。该优化导致 AF_ALG socket 在处理 AEAD 解密请求时,会将目标文件的页缓存(page cache)页面直接链入可写的散列表(scatterlist)中,打破了输入输出内存区域分离的安全假设。

触发机制(逻辑缺陷):authencesn 算法在解密过程中,会将调用者提供的目标缓冲区末尾当作临时暂存空间(scratch space)。该函数会在合法输出边界之外,额外写入 4 字节的序列号低位数据(seqno_lo),且不会恢复原始内容。

攻击链闭环:攻击者利用 splice() 零拷贝机制,将任意可读文件(如 /usr/bin/su)的页缓存页面传入 AF_ALG socket。由于上述"就地优化",authencesn 的越界写入操作会直接覆盖到该文件的页缓存中。

漏洞影响:该过程被称为"Copy Fail",即复制操作因逻辑缺陷"失败"并越界。攻击者无需竞争条件(race condition)或反复重试,单次直线执行即可成功。通过精确覆盖 SUID 程序在内存中的 4 字节代码,攻击者可直接篡改程序逻辑,进而获取系统的 root 权限。

1、确认是否涉及漏洞

复制代码
检查内核版本,uname -r

检查内核配置是否启用(推荐)
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r) 

注:会出现以下三种情况:

CONFIG_CRYPTO_USER_API_AEAD=n 彻底关闭,绝对不受影响

CONFIG_CRYPTO_USER_API_AEAD=y 静态编译进内核,Ismod 查不到,但存在漏洞可被利用(例如:Centos 8.5)

CONFIG_CRYPTO_USER_API_AEAD=m 模块方式,Ismod 可查,加载就有风险

检查authencesn模块状态:

复制代码
$ lsmod | grep authencesn
authencesn             77824  0

2、影响范围

几乎所有主流发行版默认内核均受影响(AF_ALG默认启用):

|-----------------|-------------------------------------------------|
| 发行版系列 | 受影响的具体版本 |
| Ubuntu | 24.04 LTS、22.04 LTS、20.04 LTS 及以下版本 |
| Red Hat (RHEL) | RHEL 10、9、8 及以下版本 |
| Debian | Debian 13、12、11 等同期内核版本 |
| Amazon Linux | Amazon Linux 2023、Amazon Linux 2 |
| SUSE / openSUSE | SUSE 16、openSUSE Leap 15.6 及以下版本 |
| 国产操作系统 | 统信 UOS、麒麟 (Kylin) V10/V11、openEuler、Anolis OS 等 |

3、复现漏洞

克隆仓库:

复制代码
git clone https://github.com/theori-io/copy-fail-CVE-2026-31431.git
cd copy-fail-CVE-2026-31431

运行环境依赖:

复制代码
需要 kernel-devel 和相关构建工具

sudo apt update
sudo apt install linux-headers-$(uname -r) build-essential

执行(请勿在生产环境测试):

复制代码
python3 copy_fail_exp.py

id
uid=0(root) gid=0(root) groups=0(root)

看到 uid=0(root) 即为利用成功。

4、 漏洞修复

方案一:临时缓解(无需重启,快速止血)

适用场景:无法立即安排重启的生产环境,且业务不依赖 AF_ALG 接口。

复制代码
# 1. 写入禁用配置(比黑名单更彻底)
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf

# 2. 立即卸载当前已加载的模块
sudo rmmod algif_aead 2>/dev/null || true

# 3. 更新 initramfs(确保重启后依然生效)
# Ubuntu/Debian 系统执行:
sudo update-initramfs -u
# RHEL/CentOS/Alibaba Cloud Linux 系统执行:
sudo dracut -f
方案二:升级修复(彻底根治,需重启)

适用场景:可以安排维护窗口重启,或临时缓解无效(静态编译内核)的系统。

复制代码
# 1. 执行内核升级
# Ubuntu/Debian 系统执行:
sudo apt update && sudo apt full-upgrade -y
# RHEL/CentOS/Alibaba Cloud Linux/Amazon Linux 系统执行:
sudo yum update kernel -y

# 2. 必须重启系统以加载新内核
sudo reboot

# 3. 重启后验证内核版本(需符合官方修复版本要求)
uname -r
相关推荐
源远流长jerry1 小时前
TCP 连接队列解析:从 listen () 到 connect ()
linux·服务器·网络·网络协议·tcp/ip
剑神一笑1 小时前
Linux grep 命令深度解析:从正则表达式到性能优化
linux·运维·正则表达式
苏宸啊1 小时前
linux缓冲区的理解
linux
Bert.Cai1 小时前
Linux bc命令详解
linux·运维·服务器
rjszcb1 小时前
Linux.之系统性能监控脚本, CPU、内存、DDR、CMA、ISP、MPP、ION、DRM、进程
linux·服务器
小小仙。1 小时前
IT自学第四十三天(微服务登录认证)
运维·微服务·架构
桌面运维家1 小时前
Linux磁盘IO调度器配置技巧 提升系统读写性能
linux·运维·服务器
xcjbqd01 小时前
SAP硬件选择详解:服务器、存储与网络的全面解析
运维·服务器·网络
Lehjy1 小时前
【Linux】进程地址空间与写时拷贝
linux·运维·服务器