CVE-2024-0132和CVE-2024-0133修复方案

NVIDIA Container Toolkit 1.16.1及以下版本在使用默认配置时存在一个TOCTOU竞态条件攻击漏洞。该漏洞不会影响容器设备接口(CDI)的使用,但若被成功利用,可能导致容器逃逸,使攻击者能够在宿主机上执行任意命令或获取敏感信息。已知的攻击场景需要受害者使用恶意镜像,并在容器内通过NVIDIA Container Toolkit操作GPU资源。关于漏洞的详细信息,请参见NVIDIA Container Toolkit,建议您及时修复。

影响范围

同时满足以下条件,则会受到该漏洞影响。

  • ACK Edge集群中存在GPU节点。

  • 集群中安装了NVIDIA Container Toolkit组件,且组件版本为1.16.1及以下。

解决方案

  • 新建GPU节点:针对2024年10月27日及之后新建的GPU节点,ACK Edge集群已在1.20及以上版本的集群中发布了NVIDIA Container Toolkit v1.16.2,可自动完成修复。您可以新建节点,正常使用。

    若您的集群版本较低,建议您及时升级版本,请参见升级集群

  • 存量GPU节点:针对2024年10月27日之前创建的存量GPU节点,均需通过执行CVE修复脚本进行手动修复。

    • 若您的节点为云上节点,修复方式请参见解决方案

    • 若您的节点为边缘节点,修复方式请参见下文。

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

步骤一:节点排水

控制台

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

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

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

kubectl

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

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

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

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

  1. 针对受影响的节点,需在节点上执行以下脚本。

    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-nvidia-cve.sh -O /tmp/fix-nvidia-cve.sh && bash /tmp/fix-nvidia-cve.sh;

    参数说明:

    参数

    说明

    示例

    REGION

    指定集群所在地域的Region ID。

    cn-hangzhou

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

    INTERCONNECT_MODE

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

    • basic:公网接入。

    • private:专线接入。

    basic

  2. 查看输出结果。

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

    The current version of Nvidia container toolkit is safe, no cve.

    如果脚本输出如下内容,那么表示该节点环境存在NVIDIA Container Toolkit漏洞且已被修复。

    2024-10-10/xxxxx  INFO  succeeded to fix nvidia container toolkit cve

步骤三:节点上线

控制台

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

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

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

kubectl

执行以下命令,进行节点上线操作。

kubectl uncordon <NODE_NAME>

安全加固建议

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