文档首页/ MapReduce服务 MRS/ 服务公告/ 漏洞公告/ Linux内核权限提升漏洞(CVE-2026-43284)公告
更新时间:2026-06-10 GMT+08:00
分享

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二进制文件)的页缓存,进而实现提权。

漏洞详情

表1 漏洞信息

漏洞类型

CVE-ID

漏洞级别

披露/发现时间

权限提升

CVE-2026-43284

严重

2026-05-08

漏洞影响

根据披露,受影响OS镜像版本为:

CVE-2026-43284:社区从4.11版本引入,若内核版本小于4.11则不受影响。

判断方法

  1. 登录MRS节点,执行如下命令,查看集群操作系统版本,是否在漏洞受影响范围内。
    cat /etc/system-release

    查看操作系统版本,是否在漏洞受影响范围内。

    HCE2.0/3.0、EulerOS SP8及以上均涉及。

  2. 执行uname -a查看主机内核版本,若查询结果>= 4.11 ,则受漏洞CVE-2026-43284影响。
    uname -a

操作影响

执行规避措施之后,会影响OS热补丁的安装,热补丁实施之前,需要执行本文档中的回退操作,避免热补丁无法实施。

漏洞手工处理方案

使用root用户登录MRS节点,执行以下操作,对内置模块禁用(对受影响的HCE和EulerOS均生效):

  1. 排查业务代码、驱动(特别是涉及ipsec协议、VPN场景)等是否有加载使用esp4或esp6模块,如业务有使用此模块,禁用可能影响业务运行。

    1. 使用root用户登录MRS节点,执行以下命令,查看是否加载esp4或esp6模块。
      lsmod | grep esp
      • 返回为空则未加载,执行步骤2
      • 返回不为空,则有加载使用esp模块,执行1.b
    1. 执行如下命令,卸载esp4和esp6模块。
    modprobe -r esp4; modprobe -r esp6

    如果执行报错说明有其他模块依赖esp4或esp6,需要再次评估业务是否有使用。

    再次执行以下命令,检查是否加载内核。
    lsmod | grep esp

  1. 未加载esp4/esp6或已经卸载,则执行以下命令:

    echo "install esp4 /bin/false" >> /etc/modprobe.d/disable-esp.conf
    echo "install esp6 /bin/false" >> /etc/modprobe.d/disable-esp.conf

  2. 执行以下命令,查看禁用黑名单是否正常写入。

    cat /etc/modprobe.d/disable-esp.conf

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

    modprobe esp4; modprobe esp6

【手工回退方案】

  1. 使用root用户登录集群节点。
  2. 执行以下命令,回退文件。

    sed -i '/esp/d' /etc/modprobe.d/disable-esp.conf

漏洞批量处理方案

  1. 参考为主机安装UniAgent给集群内节点安装UniAgent。
  2. 登录COC管理控制台
  3. 进入“资源运维 > 自动化运维 > 脚本管理”页面,单击“创建脚本”按钮创建批量执行任务,并单击“确定”。

    图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

    操作类型

  4. 在自定义脚本管理页面,单击刚创建的脚本所在行的“执行”,执行用户设置为“root”,超时时间默认300秒,然后单击“添加实例”,选择要规避漏洞的ECS节点,最后单击“确定”。

    图2 选择实例

  5. 脚本执行完成后检查结果,状态均显示成功则表示批量规避成功。

    图3 查看执行结果

【批量回退方案】

  1. 登录COC管理控制台
  2. 进入“资源运维 > 自动化运维 > 脚本管理 > 自定义脚本”,找到之前创建的漏洞批量执行任务,单击“执行”。
  3. 在脚本入参中将值改为“rollback”,再单击“确定”。

    图4 修改入参

  4. 最后执行完成后检查结果,状态均显示成功则表示批量回退成功。

相关文档