当前位置:首页>Linux>CVE-2026-31431 Linux内核提权漏洞主流平台完整修复指南

CVE-2026-31431 Linux内核提权漏洞主流平台完整修复指南

  • 2026-10-11 08:12:16
CVE-2026-31431 Linux内核提权漏洞主流平台完整修复指南

一、漏洞概要与补丁发布状态

1.1 漏洞基本信息

CVE ID
:CVE-2026-31431
漏洞名称
:"Copy Fail"
CVSS 3.1评分
:7.8(高危)
漏洞类型
:本地权限提升(Local Privilege Escalation, LPE)
发现团队
:Theori/Xint Code Research Team
公开披露日期
:2026年4月29日

1.2 漏洞根因

漏洞存在于Linux内核的algif_aead模块中(AF_ALG用户态加密API接口)。2017年,commit 72548b093ee3引入了一项in-place优化,将AEAD加密操作从out-of-place改为了in-place处理。由于逻辑缺陷,攻击者可通过组合AF_ALG加密接口和splice()系统调用,向任意可读文件的页缓存(page cache)写入4字节受控数据,包括setuid特权二进制文件(如/usr/bin/su)。修改页缓存即修改了内存中的可执行文件镜像,无需修改磁盘上的文件,因此文件完整性检查工具无法检测到篡改。再次执行被篡改的setuid程序即可获得root权限。

1.3 补丁发布状态

上游Linux内核在2026年4月11日左右合并了修复补丁(commit fafe0fa2995a和a664bf3d603d,回退了2017年的in-place优化),修复版本如下:

内核版本分支

状态

6.18系列

6.18.22及更高版本已修复

6.19系列

6.19.12及更高版本已修复

7.x系列

7.0及更高版本已修复

长期支持分支(6.12/6.6/6.1/5.15/5.10等)

各发行版陆续backport中

截至2026年5月6日,CISA已将CVE-2026-31431加入已知被利用漏洞目录(KEV),安天公司报告已发现漏洞在野利用情况,建议所有受影响用户立即升级至最新版本。

二、主流Linux系统影响范围及官方公告

2.1 受影响内核版本范围

受影响
:Linux内核版本4.14至7.0-rc,即2017年7月至今发布的所有内核版本
不受影响
:内核版本低于4.14的系统(如SLES 11),以及内核版本≥6.18.22、≥6.19.12或≥7.0的系统

2.2 各发行版受影响与补丁状态(截至2026年5月6日)

发行版

受影响状态

补丁/修复状态

官方公告/说明

Ubuntu

所有26.04之前的版本均受影响

部分修复中;kmod包已提供临时缓解

Canonical已通过kmod包禁用模块,内核补丁陆续推送

Debian

受影响

sid/unstable已修复;bookworm(12)已修复;bullseye(11)已发布DLA-4560-1,版本5.10.251-3

安全跟踪器已更新,漏洞描述已确认

RHEL / CentOS Stream

受影响(RHEL 8/9/10)

补丁逐步推送中

Red Hat已确认所有OpenShift集群受影响,正在开发补丁

Fedora

受影响

Fedora 42/43已通过内核更新修复

修复已合入内核主线和稳定分支

SUSE / SLES

SLES 12 SP5及更新版本、SLES  15/16均受影响

陆续推送;openSUSE Tumbleweed已更新至6.19.12,Slowroll已更新至6.18.22

SUSE官方已发布更新公告(SUSE-SU-2026:1674-1)

Amazon Linux

Amazon Linux 2、2023均受影响

AL2已发布安全更新(kernel  5.4.302-223.469)

Tenable已检测到相关安全公告

CloudLinux

CL7h、CL8、CL9、CL10均受影响

补丁和KernelCare livepatch正在推送中

官方状态页面跟踪中

AlmaLinux / Rocky Linux

受影响

随上游RHEL补丁一起推送

同受RHEL系列影响

Oracle Linux

受影响

补丁随上游推送

同受RHEL系列影响

Arch Linux

受影响

滚动更新已合入修复

跟踪上游内核更新

统信UOS

所有版本均受影响

已推送补丁至系统仓库

官方安全公告已发布

