赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 漏洞CVE-2025-23359公告

漏洞CVE-2025-23359公告

  • 发布于 2025-04-17
  • 3 次阅读
文档编辑
文档编辑

NVIDIA Container Toolkit 1.17.3及以下版本在处理CUDA前向兼容性时存在安全漏洞。当容器镜像内存在恶意构造的软链接文件时,libnvidia-container会错误地将主机目录以只读模式挂载到容器内部。攻击者可利用该漏洞绕过容器隔离机制,导致敏感信息窃取或主机权限提升。关于漏洞的详细信息,请参见NVIDIA Container Toolkit,请及时修复。

影响范围

集群版本低于1.32,且集群中GPU节点安装了版本为1.17.3及以下的NVIDIA Container Toolkit组件。

说明

您可执行nvidia-container-cli --version查看组件版本。

防范措施

在漏洞未修复之前,建议避免在集群中运行不可信的容器镜像,以确保系统的安全性和稳定性。可参见以下两种方案。

  • 参见启用安全策略管理启用ACKAllowedRepos策略,限制只使用可信仓库来源的镜像,同时基于最小化权限原则确保只有可信人员具有导入镜像的权限。

  • 您可以使用Notation和Ratify进行OCI制品的加签和验签,确保只有受信镜像部署在集群中。

解决方案

注意事项

  • 修复方案仅适用于ACK托管集群Pro版、ACK托管集群基础版、ACK专有集群、ACK Edge集群的云端节点池和ACK灵骏集群的托管节点池。

  • 如果您的集群类型为ACK灵骏集群,且节点池为灵骏节点池,请提交工单处理。

  • 在修复过程中,请分批进行节点修复操作,避免同时修复所有节点,以确保系统稳定性。

  • 整个过程会通过重启节点上正在运行的业务Pod对其进行修复,请选择业务低峰期进行修复操作。

修复方案

新增GPU节点配置方案

本方案仅适用于1.20及以上版本的集群。若您集群版本低于1.20,请及时升级集群。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池。

  3. 找到对应节点池,单击编辑,为节点池添加ack.aliyun.com/nvidia-container-runtime-version=1.17.5标签后,单击确认。

    说明
    • 该标签将锁定节点池扩容时使用的nvidia-container-toolkit版本为1.17.5,后续发布新版本时不会自动升级。

    • 若需使用新版本nvidia-container-toolkit,需手动删除该标签,扩容节点将默认采用最新版本。

存量GPU节点修复方案

对于存量GPU节点场景,可以通过执行CVE修复脚本,进行手动修复。修复方案详情如下。

展开查看手动修复方案

前置条件

如未安装cGPU模块,请跳过。如果您的集群中安装了cGPU模块,请确保其版本为1.1.0及以上。确认集群是否安装cGPU模块及升级方式如下。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。

  3. 在Helm详情页面,查看组件版本。

    • 如果您的集群同时存在ack-ai-installer和ack-cgpu,请提交工单处理。

    • 如果您的集群安装了ack-ai-installer组件,且版本为1.7.5以下,请升级ack-ai-installer组件。相关操作,请参见升级共享GPU调度组件。

    • 如果您的集群安装了ack-cgpu组件,且版本为1.5.1以下,请单击组件右侧更新,按照页面指引完成组件的升级。

  4. 相关组件升级完成后,针对集群中存量cGPU节点,请参见升级节点cGPU版本。

步骤一:节点排水

控制台
  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点。

  3. 在节点页面中勾选目标节点并单击最下方节点排水,在弹出框中单击确定。

kubectl
  1. 执行以下命令,设置指定的节点为不可调度状态。

    kubectl cordon <NODE_NAME>
  2. 执行以下命令,进行节点排水操作。

    kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true

步骤二:节点上执行修复脚本

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点。

  3. 在节点页面中勾选目标节点并单击最下方批量运维,在弹出框中选中执行 Shell 命令后,单击确定。

  4. 在弹出系统运维管理(OOS)的基本信息页签中,参见如下表格进行配置,然后单击下一步:设置参数。

    配置项

    参数

    模板类别

    公共任务模板

    模板选择

    ACS-ECS-BulkyRunCommand

    执行模式

    失败暂停

  5. 在设置参数页签中单击运行Shell脚本,并将如下CVE修复脚本放入命令内容中,单击下一步:确定。

    #!/bin/bash
    set -e
    # 设置节点所在的region
    export REGION=$(curl 100.100.100.200/latest/meta-data/region-id 2>/dev/null)
    
    if [[ $REGION == "" ]];then
        echo "Error: failed to get region"
        exit 1
    fi
    
    NV_TOOLKIT_VERSION=1.17.5
    
    PACKAGE=upgrade_nvidia-container-toolkit-${NV_TOOLKIT_VERSION}.tar.gz
    
    cd /tmp
    
    curl -o ${PACKAGE}  http://aliacs-k8s-${REGION}.oss-${REGION}-internal.aliyuncs.com/public/pkg/nvidia-container-runtime/${PACKAGE} 
    
    tar -xf ${PACKAGE} 
    
    cd pkg/nvidia-container-runtime/upgrade/common
    
    bash upgrade-nvidia-container-toolkit.sh
  6. 在确定页签中核对创建信息,确认无误后单击创建。

  7. 任务执行成功后,在系统运维管理控制台左侧导航栏,选择自动化任务 > 任务执行管理,找到并单击对应任务执行ID。然后在执行步骤和结果区域查看输出。

    • 如果脚本输出如下内容,当前节点环境不存在cve漏洞,机器上未执行任何变更,可忽略。

      2025-03-22/xxxx  INFO  No need to upgrade current nvidia-container-toolkit(1.17.5)
    • 如果脚本输出如下内容,那么表示该节点环境存在NVIDIA Container Toolkit漏洞且已被修复。

      2025-03-22/xxxxx  INFO  succeed to upgrade nvidia container toolkit

步骤3:节点解除隔离

控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点。

  3. 在节点页面中勾选目标节点并单击最下方设置调度状态,在弹出框选中设置为可调度,然后单击确定。

kubectl

执行以下命令,进行节点接触隔离操作。

kubectl uncordon <NODE_NAME>

(可选)步骤4:验证GPU节点

完成上述操作以后,建议参考如下文档中的示例YAML部署一个GPU应用,验证节点是否能够正常工作。

  • 独占GPU:使用Kubernetes默认GPU调度。

  • 共享GPU:运行共享GPU调度示例。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号