CVE-2026-31431 Linux内核提权漏洞主流平台完整修复指南,附一键修复脚本

244 阅读14分钟

想必大家这几天都看到了Linux Kernel本地权限提升漏洞(CVE-2026-31431)的新闻,该漏洞源于内核加密子系统中的一处逻辑缺陷,攻击者可以利用AF_ALG加密接口与splice() 系统调用的组合,向任意可读文件的页缓存写入受控的4字节数据,从而篡改 setuid 程序,无需竞争条件即可直接获得root权限。CVSS 3.1评分7.8(高危),由韩国Theori团队在 2026年4月29日公开披露。

图片

漏洞核心

漏洞源于2017年内核AEAD in-place优化引入的逻辑缺陷,AF_ALG加密接口与splice()零拷贝系统调用组合,可对任意可读文件页缓存实现4 字节可控越界写入。普通本地用户/ 容器内用户无需竞争条件,即可提权至root,支持容器逃逸、可篡改 su/sudo/passwd 等setid程序,跨发行版通用。漏洞利用复现示例: 

图片

影响范围

也正因于此,CVE-2026-31431漏洞的影响范围,就包含2017年提交漏洞代码至2026年4月补丁发布前,覆盖 Linux 内核4.14~6.18.21、6.19.11等主流版本。也就是说,CVE-2026-31431漏洞的引入范围是 4.14至6.18.21/6.19.11的所有内核版本。

内核版本范围是否受影响说明
4.14 以下✅ 不受影响漏洞代码尚未引入
4.14 至 6.18.21❌ 全部受影响5.x 版本见后文单独说明
6.18.22 及以上✅ 已修复官方补丁 a664bf3d603d 已合入
6.19.12 及以上✅ 已修复同上
7.0 及以上✅ 不受影响新版本,漏洞代码已被重构移除

一、主流 Linux操作系统官方补丁发布状态

目前主流Linux操作系统,比如OpenEuler、UOS、Ubuntu、Debian、RHEL、Rocky Linux、AlamaLinux、CentOS、Kylin、Deepin等,基本都已发布修复补丁或者提供在线升级方案。

操作系统官方通告状态修复版本 / 补丁号关键备注
OpenEuler(欧拉)✅ 已发布4.19/5.10/6.6 全系列修复已提供在线和离线补丁。
UOS (统信)✅ 已发布桌面版/服务器版 (D版及RHEL系)提供在线更新和离线SRC补丁包。
Ubuntu✅ 已发布USN-6768-1官方安全团队已推送修复内核。
Debian✅ 已发布DSA-6238-1官方安全跟踪器已更新,补丁可用。
RHEL✅ 已发布RHSA-2026:2864-1(RHEL 10)、RHSA-2026:2865-1(RHEL 9)、RHSA-2026:2866-1(RHEL 8)RHEL 8/9/10 补丁已发布;RHEL 6/7 不受影响。
Rocky Linux✅ 已同步跟随 RHEL 补丁已同步上游补丁,仓库中可获取。
AlmaLinux✅ 已同步跟随 RHEL 补丁已同步上游补丁,仓库中可获取。
CentOS❌ 未发布CentOS 7/8 官方源中暂无修复内核。官方支持已结束。
Kylin (麒麟)✅ 已发布受影响版本已全部修复已提供在线和离线补丁。
Deepin(深度)✅ 已发布已发布修复版本已提供在线和离线补丁。

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

1. Red Hat 系(RHEL/Rocky Linux/AlmaLinux)

2. Debian 系(Debian/Ubuntu/UOS/Deepin)

  • • Debian 11(Bullseye)/12(Bookworm) :全版本受影响。 
  • 官方公告:security-tracker.debian.org/tracker/CVE…
  • • Ubuntu 18.04/20.04/22.04/24.04:全版本受影响;14.04/16.04 仅 4.15 内核受影响,4.4 内核不受影响。 
  • 官方公告:ubuntu.com/security/CV…
  • • 统信 UOS V20/V25:基于 Debian,全版本受影响。 
  • 官方公告:src.uniontech.com/#/security_…
  • • 深度 Deepin 20/23/25:基于 Debian(早期版本基于Ubuntu),全版本受影响。Deepin 15 及以下版本已终止支持(EOL),官方不会推送补丁,需手动编译内核集成 a664bf3d603d 补丁,或升级至 Deepin 20/25 支持版本。 
  • 官方公告:www.deepin.org/zh/2026/04/…

3. 其他国产 Linux(Kylin/OpenEuler)

4、CentOS(必须单列)