麒麟OS

受影响

4月30日发布修复方案

桌面和服务器产品详细方案已发布

重要说明:CentOS 7已于2024年7月结束支持(EOL),官方不再提供更新,建议尽快迁移到受支持的RHEL衍生发行版。

三、临时缓解方案(治标不治本)

⚠️重要提示:以下方案均为临时缓解措施,不能替代内核更新。修复漏洞的根本方案仍然是升级到已打补丁的内核版本。

3.1 方案一:禁用algif_aead内核模块(适用于Debian/Ubuntu/openSUSE等)

该方法适用于algif_aead编译为可加载内核模块(.ko)的发行版:
bash

创建配置文件禁用模块

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf

立即卸载已加载的模块

rmmod algif_aead 2>/dev/null || true
执行后,模块将被禁用,系统重启后也会保持禁用状态。

3.2 方案二:通过grubby黑名单initcall(适用于RHEL/CentOS/Alma/Rocky/CloudLinux等)

⚠️此方案专用于algif_aead为内置模块(CONFIG_CRYPTO_USER_API_AEAD=y)的RHEL系列发行版。上述modprobe方案在RHEL系列上无效——命令执行不会报错,但实际无法屏蔽该模块。
bash

添加内核启动参数,阻止algif_aead_init被注册

sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

重启系统使参数生效

sudo reboot

验证参数已生效

sudo grubby --info=ALL | grep initcall_blacklist
回退方法:
bash
sudo grubby --update-kernel=ALL --remove-args="initcall_blacklist=algif_aead_init"
sudo reboot
据CloudLinux官方确认,该方案不影响dm-crypt/LUKS、kTLS、IPsec、SSH及默认的OpenSSL/GnuTLS构建。

3.3 方案三:通过seccomp限制AF_ALG套接字

对于容器化环境或多租户隔离场景,可通过seccomp策略禁止进程创建AF_ALG类型的套接字。
Docker环境示例:
json
{
"defaultAction": "SCMP_ACT_ALLOW",
"architectures": ["SCMP_ARCH_X86_64"],
"syscalls": [
{
"names": ["socket"],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 38,
"op": "SCMP_CMP_NE"
}
]
}
]
}

3.4 方案四:systemd单元级别限制

对于systemd管理的服务,可使用RestrictAddressFamilies限制AF_ALG地址族:
text
RestrictAddressFamilies=~AF_ALG

3.5 方案五:限制本地用户登录

严格限制非管理员的本地登录权限,虽然不能从根本上解决漏洞,但可降低攻击面。

四、各系统官方修复方案

4.1 Ubuntu

在线升级:
bash

升级所有安全更新包

sudo apt update && sudo apt upgrade

或仅升级内核相关包

sudo apt update && sudo apt install --only-upgrade linux-image-$(uname -r)
检查受影响状态:
bash

查看当前内核版本

uname -r

查看已安装内核包列表

dpkg -l 'linux-image*' | grep ^ii
修复版本参考:
kmod
包缓解版本:已推送到各LTS版本
内核安全版本:关注官方更新渠道

4.2 Debian

bash

Debian 11 Bullseye

sudo apt update && sudo apt upgrade linux-image-$(uname -r)

或完整升级

sudo apt update && sudo apt full-upgrade
修复版本:Bullseye已修复于kernel 5.10.251-3(DLA-4560-1)

4.3 RHEL / CentOS Stream / AlmaLinux / Rocky Linux

bash

检查可用内核更新

sudo dnf check-update kernel

升级内核

sudo dnf update kernel

或使用yum update-minimal仅安装安全更新

sudo yum update-minimal --cve CVE-2026-31431
完成后执行sudo reboot重启。

4.4 Fedora

Fedora 42/43用户通过标准dnf更新即可获得修复:
bash
sudo dnf update kernel
sudo reboot

4.5 SUSE / SLES

bash

SLES 15/16及openSUSE Leap

sudo zypper patch

或仅更新内核

sudo zypper update kernel-default

检查更新状态

sudo zypper list-patches
修复版本参考:openSUSE Tumbleweed已更新至6.19.12,Slowroll已更新至6.18.22

