CVE-2025-23359修复方案

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查看组件版本。

防范措施

解决方案

新建GPU节点

对于20250430日及之后新建的GPU节点,ACK Edge集群已在1.20及以上版本中集成了NVIDIA Container Toolkit v1.17.5,此版本已经修复相关漏洞。您可以直接新建GPU节点并正常使用。如果您的集群版本低于1.20,建议您及时升级集群

存量GPU节点

对于20250430日之前创建的云端和边缘侧的存量GPU节点,均需通过执行CVE修复脚本进行手动修复。

重要

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

云上存量GPU节点修复

云上存量GPU节点修复方式请参见存量GPU节点修复方案

边缘存量GPU节点修复

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

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

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

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

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

    kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true
2、在边缘GPU节点上执行修复脚本

在目标边缘GPU节点上执行以下命令,修复NVIDIA Container Toolkit漏洞。

export REGION="" INTERCONNECT_MODE=""; export INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/edge/fix-cve-2025-23359.sh -O /tmp/fix-cve-2025-23359.sh && bash /tmp/fix-cve-2025-23359.sh;

参数说明:

参数

说明

示例值

REGION

ACK Edge集群所在地域的Region ID,支持的地域及其Region ID,请参见开服地域

cn-hangzhou

INTERCONNECT_MODE

指定节点接入的网络类型。

  • basic:公网接入。

  • private:专线接入。

private

  • 若输出以下结果,表明当前节点环境不存在CVE漏洞,机器上未执行任何变更,无需处理。

    The current version of Nvidia container toolkit is safe, no cve.
  • 若输出以下结果,表明该GPU节点环境中存在NVIDIA Container Toolkit漏洞且已被修复。

    2024-10-10/xxxxx  INFO  succeeded to fix nvidia container toolkit cve
3、节点设置为可调度(即将节点解除隔离)

控制台

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

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

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

kubectl

执行以下命令,将节点解除隔离。

kubectl uncordon <NODE_NAME>
4、验证GPU节点(可选)

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