虽说CentOS也是 RedHat系,但是现在存量CentOS服务器也还不少,特别是CentOS 7系列,非常有必要将CentOS单独说明。 

CentOS 6(内核2.6)、CentOS 7(内核3.10)默认不受影响,CentOS 8受影响。对于CentOS服务器来说,还是要逐一检查内核版本是否是被CVE-2026-31431漏洞影响的版本,因为在运维过程中CentOS 6和7服务器可能被手动更新过内核 。

1. CentOS 6:默认内核版本不受影响,如已升级内核后需核实内核版本

CentOS 6 最终版(6.10)默认内核为2.6.32-754.el6.x86_64,远低于漏洞触发的最低内核版本(4.14)。默认状态下 完全不受影响(漏洞依赖的内核组件 algif_aead 在2.6 内核中不存在)。 CentOS 6已终止官方支持(EOL),即使手动升级内核,也无官方安全补丁下载,其默认内核本身无漏洞风险。但是使用过程中若内核已被手动升级到 4.14 版本及以上,也会被CVE-2026-31431漏洞影响,升级内核需依赖第三方仓库,通过ELRepo第三方仓库安装集成修复补丁的内核。

2. CentOS 7:默认内核版本不受影响,如已升级内核后需核实内核版本

CentOS 7各子版本默认内核为3.10.0-xxx.el7.x86_64,低于漏洞最低影响版本(4.14),且默认内核未集成algif_aead 模块,默认状态下不受影响

若通过第三方仓库(如ELRepo)将CentOS 7内核升级至4.14 ~ 6.18.21、6.19.11区间(如4.18、5.14等),则要检查内核版本:

 - ❌ 受影响:升级后的内核包含algif_aead 模块,且处于漏洞未修复区间; 

  • ✅ 不受影响:若升级至6.18.22+、6.19.12+ 或7.0+ 版本(已集成修复补丁),则无漏洞风险; CentOS 7 同样已终止官方支持。若使用过程中内核已被升级到 4.14版本及以上,也会被CVE-2026-31431漏洞影响,升级内核需依赖第三方仓库,通过ELRepo第三方仓库安装集成修复补丁的内核。

3. CentOS 8:受影响(高危)

CentOS 8官方支持的内核版本为4.18.0-xxx.el8.x86_64,处于漏洞受影响区间(4.14 ~ 6.18.21)。默认启用 algif_aead 模块,满足漏洞触发条件;8 版本受 CVE-2026-31431影响,且由于CentOS 8 已终止官方支持(EOL),无官方修复补丁,需通过以下方式处理:

-临时缓解:禁用algif_aead模块

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf- 永久修复:升级内核至6.18.22+ 或 7.0+版本(需依赖第三方仓库),或迁移至Rocky Linux 8、AlmaLinux 8等兼容发行版(这些系统官方已推送修复补丁)。

鉴于CentOS 7依赖ELRepo升级内核步骤比较复杂,另外还需要搭建环境测试验证。我看大家的讨论热度,后续看情况单独更新一篇吧。

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

第一步,必须先执行缓解,阻断漏洞利用(需root权限执行):

# 1. 禁用algif_aead模块(永久生效,重启后仍有效)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf

# 2. 卸载已加载的algif_aead模块(无输出或提示未加载均正常)
rmmod algif_aead 2>/dev/null
  • • 验证缓解:lsmod | grep algif_aead 无输出即生效。
  • • 局限性:仅阻断漏洞触发路径,未修复内核代码,后续必须升级内核

四、各系统官方修复方案

1. 内核官方主线补丁(通用源码修复)

修复提交:a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

补丁下载:  curl -O 或 wgetgit.kernel.org/stable/c/a6…

备用下载地址:github.com/torvalds/li…

mirrors.edge.kernel.org/pub/linux/k…

V4.x 的4.19.254版本已集成CVE-2026-31431补丁,下载地址为:mirrors.edge.kernel.org/pub/linux/k…

V5.x内核安全版本(5.4/5.10/5.15):5.4.204、5.10.254、5.15.204 均为官方确认的安全版本,包含CVE-2026-31431修复补丁。 V5.x 各子版本安全包下载地址:

5.x 子版本安全版本号下载地址
5.45.4.204mirrors.edge.kernel.org/pub/linux/k…
5.105.10.254mirrors.edge.kernel.org/pub/linux/k…
5.155.15.204mirrors.edge.kernel.org/pub/linux/k…
  1. 若 mirrors.edge.kernel.org 访问不稳定,可使用以下国内镜像源,路径完全一致:
    1. 阿里云 Linux 内核镜像:mirrors.aliyun.com/linux-kerne…
    1. 华为云 Linux 内核镜像:mirrors.huaweicloud.com/linux-kerne…
    1. 清华大学开源镜像:mirrors.tuna.tsinghua.edu.cn/kernel/

