NVIDIA Container Toolkit 1.17.7及以下版本在使用默认配置时存在一个TOCTOU竞态条件攻击漏洞。该漏洞不会影响容器设备接口(CDI)的使用,但若被成功利用,可能导致容器逃逸,使攻击者能够在宿主机上执行任意命令或获取敏感信息。已知攻击场景下,受害者需要使用恶意镜像,并在容器内通过NVIDIA Container Toolkit操作GPU资源。关于漏洞的详细信息,请参见NVIDIA Container Toolkit,请及时修复。
影响范围
当您的集群同时满足以下两项条件时,将会被此漏洞影响,建议您及时修复:
集群 Kubernetes 版本 ≤ 1.32。
GPU 节点安装的 NVIDIA Container Toolkit 版本 ≤ 1.17.7。
如何查询 NVIDIA Container Toolkit 组件版本
登录 GPU 节点。
您可执行
nvidia-container-cli --version
查看组件版本,以下是一个示例输出。cli-version: 1.17.8 lib-version: 1.17.8 build date: 2025-05-30T13:47+00:00 build revision: 6eda4d76c8c5f8fc174e4abca83e513fb4dd63b0 build compiler: x86_64-linux-gnu-gcc-7 7.5.0 build platform: x86_64
防范措施
启用安全策略管理中的容器安全策略规则库说明策略,限制仅从可信的镜像仓库中拉取镜像。
解决方案
新建GPU节点
2025年08月04日及以后创建的节点:ACK Edge集群已在1.20及以上版本的集群中发布了NVIDIA Container Toolkit v1.17.8,可自动完成修复。您可以新建节点,正常使用。
如果您的当前集群版本低于 1.20,建议您及时升级版本,请参见升级集群。
存量GPU节点
2025年08月04日之前创建的存量GPU节点,均需通过执行CVE修复脚本进行手动修复。
云上节点,请参见漏洞CVE-2025-23266公告。
边缘节点,请参见以下操作步骤。
为确保系统稳定性,建议将节点分批次修复,避免一次性同时处理全部节点。
步骤一:节点排水
节点排水将把该节点上的 Pod 迁移到其他可用节点。执行前,请您先确认所选节点确为目标边缘节点。
执行以下命令,设置指定的节点为不可调度状态。
kubectl cordon <NODE_NAME>
执行以下命令,进行节点排水操作。
kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true
步骤二:节点上执行修复脚本
针对受影响的节点,需在节点上执行以下脚本。
根据实际环境执行以下命令,为脚本配置
REGION
和INTERCONNECT_MODE
两个环境变量。export REGION="cn-hangzhou" INTERCONNECT_MODE="basic"; # 将 “cn-hangzhou” 和 “basic” 替换为您的真实配置。
参数说明:
参数
说明
示例值
REGION
指定集群所在地域的Region ID。ACK Edge集群支持的地域及其Region ID,请参见开服地域。
cn-hangzhou
INTERCONNECT_MODE
指定节点接入的网络类型。
basic:公网接入。
private:专线接入。
basic
使用以下脚本复制到终端并执行,以完成修复操作。
#!/bin/bash set -e if [[ $REGION == "" ]];then echo "Error: REGION is null" exit 1 fi if [[ $INTERCONNECT_MODE == "" ]]; then echo "Error: INTERCONNECT_MODE is null" exit 1 fi NV_TOOLKIT_VERSION=1.17.8 INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ) PACKAGE=upgrade_nvidia-container-toolkit-${NV_TOOLKIT_VERSION}.tar.gz cd /tmp export PKG_URL_PREFIX="http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com" curl -o ${PACKAGE} ${PKG_URL_PREFIX}/public/pkg/nvidia-container-runtime/${PACKAGE} tar -xf ${PACKAGE} cd pkg/nvidia-container-runtime/upgrade/common bash upgrade-nvidia-container-toolkit.sh
查看输出结果。
如果脚本输出如下内容,表明当前节点环境不存在CVE漏洞,机器上未执行任何变更,可忽略。
2025-03-22/xxxx INFO No need to upgrade current nvidia-container-toolkit(1.17.8)
如果脚本输出如下内容,那么表示该节点环境存在NVIDIA Container Toolkit漏洞且已被修复。
2025-03-22/xxxxx INFO succeed to upgrade nvidia container toolkit
步骤三:节点上线
执行以下命令,进行节点上线操作。
kubectl uncordon <NODE_NAME>
步骤四:验证GPU节点正常工作(可选)
完成修复后,您可以使用以下文档的示例 YAML 部署一个 GPU 工作负载,确认节点状态正常。
独占GPU:使用Kubernetes默认GPU调度。
共享GPU:运行共享GPU调度示例。