Linux内核权限提升漏洞(CVE-2026-31431)公告
近期,互联网披露CVE-2026-31431 Linux Copy Fail本地提权漏洞。由于Linux内核加密子系统authencesn模块中存在逻辑缺陷,攻击者通过AF_ALG套接字暴露的内核加密API,配合splice()系统调用,可实现对setuid二进制文件(如 /usr/bin/su)页缓存的4字节任意写入,可导致容器逃逸、权限提升。
漏洞详情
| 漏洞类型 | CVE-ID | 漏洞级别 | 披露/发现时间 |
|---|---|---|---|
| 权限提升 | 严重 | 2026-04-22 |
漏洞影响
Linux内核crypto子系统中的algif_aead模块存在逻辑缺陷,导致低权限用户可利用该模块漏洞将任意数据写入内核 page cache,如可篡改SUID二进制程序(如 su、sudo 等)进行提权。由于页缓存在宿主机与容器间共享,该漏洞可导致容器逃逸。
漏洞的利用,需要用户具备主机或容器内可执行权限。
判断方法
- 登录MRS集群节点,执行如下命令,查看集群操作系统版本,是否在漏洞受影响范围内。
cat /etc/system-release
表2 欧拉受影响情况 架构
版本
内核版本
是否受影响
X86
Euleros 2.8及以下
kernel 3.10
不受影响
Euleros 2.9、2.10
kernel 4.18
受影响
ARM
Euleros 2.9、2.10
kernel 4.19
受影响
表3 HCE受影响情况 版本
内核版本
是否受影响
HCE 2.0
kernel 5.10
受影响
- 如果不在以上版本范围不确定情况,则执行uname -a查看主机内核版本,如果大于等于4.14则内核受该漏洞影响。
uname -a

操作影响
执行规避措施之后,会影响OS热补丁的安装,热补丁实施之前,需要执行本文档中的回退操作,避免热补丁无法实施。
漏洞手工处理方案
使用root用户登录MRS节点,执行以下操作,对内置模块禁用(对受影响的HCE和EulerOS均生效)。
- 排查业务代码、驱动等是否有加载使用authencesn模块,如业务有使用此模块,禁用可能影响业务运行。
- 未加载authencesn或已经卸载,则执行以下命令。
echo "install authencesn /bin/false" >> /etc/modprobe.d/blacklist.conf
- 执行以下命令,查看禁用黑名单是否正常写入。
cat /etc/modprobe.d/blacklist.conf

- 执行以下命令验证,执行报错则黑名单加载成功。
modprobe authencesn

【手工回退方案】
- 使用root用户登录集群节点。
- 执行以下命令,回退文件。
sed -i '/authencesn/d' /etc/modprobe.d/blacklist.conf

漏洞批量处理方案
- 参考为主机安装UniAgent给集群内节点安装UniAgent。
- 登录COC管理控制台。
- 进入“资源运维 > 自动化运维 > 脚本管理”页面,单击“创建脚本”按钮创建批量执行任务,并单击“确定”。 图1 创建脚本
脚本内容如下:#!/bin/bash # 检查入参参数是否合法 echo "$operation_type" | grep -w -E "upgrade|rollback" > /dev/null [ $? -ne 0 ] && { echo "[ERROR] invalid params operation_type"; exit 1; } function check_version() { uname -a uname -a | awk '{print $3}' | grep -E 'hce2|euleros' > /dev/null 2>&1 if [ $? -ne 0 ]; then echo "no need to handle" return 1 fi uname -a | awk '{print $3}' | grep -E 'hce2' > /dev/null 2>&1 is_hce_os=$? if [ ${is_hce_os} -eq 1 ]; then euleros_rversion=$(uname -a | awk '{print $3}' | awk -F 'euleros' '{print $2}' | awk -F 'r' '{print $2}' | awk -F '.' '{print $1}') if [ ${euleros_rversion} -lt 8 ]; then echo "no need to handle" return 1 fi fi echo "need to handle" return 0 } function check_user() { # 检查执行用户为root current_user=$(whoami) if [[ "${current_user}" != "root" ]]; then return 1 fi } function check_authenc_in_blacklist() { # 检查是否添加过authencesn配置 local file_path="/etc/modprobe.d/blacklist.conf" local search_string="authencesn" # 检查文件是否存在且为普通文件 if [[ -f "$file_path" ]]; then # 文件存在,使用 grep 查找字符串 if grep -q "$search_string" "$file_path"; then return 0 else return 1 fi else return 1 fi } function upgrade() { # 检查模块是否存在于 lsmod 输出中 if ! lsmod | grep -q 'authencesn'; then # 如果 grep 失败(即未找到 'authencesn'),则执行以下操作 if check_authenc_in_blacklist; then echo "[INFO] 模块 authencesn 已配置,无需重复配置。" else echo "install authencesn /bin/false" >> /etc/modprobe.d/blacklist.conf grep authencesn /etc/modprobe.d/blacklist.conf if [ $? -eq 0 ]; then echo "[INFO] authencesn 模块配置成功。" else echo "[ERROR] authencesn 模块配置失败,请联系技术支持。" return 1 fi fi else # 如果 grep 成功(即找到了 'authencesn'),则提示 echo "[INFO] 模块 authencesn 已加载,请联系技术支持。" return 1 fi return 0 } function rollback() { BLACKLIST_FILE="/etc/modprobe.d/blacklist.conf" # 删除添加的配置 sed -i '/authencesn/d' "$BLACKLIST_FILE" # 删除后检查确认删除成功 if ! grep -q 'authencesn' "$BLACKLIST_FILE"; then echo "[INFO] 成功:文件 $BLACKLIST_FILE 中已无'authencesn' 相关信息。" echo "[INFO] 回退完成" return 0 else echo "[ERROR]警告:文件 $BLACKLIST_FILE 中仍存在'authencesn' 相关信息。" echo "[INFO] 回退失败" return 1 fi } function main() { check_user || { echo "[ERROR] current scripts must execute by root" return 1 } check_version || { return 0; } if [ "$operation_type" == "upgrade" ]; then upgrade || { echo "[ERROR] upgrade config failed"; return 1 } elif [ "$operation_type" == "rollback" ]; then rollback || { echo "[ERROR] rollback config failed"; return 1 } fi return 0 } main在参数配置的“脚本入参”中设置参数如下:
表4 脚本入参 参数类型
参数名称
默认值
参数描述
是否必填
文本
operation_type
upgrade
操作类型
是
- 在自定义脚本管理页面,单击刚创建的脚本所在行的“执行”,执行用户设置为“root”,超时时间默认300秒,然后单击“添加实例”,选择要规避漏洞的ECS节点,最后单击“确定”。 图2 选择实例
- 脚本执行完成后检查结果,状态均显示成功则表示批量规避成功。 图3 查看执行结果
【批量回退方案】
- 登录COC管理控制台。
- 进入“资源运维 > 自动化运维 > 脚本管理 > 自定义脚本”,找到之前创建的漏洞批量执行任务,单击“执行”。
- 在脚本入参中将值改为“rollback”,再单击“确定”。 图4 修改入参
- 等待执行完成后检查结果,状态均显示成功则表示批量回退成功。