2. RHEL/Rocky Linux/AlmaLinux(dnf/yum)

升级命令(需要root 权限)

# 1. 更新仓库缓存
dnf clean all && dnf makecache

# 2. 升级内核(自动安装修复版本)
dnf update kernel -y

# 3. 重启生效(必须重启)
reboot

验证修复

# 查看内核版本(需包含修复补丁,如3.10.0-1160.118.1.el7或更高)
uname -r
# 查看更新日志(确认包含CVE-2026-31431)
rpm -qa --changelog | grep CVE-2026-31431

3. Debian/Ubuntu/UOS(apt)

升级命令(需要root 权限)

# 1. 更新仓库缓存
apt update

# 2. 升级所有软件包(不含内核)
apt upgrade -y

# 3. 安装最新稳定内核(元包自动解析最新版本,如果服务器架构是arm,amd64对应换成arm64)
apt install linux-image-amd64 linux-headers-amd64 -y

# 4. 更新 GRUB 引导配置
update-grub

# 5. 重启生效
reboot

验证修复

uname -r    
# 查看更新日志
apt changelog linux-image-$(uname -r) | grep CVE-2026-31431

4. 麒麟 Kylin(yum/dnf)

升级命令(需要root 权限)

yum clean all && yum makecache
yum update kernel -y
reboot

5. OpenEuler(dnf)

升级命令(需要root 权限)

dnf clean all && dnf makecache
dnf update kernel -y
reboot

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

1. 漏洞修复验证

# 1. 检查algif_aead模块是否禁用
lsmod | grep algif_aead  # 无输出正常

# 2. 检查内核版本是否为修复版本(参考各系统最低修复版本)
uname -r

# 3. 验证官方CVE-2026-31431补丁是否已安装
## RHEL/欧拉/麒麟 执行
rpm -q --changelog kernel | grep CVE-2026-31431

## Debian/Ubuntu/UOS/Deepin 执行
apt changelog linux-image-$(uname -r) | grep CVE-2026-31431

2. 长期安全加固

1、内核自动更新:配置 yum-cron(RHEL 系)或 unattended-upgrades(Debian 系),自动安装安全补丁。

 2、容器隔离:CVE-2026-31431可被容器内普通用户利用实现逃逸,建议所有容器宿主机添加seccomp规则,禁止容器创建AF_ALG套接字,从调用层阻断漏洞利用路径。

  1. (1). 创建防护规则
mkdir -p /etc/seccomp
cat > /etc/seccomp/algof-block.json <<EOF
{
    "defaultAction": "SCMP_ACT_ALLOW",
    "syscalls": [
        {
            "name": "socket",
            "action": "SCMP_ACT_ERRNO",
            "args": [
                {
                    "index": 0,
                    "value": 1,
                    "op": "SCMP_CMP_EQ"
                },
                {
                    "index": 1,
                    "value": 38,
                    "op": "SCMP_CMP_EQ"
                }
            ]
        }
    ]
}
EOF
  1. (2). 容器启动时加载 seccomp 规则,阻断 AF_ALG 套接字创建
# 启动容器并加载漏洞防护规则
docker run \
  -d \
  --name 自定义容器名 \
  --security-opt seccomp=/etc/seccomp/algof-block.json \
  你的镜像名称
  1. (3). 验证防护是否生效
python3 -c 'import socket; socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)'

返回 Operation not permitted 即为防护成功。

3、权限管控:禁止普通用户加载内核模块(modprobe / insmod),限制 sudo 权限范围。

六、一键修复脚本

为方便大家修复,我制作了一个自动化脚本,供大家选用。 下载地址: 

百度网盘 pan.baidu.com/s/1UwcSZNJD…

夸克网盘 

pan.quark.cn/s/23ee49ca8… 提取码:wNvw

特别提醒,请不用直接在生产环境上执行,请先在测试环境或者虚拟机上测试无误后使用。或者根据实际环境修改后再使用。使用中遇到问题或者报错,可以联系我或自行解决。

我已在自己虚拟机中的完成了三个系统的验证,分别是UOS V20 1070、OpenEuler 24.03、Rocky Linux 9.7,均可正常升级修复。其他 Linux 系统大家执行脚本的情况大家可以在留言区讨论。

图片
图片
图片

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

