Linux内核权限提升漏洞(CVE-2026-43284)公告
近期,业界公开了一个Linux内核高危本地权限提升(LPE)漏洞。它是继不久前的Copy Fail(CVE-2026-31431)之后,又一个利用内核页面缓存(Page Cache)写原语实现提权的逻辑漏洞,该漏洞被命名为Dirty Frag,可导致容器逃逸、权限提升,详情如下:
CVE-2026-43284(xfrm/ESP路径):攻击者通过splice()系统调用,将自己仅有读权限的页缓存页注入到网络数据包(skb)的frag槽位中。当内核在网络接收侧进行IPsec(ESP)加密/解密操作时,会原地修改该frag指向的内存页。由于内核未校验调用者对该页是否具备写权限,导致攻击者可以非授权地篡改只读文件(如/etc/passwd或SUID二进制文件)的页缓存,进而实现提权。
漏洞详情
| 漏洞类型 | CVE-ID | 漏洞级别 | 披露/发现时间 |
|---|---|---|---|
| 权限提升 | 严重 | 2026-05-08 |
漏洞影响
根据披露,受影响OS镜像版本为:
CVE-2026-43284:社区从4.11版本引入,若内核版本小于4.11则不受影响。
判断方法
- 登录MRS节点,执行如下命令,查看集群操作系统版本,是否在漏洞受影响范围内。
cat /etc/system-release
查看操作系统版本,是否在漏洞受影响范围内。
HCE2.0/3.0、EulerOS SP8及以上均涉及。
- 执行uname -a查看主机内核版本,若查询结果>= 4.11 ,则受漏洞CVE-2026-43284影响。
uname -a

操作影响
执行规避措施之后,会影响OS热补丁的安装,热补丁实施之前,需要执行本文档中的回退操作,避免热补丁无法实施。
漏洞手工处理方案
使用root用户登录MRS节点,执行以下操作,对内置模块禁用(对受影响的HCE和EulerOS均生效):
- 排查业务代码、驱动(特别是涉及ipsec协议、VPN场景)等是否有加载使用esp4或esp6模块,如业务有使用此模块,禁用可能影响业务运行。
modprobe -r esp4; modprobe -r esp6
如果执行报错说明有其他模块依赖esp4或esp6,需要再次评估业务是否有使用。
再次执行以下命令,检查是否加载内核。lsmod | grep esp
- 未加载esp4/esp6或已经卸载,则执行以下命令:
echo "install esp4 /bin/false" >> /etc/modprobe.d/disable-esp.conf echo "install esp6 /bin/false" >> /etc/modprobe.d/disable-esp.conf
- 执行以下命令,查看禁用黑名单是否正常写入。
cat /etc/modprobe.d/disable-esp.conf
- 执行以下命令验证,执行报错则黑名单加载成功。
modprobe esp4; modprobe esp6
【手工回退方案】
- 使用root用户登录集群节点。
- 执行以下命令,回退文件。
sed -i '/esp/d' /etc/modprobe.d/disable-esp.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_esp_in_blacklist() { # 检查是否添加过esp配置 local file_path="/etc/modprobe.d/disable-esp.conf" local search_esp4_string="esp4" local search_esp6_string="esp6" # 检查文件是否存在且为普通文件 if [[ -f "$file_path" ]]; then # 文件存在,使用 grep 查找字符串 grep "$search_esp4_string" /etc/modprobe.d/disable-esp.conf esp4_model=$? grep "$search_esp6_string" /etc/modprobe.d/disable-esp.conf esp6_model=$? if [ $esp4_model -eq 0 ] && [ $esp6_model -eq 0 ]; then return 0 else return 1 fi else return 1 fi } function upgrade() { # 检查模块是否存在于 lsmod 输出中 if ! lsmod | grep -q 'esp'; then # 如果 grep 失败(即未找到 'esp'),则执行以下操作 if check_esp_in_blacklist; then echo "[INFO] 模块 esp 已配置,无需重复配置。" else echo "install esp4 /bin/false" >> /etc/modprobe.d/disable-esp.conf echo "install esp6 /bin/false" >> /etc/modprobe.d/disable-esp.conf grep esp4 /etc/modprobe.d/disable-esp.conf esp4_model=$? grep esp6 /etc/modprobe.d/disable-esp.conf esp6_model=$? if [ $esp4_model -eq 0 ] && [ $esp6_model -eq 0 ]; then echo "[INFO] esp 模块配置成功。" else echo "[ERROR] esp 模块配置失败,请联系技术支持。" return 1 fi fi else # 如果 grep 成功(即找到了 'esp'),则提示 echo "[INFO] 模块 esp 已加载,请联系技术支持。" return 1 fi return 0 } function rollback() { BLACKLIST_FILE="/etc/modprobe.d/disable-esp.conf" # 删除添加的配置 sed -i '/esp/d' "$BLACKLIST_FILE" # 删除后检查确认删除成功 if ! grep -q 'esp' "$BLACKLIST_FILE"; then echo "[INFO] 成功:文件 $BLACKLIST_FILE 中已无'esp' 相关信息。" echo "[INFO] 回退完成" return 0 else echo "[ERROR]警告:文件 $BLACKLIST_FILE 中仍存在'esp' 相关信息。" 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在参数配置的“脚本入参”中设置参数如下:
表2 脚本入参 参数类型
参数名称
默认值
参数描述
是否必填
文本
operation_type
upgrade
操作类型
是
- 在自定义脚本管理页面,单击刚创建的脚本所在行的“执行”,执行用户设置为“root”,超时时间默认300秒,然后单击“添加实例”,选择要规避漏洞的ECS节点,最后单击“确定”。 图2 选择实例
- 脚本执行完成后检查结果,状态均显示成功则表示批量规避成功。 图3 查看执行结果
【批量回退方案】
- 登录COC管理控制台。
- 进入“资源运维 > 自动化运维 > 脚本管理 > 自定义脚本”,找到之前创建的漏洞批量执行任务,单击“执行”。
- 在脚本入参中将值改为“rollback”,再单击“确定”。 图4 修改入参
- 最后执行完成后检查结果,状态均显示成功则表示批量回退成功。