4.6 Amazon Linux

Amazon Linux 2:
bash
sudo yum update kernel
sudo reboot
修复版本:kernel 5.4.302-223.469及以上
Amazon Linux 2023:
bash
sudo dnf update kernel
sudo reboot

4.7 CloudLinux

CloudLinux用户可通过以下方式获取补丁:
直接内核更新:等待官方推送的pached kernel
KernelCare livepatch
:已发布到主更新源

4.8 统信UOS

bash

服务器D版

sudo apt update && sudo apt upgrade linux-image-$(uname -r)

其他服务器版本(yum系列)

sudo yum update-minimal --cve CVE-2026-31431

或

sudo yum update kernel
更新完成后执行sudo reboot

4.9 麒麟OS

请参阅麒麟官方安全公告()获取具体修复命令和补丁包信息

五、修复后的验证与安全加固

5.1 验证内核版本是否已修复

bash

查看当前内核版本

uname -r

检查algif_aead模块是否可加载

modinfo algif_aead 2>/dev/null && echo "模块存在" || echo "模块不存在"

检查模块是否已加载

lsmod | grep algif_aead
安全内核版本标识:
内核版本 ≥ 6.18.22 或 ≥ 6.19.12 或 ≥ 7.0:已修复
其他版本:请查阅发行版官方公告确认backport状态

5.2 验证缓解措施是否生效

对于modprobe禁用方案:
bash

检查模块禁用配置

cat /etc/modprobe.d/disable-algif.conf 2>/dev/null

预期输出:install algif_aead /bin/false

检查模块是否已卸载

lsmod | grep algif_aead

应该无输出

对于grubby黑名单方案(RHEL系列):
bash

检查内核启动参数

cat /proc/cmdline | grep initcall_blacklist

应包含initcall_blacklist=algif_aead_init

5.3 安全加固建议

限制AF_ALG访问
:在所有容器化环境中实施seccomp策略
容器安全
:Kubernetes节点上应用Pod Security Standards     (PSS),限制特权容器和hostPID/hostNetwork的使用。SUSE建议使用Kubewarden或原生PSA进行准入控制
日志监控
:监控auditd日志中AF_ALG套接字的创建事件
运行时检测
:部署Falco等运行时安全工具检测异常行为(Sysdig已提供检测规则)
最小权限原则
:限制非信任用户的本地登录权限

六、一键修复脚本

6.1 自动化修复脚本(带发行版检测)

bash
#!/bin/bash

CVE-2026-31431 (Copy Fail) 一键修复脚本

适用系统:Ubuntu/Debian/RHEL/CentOS/Fedora/SUSE/Amazon Linux/Alma/Rocky

set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

检测发行版

detect_os() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VERSION=$VERSION_ID
elif [ -f /etc/redhat-release ]; then
OS="rhel"
else
OS="unknown"
fi
log_info "检测到系统: $OS"
}

检查是否已修复

check_fixed() {
KERNEL_VER=$(uname -r)
log_info "当前内核版本: $KERNEL_VER"
#检查是否已有安全内核版本
if [[ "$KERNEL_VER" =~ ^6\.18\.([2-9][0-9]|[0-9]{3,}) ]] || \
[[ "$KERNEL_VER" =~ ^6\.19\.1[2-9] ]] || \
[[ "$KERNEL_VER" =~ ^7\.[0-9] ]] || \
[[ "$KERNEL_VER" =~ ^6\.18\.2[2-9] ]] || \
[[ "$KERNEL_VER" =~ ^6\.19\.1[2-9] ]]; then
log_info "✓内核版本已包含漏洞修复!"
return 0
fi
return 1
}

应用临时缓解

