NVIDIA Container Toolkit 1.17.3 以前のバージョンには、Compute Unified Device Architecture(CUDA)の上位互換性処理に関するセキュリティ脆弱性が存在します。コンテナイメージに悪意のあるシンボリックリンクファイルが含まれている場合、`libnvidia-container` がホストディレクトリを読み取り専用モードでコンテナ内に誤ってマウントします。攻撃者はこの脆弱性を悪用してコンテナの隔離メカニズムをバイパスし、機密情報の窃取やホストへの特権昇格を試みる可能性があります。この脆弱性の詳細については、「NVIDIA Container Toolkit」をご参照ください。本脆弱性は、可能な限り早期に修正してください。
影響を受けるバージョン
本脆弱性は、Kubernetes 1.32 より前のバージョンを実行するクラスター、および NVIDIA Container Toolkit 1.17.3 以前のバージョンがインストールされた GPU 加速ノードを含むクラスターに影響します。
コンポーネントのバージョンを確認するには、nvidia-container-cli --version を実行します。
予防措置
-
セキュリティポリシー管理を有効化し、ACKAllowedRepos ポリシーでイメージのプルを信頼済みリポジトリのみに制限します。
-
カスタム RBAC を使用してクラスター内のリソース操作を制限するなど、最小権限の原則を適用し、イメージのインポート権限は信頼できる担当者のみに付与します。
ソリューション
新規 GPU ノード
2025 年 4 月 30 日以降に作成された GPU ノードの場合、ACK Edge クラスター(バージョン 1.20 以降)には NVIDIA Container Toolkit v1.17.5 が同梱されています。本バージョンでは本脆弱性が修正されています。新規 GPU ノードを直接作成し、通常通りご利用ください。クラスターのバージョンが 1.20 より古い場合は、クラスターをアップグレードしてください。
既存の GPU ノード
2025 年 4 月 30 日以前に作成された既存の GPU ノード(クラウドおよびエッジ両方)については、CVE 修正スクリプトを用いた手動による対応が必要です。
対応実施中は、ノード操作をバッチ単位で実行してください。システムの安定性を確保するため、すべてのノードを同時に対応しないでください。
クラウド環境における既存 GPU ノードの対応
クラウド環境における既存 GPU ノードの対応方法については、「既存 GPU ノードの対応ソリューション」をご参照ください。
エッジ環境における既存 GPU ノードの対応
1. ノードのドレイン
ACK コンソールを使用する場合
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、お使いのクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
[ノード] ページで、管理するノードを選択し、ページ下部の [ドレイン] をクリックします。表示されたダイアログボックスで、[OK] をクリックします。
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 クラスターが配置されているリージョンのリージョン ID です。対応リージョンとそのリージョン 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. ノードのスケジューリング可能状態への設定(アンコーデン)
コンソール
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
「クラスターリスト」ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
[Nodes] ページで、対象のノードを選択し、下部の [Set Node Schedulability] をクリックします。ダイアログボックスで、[Set to Schedulable] を選択し、[OK] をクリックします。
kubectl
以下のコマンドを実行して、ノードのスケジューリング可能状態を復元します。
kubectl uncordon <NODE_NAME>
4. GPU ノードの検証(任意)
上記の操作を完了した後、以下のトピックに記載されているサンプル YAML ファイルを基に GPU 加速ノードをデプロイし、ノードが正常に動作することを検証することを推奨します。
排他的 GPU:「デフォルトの Kubernetes GPU スケジューリングの使用」。
GPU 共有:「GPU 共有による GPU の共有の例」。