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
相关推荐
Biomamba生信基地1 小时前
安全访问:FutureTerminal之Jupyter配置及Linux终端、Python与R环境访问
linux·远程连接·生物信息学
M78佐菲1 小时前
ARM学习笔记(三)
linux·arm开发·笔记·嵌入式硬件·学习
邪修king1 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
A-刘晨阳1 小时前
普通摄像头怎么加上 AI 监控?用 Frigate 把识别和事件管理放到绿联 NAS
运维
云计算练习生1 小时前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
Doris__HE1 小时前
【元脑服务器NF8480G7-NF8480M7技术规格分享】
运维·服务器·数据库·缓存·性能优化
可涵不会debug1 小时前
公司外怎么连接管家婆?从 SQL Server 安装到 cpolar 固定 TCP 远程登录
linux·运维·ubuntu
wuyk5551 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 12 章 Linux 系统 WiFi 常用命令全集:iw/iwlist/ip/wpa_cli 实战
linux·网络·stm32·物联网·tcp/ip
骇客野人1 小时前
Java 前后端可部署落地架构方案
服务器·前端·微服务
wuminyu1 小时前
纯轻量级锁体系下C2编译器锁粗化和消除机制剖析
java·linux·c语言·jvm·c++