至于内网的 Linux服务器,因为无法连接互联网,核心思路是 “离线修复”:通过有网机器下载对应系统的修复内核包和依赖,拷贝到内网服务器手动安装,同时保留临时缓解措施阻断漏洞利用。以下是针对所有支持系统的 离线完整解决方案,分步骤详解:

1 、前置准备

方法一 :有互联网的机器,Windows/Linux 均可。

确认内网服务器的关键信息(必须提前记录): 

系统版本(如Rocky Linux 9.7、OpenEuler 6.6、UOS V20) 

内核架构(x86_64为主,可通过内网服务器执行 uname -r 确认)

当前内核版本(如Rocky 9.7 是5.14.0-611.41.1.el9_7.x86_64)

图片

下载对应系统的 离线修复内核包(含CVE-2026-31431补丁)。**
**

以下是各系统官方离线包下载链接,直接在有网机器浏览器打开下载,列表中是以部分版本为例,如果是其他版本,到上级目录找到对应系统版本号找到对应的内核包:

系统类型离线包下载链接(官方源)核心包名称(示例)
Rocky Linux 9.7(x86_64)download.rockylinux.org/pub/rocky/9…kernel-5.14.0-611.45.1.el9_7.x86_64.rpm
AlmaLinux 9.7(x86_64)raw.repo.almalinux.org/almalinux/9…kernel-5.14.0-611.45.1.el9_7.x86_64.rpm
RHEL 9.7(x86_64)access.redhat.com/downloads/c…kernel-5.14.0-611.45.1.el9_7.x86_64.rpm
OpenEuler 6.6(x86_64)repo.openeuler.org/openEuler-2…kernel-6.6.0-102.oe2403.x86_64.rpm
麒麟Kylin V10(x86_64)[support.kylinos.cn/#/security/…support.kylinos.cn/#/security/…6-31431]()kernel-5.4.0-136.153.kylin9.x86_64.rpm
UOS V20(x86_64)方法 1:在线升级;方法 2:下载最新 ISO 挂载提取;3、联系官方客服索要下载地址。linux-image-5.10.0-150-generic_5.10.0-150_amd64.deb
Debian 12(x86_64)deb.debian.org/debian/pool…linux-image-6.1.0-21-amd64_6.1.90-1_amd64.deb
Ubuntu 22.04(x86_64)kernel.ubuntu.com/~kernel-ppa…linux-image-5.15.150-0515150-generic_5.15.150-0515150.202406191739_amd64.deb
  • • 下载说明:进入链接后,搜索对应 “核心包名称”,下载 内核包(kernel/linux-image)  + 内核开发包(kernel-devel/linux-headers,可选但推荐)

  • • 若找不到对应版本:联系系统厂商获取离线修复包(如麒麟、UOS 可通过官方技术支持渠道获取)。

  • • 拷贝离线包到内网服务器: 用光盘(内网环境一般不让使用优盘、移动硬盘),将下载的 .rpm 或 .deb 包拷贝到内网服务器的目录中,比如 /opt/offline-kernel/ 目录(本文示例把补丁都传到这个目录):

    # 内网服务器上创建目录
    mkdir -p /opt/offline-kernel
    
方法二:有互联网的机器,和要下载内核相对应Linux 操作系统。

# RHEL 系下载内核+所有依赖 yumdownloader --resolve kernel 

# Debian/Ubuntu/UOS/Deepin(Debian 系) apt update apt install -y apt-rdepends apt-get download $(apt-rdepends linux-image-generic | grep -E "^linux-") ``

# OpenEuler(欧拉) dnf install -y yum-utils yumdownloader --resolve --destdir=. kernel kernel-core kernel-modules ``

麒麟 Kylin V10/V10 SP1/SP2/SP3 yum install -y yum-utils yumdownloader --resolve kernel kernel-devel kernel-headers ``

#统信 UOS V 20/V25 apt update apt-get download linux-image-$(uname -r) linux-headers-$ (uname -r) 

2、内网服务器操作步骤

第一步:先执行临时缓解(阻断漏洞)

先执行以下命令临时禁用危险模块,避免漏洞被利用(需要root 权限):

# 1. 永久禁用 algif_aead 模块(重启后仍有效)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf

# 2. 卸载已加载的模块(无输出即未加载,正常)
rmmod algif_aead 2>/dev/null || echo "algif_aead 模块未加载"

# 3. 验证缓解:无输出即正常
lsmod | grep algif_aead
第二步:离线安装修复内核(分系统执行)

根据内网服务器的系统类型,执行对应离线安装命令(需要root 权限)。

1. RHEL 系(Rocky/Alma/RHEL/Kylin/openEuler,.rpm 包)
# 1. 进入离线包目录
cd /opt/offline-kernel

# 2. 备份旧内核列表
rpm -qa | grep kernel > /tmp/old-kernel-list.txt

# 3. 安装内核包(通配符匹配所有下载的 .rpm 包,含依赖)
dnf install -y *.rpm --disablerepo=*  # --disablerepo=* 禁用所有仓库,纯离线安装
# 若系统用 yum(如老版本 CentOS/Kylin):
# yum install -y *.rpm --disablerepo=*

# 4. 更新 GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg
2. Debian 系(Debian/Ubuntu/UOS,.deb 包)
# 1. 进入离线包目录
cd /opt/offline-kernel

# 2. 备份旧内核列表
dpkg -l | grep linux-image | awk '{print $2}' > /tmp/old-kernel-list.txt

# 3. 安装内核包(dpkg 离线安装,--force-all 忽略仓库依赖检查,使用方法是dpkg --force-all -i *.deb)
dpkg  -i *.deb

# 4. 修复依赖(若提示依赖缺失,用本地缓存的依赖包,无需联网)
apt -f install -y 

# 5. 更新 GRUB
update-grub
第三步:验证离线安装结果
# 1. 查看已安装的内核版本(确认修复版本已安装)
rpm -qa kernel-core kernel-modules | sort  # RHEL 系
dpkg -l | grep linux-image | awk '{print $2, $3}'  # Debian 系

# 2. 确认当前内核版本(重启前仍显示旧版本,正常)
uname -r

# 3. 验证模块禁用状态(无输出即正常)
lsmod | grep algif_aead
第四步:重启生效(必须执行)
reboot

3、重启后验证修复成功

重启后登录内网服务器,执行以下命令确认漏洞已修复:

# 1. 内核版本已更新为修复版本
uname -r  # 示例:Rocky 9.7 应显示 5.14.0-611.45.1.el9_7.x86_64

# 2. algif_aead 模块已禁用(无输出)
lsmod | grep algif_aead

# 3. 验证补丁已植入(RHEL 系)
rpm -qa --changelog kernel | grep -i "CVE-2026-31431"

# 3. 验证补丁已植入(Debian 系)
dpkg -l --status linux-image-$(uname -r) | grep -i "CVE-2026-31431"
  • • 满足前 2 条即可确认修复成功;第 3 条若无输出,可通过系统厂商公告确认安装的内核版本已包含该补丁。

当然也可以再次执行第六步我自制的升级脚本进行检查,效果如下图。

图片

4、常见问题处理

(1)、离线安装提示 “依赖缺失” : 在有网机器上,下载内核包对应的依赖(如 kernel-corekernel-modules 等),同样拷贝到 /opt/offline-kernel/ 目录,重新执行安装命令(dnf/yum/dpkg 会自动识别本地依赖)。部分厂商提供下载 “内核源码包” 或 “完整内核离线套件”,包含所有依赖。 

(2)、内网不能使用 U 盘 / 移动硬盘
通过内网 SSH 传输(如用另一台能访问内网服务器的有网机器,通过 scp 拷贝,路径和文件夹可以自行指定,示例为 opt/offline-kernel 目录):
# 有网机器执行(需知道内网服务器的 IP 和账号)         

scp /下载目录/*.rpm 内网账号@内网服务器IP:/opt/offline-kernel/        

5、内网离线修复核心流程

  1. (1)、 有网机器:下载对应系统的离线内核包 → 拷贝到内网服务器;
  2. (2)、 内网服务器:执行临时缓解 → 离线安装内核 → 重启;
  3. (3)、 验证:内核版本更新 + 模块禁用 → 修复完成。

八、总结与优先级建议

CVE-2026-31431漏洞影响4.14至6.18.22/6.19.12以下 的所有内核版本。作为一线运维,面对这类高危内核漏洞,核心是 “先阻断、再修复、后加固”。建议分三步进行处理:

  1. 1. 紧急缓解(0-24 小时) :所有受影响系统立即执行 禁用algif_aead模块 命令,尤其是公网服务器、容器宿主机。
  2. 2. 内核升级(1-7 天) :按系统类型升级内核并重启,优先处理多租户、高权限风险的机器。
  3. 3. 长期防护(持续) :配置自动更新、强化容器安全、定期核查内核版本,避免同类漏洞反复踩坑。**
    **
  4. 最关键的一点:  临时缓解只能“拖时间”,真正的修复必须依赖内核升级。