すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:脆弱性 CVE-2025-23359

最終更新日:Apr 08, 2025

NVIDIA Container Toolkit 1.17.3 以前のバージョンには、Compute Unified Device Architecture(CUDA)の上位互換性の処理にセキュリティの脆弱性が存在します。コンテナイメージに悪意のある細工がされたシンボリックリンクファイルが含まれている場合、 libnvidia-container はコンテナ内のホストディレクトリを読み取り専用モードで誤ってマウントします。攻撃者はこの脆弱性を悪用してコンテナの隔離メカニズムをバイパスし、機密情報の盗難やホスト権限の昇格を引き起こす可能性があります。この脆弱性の詳細については、「NVIDIA Container Toolkit」をご参照ください。この脆弱性をできるだけ早く修正してください。

影響を受けるバージョン

この脆弱性は、1.32 より前の Kubernetes を実行し、NVIDIA Container Toolkit 1.17.3 以前がインストールされている GPU アクセラレーション ノードを持つクラスターに影響します。

説明

nvidia-container-cli --version を実行して、コンポーネントのバージョンを確認できます。

予防方法

脆弱性が修正されるまでは、システムのセキュリティと安定性を確保するために、信頼されていないコンテナイメージをクラスターで実行しないことをお勧めします。次の方法を使用できます。

ソリューション

使用方法に関する注意事項

  • このソリューションは、ACK マネージド プロ クラスターACK マネージド ベーシック クラスターACK 専用クラスターACK Edge クラスター クラウドノードプール、および ACK 凌雲クラスター マネージドノードプールに適用できます。

  • クラスタータイプが ACK 凌雲クラスター で、ノードプールが凌雲ノードプールの場合は、チケットを送信 してください。

  • システムの安定性を維持するために、すべてのノードを同時にパッチ適用するのではなく、バッチでノードに脆弱性パッチを適用します。

  • プロセス全体で、ノードで実行されているアプリケーション ポッドを再起動することで問題を修正します。修正操作は、オフピーク時に実行してください。

ソリューション

新しい GPU アクセラレーション ノードの構成ソリューション

このソリューションは、Kubernetes 1.20 以降を実行しているクラスターに適用できます。クラスターの Kubernetes バージョンが 1.20 より前の場合は、「クラスターをアップグレードする」をご参照ください。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. 管理するノードプールを見つけ、[編集] をクリックし、ack.aliyun.com/nvidia-container-runtime-version=1.17.5 ラベルをノードプールに追加して、[確認] をクリックします。

    説明
    • このラベルは、ノードプールのスケールアウト時に使用される nvidia-container-toolkit のバージョンを 1.17.5 にロックし、新しいバージョンがリリースされても自動的にアップグレードされません。

    • 新しいバージョンの nvidia-container-toolkit を使用する場合、このラベルを手動で削除する必要があります。スケールアウトノードはデフォルトで最新バージョンを使用します。

既存の GPU アクセラレーション ノードの修正ソリューション

既存の GPU アクセラレーション ノードの場合、CVE 修正スクリプトを実行することで、問題を手動で修正できます。次のセクションでは、修正ソリューションの詳細について説明します。

手動修正ソリューションを表示する

前提条件

クラスターに cGPU がインストールされていない場合は、この手順をスキップします。クラスターに cGPU がインストールされている場合は、バージョンが 1.1.0 以降であることを確認してください。次のセクションでは、クラスターに cGPU がインストールされているかどうかを確認する方法と、cGPU を更新する方法について説明します。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  3. [Helm] ページで、コンポーネントのバージョンを確認します。

    • [ack-ai-installer][ack-cgpu] がクラスターにインストールされている場合は、チケットを送信 してください。

    • クラスタ内の [ack-ai-installer] のバージョンが 1.7.5 以前の場合は、[ack-ai-installer] を更新します。詳細については、「GPU 共有コンポーネントを更新する」をご参照ください

    • クラスター内の [ack-cgpu] のバージョンが 1.7.5 以前の場合は、コンポーネント名の横にある [更新] をクリックし、指示に従ってコンポーネントを更新します。

  4. コンポーネントを更新した後、クラスター内の既存の GPU アクセラレーション ノードを更新できます。詳細については、「ノードの cGPU バージョンを更新する」をご参照ください。

