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策略,限制只能从可信的镜像仓库中拉取镜像。 
- 基于最小化原则,使用自定义RBAC限制集群内资源操作,仅授权可信人员可执行镜像导入操作。 
解决方案
新建GPU节点
对于2025年04月30日及之后新建的GPU节点,ACK Edge集群已在1.20及以上版本中集成了NVIDIA Container Toolkit v1.17.5,此版本已经修复相关漏洞。您可以直接新建GPU节点并正常使用。如果您的集群版本低于1.20,建议您及时升级集群。
存量GPU节点
对于2025年04月30日之前创建的云端和边缘侧的存量GPU节点,均需通过执行CVE修复脚本进行手动修复。
在修复过程中,请分批进行节点修复操作,避免同时修复所有节点,以确保系统稳定性。
云上存量GPU节点修复
云上存量GPU节点修复方式请参见存量GPU节点修复方案。
边缘存量GPU节点修复
1、节点排水
控制台
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在节点页面中勾选目标节点并单击最下方节点排水,在弹出框中单击确定。 
kubectl
- 执行以下命令,设置指定的节点为不可调度状态。 - kubectl cordon <NODE_NAME>
- 执行以下命令,进行节点排水操作。 - 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;参数说明:
| 参数 | 说明 | 示例值 | 
| 
 | ACK Edge集群所在地域的Region ID,支持的地域及其Region ID,请参见开服地域。 | cn-hangzhou | 
| 
 | 指定节点接入的网络类型。 
 | 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、节点设置为可调度(即将节点解除隔离)
控制台
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在节点页面中勾选目标节点并单击最下方设置调度状态,在弹出框选中设置为可调度,然后单击确定。 
kubectl
执行以下命令,将节点解除隔离。
kubectl uncordon <NODE_NAME>4、验证GPU节点(可选)
完成上述操作以后,建议参考如下文档中的示例YAML部署一个GPU应用,验证节点是否能够正常工作。
- 独占GPU:使用Kubernetes默认GPU调度。 
- 共享GPU:运行共享GPU调度示例。