想必大家这几天都看到了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)
- • RHEL 8/9/10:全版本受影响。
- 官方公告:access.redhat.com/security/cv…
- • Rocky Linux 8/9/10:全版本受影响。
- 官方公告:kb.ciq.com/article/roc…
- • AlmaLinux 8/9/10:全版本受影响。
- 官方公告:almalinux.org/lt/blog/202…
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)
- • 麒麟 Kylin V10/V15:基于 Linux 5.4+/6.x 内核,受影响。
- 官方公告:support.kylinos.cn/#/security/…
- • OpenEuler 22.03/24.03:全版本受影响。
- 官方公告:www.openeuler.openatom.cn/zh/security…
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.4 | 5.4.204 | mirrors.edge.kernel.org/pub/linux/k… |
| 5.10 | 5.10.254 | mirrors.edge.kernel.org/pub/linux/k… |
| 5.15 | 5.15.204 | mirrors.edge.kernel.org/pub/linux/k… |
- 若 mirrors.edge.kernel.org 访问不稳定,可使用以下国内镜像源,路径完全一致:
-
- 阿里云 Linux 内核镜像:mirrors.aliyun.com/linux-kerne…
-
- 华为云 Linux 内核镜像:mirrors.huaweicloud.com/linux-kerne…
-
- 清华大学开源镜像: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). 创建防护规则
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
- (2). 容器启动时加载 seccomp 规则,阻断 AF_ALG 套接字创建
# 启动容器并加载漏洞防护规则
docker run \
-d \
--name 自定义容器名 \
--security-opt seccomp=/etc/seccomp/algof-block.json \
你的镜像名称
- (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-core、kernel-modules 等),同样拷贝到 /opt/offline-kernel/ 目录,重新执行安装命令(dnf/yum/dpkg 会自动识别本地依赖)。部分厂商提供下载 “内核源码包” 或 “完整内核离线套件”,包含所有依赖。
(2)、内网不能使用 U 盘 / 移动硬盘:
通过内网 SSH 传输(如用另一台能访问内网服务器的有网机器,通过 scp 拷贝,路径和文件夹可以自行指定,示例为 opt/offline-kernel 目录):
# 有网机器执行(需知道内网服务器的 IP 和账号)
scp /下载目录/*.rpm 内网账号@内网服务器IP:/opt/offline-kernel/
5、内网离线修复核心流程
- (1)、 有网机器:下载对应系统的离线内核包 → 拷贝到内网服务器;
- (2)、 内网服务器:执行临时缓解 → 离线安装内核 → 重启;
- (3)、 验证:内核版本更新 + 模块禁用 → 修复完成。
八、总结与优先级建议
CVE-2026-31431漏洞影响4.14至6.18.22/6.19.12以下 的所有内核版本。作为一线运维,面对这类高危内核漏洞,核心是 “先阻断、再修复、后加固”。建议分三步进行处理:
- 1. 紧急缓解(0-24 小时) :所有受影响系统立即执行
禁用algif_aead模块命令,尤其是公网服务器、容器宿主机。 - 2. 内核升级(1-7 天) :按系统类型升级内核并重启,优先处理多租户、高权限风险的机器。
- 3. 长期防护(持续) :配置自动更新、强化容器安全、定期核查内核版本,避免同类漏洞反复踩坑。**
** - 最关键的一点: 临时缓解只能“拖时间”,真正的修复必须依赖内核升级。