ステップ 1:ノードをドレインする

ACK コンソールを使用する
  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. [ノード] ページで、管理するノードを選択し、ページの下部にある [ドレイン] をクリックします。表示されるダイアログボックスで、[OK] をクリックします。

kubectl
  1. 次のコマンドを実行して、ノードのステータスをスケジューリング不可に設定します。

    kubectl cordon <NODE_NAME>
  2. 次のコマンドを実行して、ノードをドレインします。

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

ステップ 2:ノードで修正スクリプトを実行する

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. [ノード] ページで、管理するノードを選択し、下部にある [バッチ操作] をクリックします。表示されるダイアログボックスで、[シェルスクリプトの実行] を選択し、[OK] をクリックします。

  4. [CloudOps Orchestration Service (OOS)] コンソールの [基本情報] タブで、次の表に示すようにパラメーターを構成し、[次のステップ:パラメーター設定] をクリックします。

    パラメーター

    テンプレートカテゴリ

    パブリックテンプレート

    テンプレート

    ACS-ECS-BulkyRunCommand

    実行モード

    エラー時に中断

  5. [パラメーター設定] タブで、[シェルスクリプトの実行] をクリックし、次の CVE 修正スクリプトを [CommandContent] セクションに貼り付けて、[次のステップ:OK] をクリックします。

    #!/bin/bash
    set -e
    # ノードが配置されているリージョンを設定します
    export REGION=$(curl 100.100.100.200/latest/meta-data/region-id 2>/dev/null)
    
    if [[ $REGION == "" ]];then
        echo "Error: failed to get region"  # エラー:リージョンの取得に失敗しました
        exit 1
    fi
    
    NV_TOOLKIT_VERSION=1.17.5
    
    PACKAGE=upgrade_nvidia-container-toolkit-${NV_TOOLKIT_VERSION}.tar.gz
    
    cd /tmp
    
    curl -o ${PACKAGE}  http://aliacs-k8s-${REGION}.oss-${REGION}-internal.aliyuncs.com/public/pkg/nvidia-container-runtime/${PACKAGE} 
    
    tar -xf ${PACKAGE} 
    
    cd pkg/nvidia-container-runtime/upgrade/common
    
    bash upgrade-nvidia-container-toolkit.sh
  6. [OK] タブで、作成情報を確認し、[作成] をクリックします。

  7. タスクが正常に実行された後、OOS コンソール の左側のナビゲーションウィンドウで、[自動タスク] > [タスク実行管理] を選択します。対応するタスク実行 ID を見つけてクリックします。次に、[実行ステップと結果] セクションの [出力] を確認します。

    • 次の出力が表示された場合、ノード環境には CVE の脆弱性がないため、デバイスに変更は加えられていません。無視して構いません。

      2025-03-22/xxxx  INFO  No need to upgrade current nvidia-container-toolkit(1.17.5)  # 現在の nvidia-container-toolkit(1.17.5) をアップグレードする必要はありません
    • 次の出力が表示された場合、ノードに NVIDIA Container Toolkit の脆弱性が存在し、修正されています。

      2025-03-22/xxxxx  INFO  succeed to upgrade nvidia container toolkit # nvidia container toolkit のアップグレードに成功しました

ステップ 3:ノードの隔離を解除する

コンソールを使用する

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. [ノード] ページで、管理するノードを選択し、下部にある [ノードのスケジューリング可能性の設定] をクリックします。表示されるダイアログボックスで、[スケジューリング可能に設定] を選択し、[OK] をクリックします。

kubectl を使用する

次のコマンドを実行して、ノードの隔離を解除します。

kubectl uncordon <NODE_NAME>

(オプション)ステップ 4:GPU ノードを確認する

上記の手順を完了した後、次のトピックのサンプル YAML ファイルに基づいて GPU アクセラレーション ノードをデプロイし、ノードが想定どおりに動作することを確認することをお勧めします。