apply_mitigation() {
log_warn "内核尚未更新,正在应用临时缓解措施..."
case $OS in
ubuntu|debian)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
log_info "✓ algif_aead模块已禁用"
;;
rhel|centos|fedora|amzn|almalinux|rocky|ol)
RHEL_MOD_BUILTIN=$(modinfo algif_aead 2>&1 | grep -q "built-in" && echo "yes" || echo "no")
if [ "$RHEL_MOD_BUILTIN" = "yes" ]; then
log_warn "检测到algif_aead为内置模块,使用grubby黑名单方案"
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
log_info "✓内核参数已配置,请执行 'sudo reboot' 重启生效"
else
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
log_info "✓ algif_aead模块已禁用"
fi
;;
sles|opensuse-leap|opensuse-tumbleweed)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
modprobe -r algif_aead 2>/dev/null || echo "模块已卸载或未加载"
log_info "✓临时缓解措施已应用"
;;
*)
log_warn "未识别的发行版,请手动参考官方文档修复"
return 1
;;
esac
return 0
}

通过包管理器升级内核

update_kernel() {
log_info "正在执行内核更新..."
case $OS in
ubuntu|debian)
apt update && apt install -y --only-upgrade linux-image-$(uname -r)
;;
rhel|centos|fedora|amzn|almalinux|rocky|ol)
if command -v dnf &>/dev/null; then
dnf update -y kernel
else
yum update -y kernel
fi
;;
sles|opensuse-leap)
zypper update -y kernel-default
;;
*)
log_error "无法自动更新内核,请手动执行包管理器更新"
return 1
;;
esac
log_info "✓内核更新包已安装,请重启系统使新内核生效"
}

主函数

main() {
log_info "=== CVE-2026-31431 (Copy Fail) 一键修复脚本 ==="
echo ""
if [ $(id -u) -ne 0 ]; then
log_error "请使用root权限运行此脚本"
exit 1
fi
detect_os
if check_fixed; then
log_info "系统已修复,无需额外操作"
exit 0
fi
echo ""
log_warn "系统内核未包含漏洞修复!"
echo "请选择操作:"
echo "1) 仅应用临时缓解措施(可立即生效,无需重启)"
echo "2) 升级内核并应用永久修复(需要重启)"
echo "3) 同时执行临时缓解 + 内核升级(推荐)"
read -p "请输入选项 [1-3]: " choice
case $choice in
1)
apply_mitigation
;;
2)
update_kernel
log_info "请执行 'sudo reboot' 重启系统"
;;
3)
apply_mitigation
update_kernel
log_info "请执行 'sudo reboot' 重启系统使新内核生效"
;;
*)
log_error "无效选项"
exit 1
;;
esac
log_info "操作完成"
}
main "$@"

6.2 脚本使用说明

将上述脚本保存为 fix-cve-2026-31431.sh
赋予执行权限:chmod +x fix-cve-2026-31431.sh
以root身份运行:sudo ./fix-cve-2026-31431.sh
根据提示选择操作模式(建议选择选项3)
注意事项:
内核升级后必须执行sudo reboot重启,新内核才会生效
未重启的系统仍运行在旧内核,漏洞仍然存在
RHEL
系列内置模块场景下,临时缓解需要重启系统才能生效

七、内网Linux服务器CVE-2026-31431漏洞修复

7.1 内网环境特点与挑战

无互联网访问
:无法直接使用包管理器从官方仓库拉取更新
依赖内部镜像源
:需要提前同步安全更新包到本地仓库
变更管控严格
:内核升级需提前测试和申请变更窗口
业务连续性要求高
:重启操作需规划业务停机时间

7.2 内网修复方案流程

步骤一:从可信连接的主机下载补丁包
Ubuntu/Debian系列(在有公网访问的代理机上操作):
bash

下载内核及依赖包

apt-get download linux-image-$(uname -r) linux-modules-extra-$(uname -r)
apt-get download kmod#包含临时缓解

将.deb包打包传输至内网

tar -czf kernel-patches.tar.gz *.deb
RHEL/CentOS/Alma/Rocky系列:
bash

下载内核RPM包

yumdownloader kernel --destdir=/tmp/kernel-patches

或使用reposync同步完整仓库

reposync --repoid=base --download-path=/local/repo
SUSE系列:
bash

下载内核RPM包

zypper download kernel-default
步骤二:传输补丁包至内网服务器
通过堡垒机/跳板机使用SCP传输
使用离线介质(U盘/光盘)拷贝
依托内部配置管理工具(Ansible/Puppet/SaltStack)分发
步骤三:在内网服务器上离线安装
Ubuntu/Debian:
bash

