NVIDIA Container Toolkit 1.16.1及以下版本在使用默認配置時存在一個TOCTOU競態條件攻擊漏洞。該漏洞不會影響容器設備接口(CDI)的使用,但若被成功利用,可能導致容器逃逸,使攻擊者能夠在宿主機上執行任意命令或獲取敏感信息。已知的攻擊場景需要受害者使用惡意鏡像,并在容器內通過NVIDIA Container Toolkit操作GPU資源。關于漏洞的詳細信息,請參見NVIDIA Container Toolkit,建議您及時修復。
影響范圍
ACK Edge集群中的GPU節點安裝了NVIDIA Container Toolkit組件,且組件版本為1.16.1及以下。
解決方案
步驟一:節點排水
控制臺
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在節點頁面中勾選目標節點并單擊最下方節點排水,在彈出框中單擊確定。
kubectl
執行以下命令,設置指定的節點為不可調度狀態。
kubectl cordon <NODE_NAME>
執行以下命令,進行節點排水操作。
kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true
步驟二:節點上執行修復腳本
針對受影響的節點,需在節點上執行以下腳本。
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
查看輸出結果。
如果腳本輸出如下內容,表明當前節點環境不存在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
步驟三:節點上線
控制臺
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在節點頁面中勾選目標節點并單擊最下方設置調度狀態,在彈出框選中設置為可調度,然后單擊確定。
kubectl
執行以下命令,進行節點上線操作。
kubectl uncordon <NODE_NAME>
安全加固建議
使用啟用安全策略管理中的ACKAllowedRepos策略,限制只使用可信倉庫來源的鏡像,同時基于最小化權限原則確保只有可信人員具有導入鏡像的權限。