进入补丁包所在目录

cd /path/to/kernel-patches

安装所有.deb包

sudo dpkg -i *.deb

重启系统

sudo reboot
RHEL/CentOS/Alma/Rocky:
bash
cd /path/to/kernel-patches

升级内核RPM包

sudo rpm -Uvh kernel-*.rpm

或使用yum本地仓库

sudo yum --disablerepo=* --enablerepo=local update kernel
sudo reboot

7.3 内网环境下无法立即升级时的缓解措施

若无法立即获得内核补丁,可应用临时缓解:
对于Debian/Ubuntu/openSUSE系列(模块为可加载):
bash
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
对于RHEL系列(模块为内置,需配置内核启动参数后重启):
bash
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot

7.4 内网环境下已停止维护的老系统处理

CentOS 7(EOL)
:官方不再提供更新,建议尽快迁移到AlmaLinux/Rocky Linux等受支持的RHEL衍生版本
Ubuntu 18.04(EOL)
:考虑升级到22.04/24.04 LTS,或购买Ubuntu Pro订阅获取扩展安全维护

7.5 内网修复检查清单

检查项

验证命令

预期结果

内核版本是否已安全

uname -r

≥6.18.22或≥6.19.12或≥7.0

algif_aead是否被禁用

lsmod | grep algif_aead

无输出

模块黑名单是否配置

cat /etc/modprobe.d/disable-algif.conf

存在且内容正确

内核启动参数(RHEL内置模块)

cat /proc/cmdline | grep  initcall_blacklist

包含algif_aead_init

八、总结与优先级建议

8.1 漏洞严重性总结

维度

评价

利用难度

极低(732字节Python脚本,首次执行即成功,无需竞争条件)

影响范围

极广(影响自2017年以来所有主流内核版本)

隐蔽性

极高(仅修改内存中的页缓存,磁盘文件不变,文件完整性检测失效)

容器逃逸

可能(从容器内逃逸到宿主机)

CVSS评分

7.8(高危)

8.2 修复优先级建议

🔴第一优先级(立即修复,建议24小时内完成)

环境类型

原因

多租户K8s节点

任何不可信Pod都可能逃逸至宿主机

CI/CD Runner节点

运行不受控的用户代码

云虚拟机托管平台

多租户共享内核,相邻租户可跨租户提权

🟠第二优先级(尽快修复,建议1周内完成)

环境类型

原因

生产应用服务器

暴露于本地用户可利用

堡垒机/跳板机

集中管理入口,权限敏感

数据库服务器

数据敏感,被提权后数据可被窃取/篡改

🟡第三优先级(排期修复,建议2周内完成)

环境类型

原因

内部开发环境

攻击面相对可控

工作站/桌面系统

通常只有可信用户登录

8.3 推荐行动路线图

text
1. 立即:评估受影响资产范围(uname -r + 模块检测)
↓
2. 紧急:对无法立即升级的系统应用临时缓解措施
(Debian/Ubuntu:modprobe禁用;RHEL:grubby黑名单)
↓
3. 短期:通过包管理器推送内核安全更新
(等待发行版官方补丁,或从上游backport)
↓
4. 中期:验证所有受控节点已成功更新
(uname -r ≥ 6.18.22/6.19.12/7.0)
↓
5. 长期:建立漏洞响应机制,部署运行时检测方案
(Falco/Sysdig检测规则,seccomp策略常态化)

8.4 关键参考资料

资源

说明

上游修复提交

commit fafe0fa2995a / a664bf3d603d

漏洞详情页

https://ubuntu.com/security/CVE-2026-31431

SUSE官方公告

https://www.suse.com/c/suse-responds-to-the-copy-fail-vulnerability/

漏洞追踪官网

https://copy.fail/

免责声明:以上信息截至2026年5月6日。由于各发行版补丁推送进度可能实时变化,建议在执行修复前查阅对应发行版的最新官方安全公告。内核升级涉及系统重启,请在业务维护窗口内操作并提前进行兼容性测试。
#linux漏洞
#网络安全
#系统数据安全

最新文章

随机文章