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

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

最終更新日:Aug 06, 2025

デフォルト構成で使用した場合、NVIDIA Container Toolkit バージョン 1.17.7 以前で、Time-of-check to Time-of-use(TOCTOU)競合状態の脆弱性が確認されています。この脆弱性は、Container Device Interface(CDI)を使用するデプロイメントには影響しません。悪用された場合、この脆弱性によりコンテナエスケープが発生し、攻撃者がホスト上で任意のコマンドを実行したり、機密性の高いホストシステム情報にアクセスしたりする可能性があります。既知の攻撃シナリオでは、被害者が悪意のあるコンテナイメージを実行し、NVIDIA Container Toolkit を介してコンテナ内で GPU リソースを使用する必要があります。

公式の詳細については、「NVIDIA Container Toolkit」をご参照ください。影響を受けるクラスターには、即時の修復が必要です。

影響範囲

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

NVIDIA Container Toolkit のバージョンを確認する方法

GPU アクセラレーションノードで次のコマンドを実行します。

nvidia-container-cli --version

出力例(バージョン 1.17.8):

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

予防策

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

解決策

注意事項

  • 修正は以下にのみ適用されます。

    • ACK マネージド Pro クラスターACK マネージド Basic クラスターACK 専用クラスター、および ACK Edge クラスター のクラウドノードプール

    • ACK Lingjun クラスター のマネージドノードプール。

  • Lingjun ノードプールを使用している ACK Lingjun クラスター の場合は、チケットを送信 してサポートを受けてください。

  • 安定性を維持するために、オフピーク時にノードをバッチで修正します。すべてのノードを同時に修正しないでください。

    説明

    この修正により、ノード上で実行中のアプリケーションポッドが再起動されます。

手順

新しい GPU アクセラレーションノード

この解決策は、Kubernetes 1.20 以降を実行しているクラスターにのみ適用されます。必要に応じて、クラスターをアップグレード してください。

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

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

  3. ターゲットノードプールを見つけて、[編集] をクリックします。[ノードプールの編集] ダイアログボックスで、ack.aliyun.com/nvidia-container-runtime-version=1.17.8 ノードラベルを追加し、[OK] をクリックします。

    説明
    • このラベルは、ノードプールのスケーリング中に nvidia-container-toolkit のバージョンを 1.17.8 にロックします。今後のツールキットのリリースでは、自動アップグレードはトリガーされません。

    • 新しいバージョンのツールキットを使用するには、このラベルを手動で削除します。新しくスケーリングされたノードは、デフォルトで最新バージョンになります。

既存の GPU アクセラレーションノード

Common Vulnerabilities and Exposures(CVE)修復スクリプトを実行して手動で修正します。

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

前提条件

  • Alibaba Cloud アカウントまたは RAM ユーザーに CloudOps Orchestration Service(OOS)の権限があることを確認します。詳細については、「AliyunOOSFullAccess」をご参照ください。

  • クラスターに cGPU アドオンがインストールされているかどうかを確認します。

    cGPU がインストールされているかどうか、およびアップグレード方法を確認する方法

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

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

    3. [Helm] ページで、アドオンのバージョンを確認します。

      • ack-cgpu が見つかりません:cGPU アドオンはインストールされていません。

      • ack-ai-installerack-cgpu の両方が存在します:チケットを送信 してサポートを受けてください。

      • ack-ai-installer が存在します:バージョンが 1.7.5 より前の場合は、アップグレード します。

      • ack-cgpu が存在します:バージョンが 1.5.1 より前の場合は、アドオンの右側にある [更新] をクリックし、画面の指示に従ってアップグレードします。

    4. アドオンのアップグレード後、クラスター内の既存の 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. [基本情報] ステップで、次の表に従ってパラメータを構成し、[次のステップ:パラメータ設定] をクリックします。

    パラメータ

    テンプレートカテゴリ

    パブリックテンプレート

    テンプレート

    ACS-ECS-BulkyRunCommand

    実行モード

    失敗時に中断

  5. [パラメータ設定] ステップで、[シェルスクリプトを実行] をクリックします。[CommandContent] フィールドに次の CVE 修正スクリプトを入力し、[次のステップ: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.8
    
    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. タスクが実行された後、CloudOps Orchestration Service コンソール の左側のナビゲーションウィンドウで、[自動タスク] > [タスク実行管理] を選択します。実行されたタスクの ID を見つけてクリックし、[実行ステップと結果] セクションの [出力] を表示します。

    • スクリプトが次の出力を返す場合、ノードは CVE-2025-23266 の脆弱性の影響を受けません。変更は適用されておらず、それ以上の操作は必要ありません。

      2025-03-22/xxxx  INFO  No need to upgrade current nvidia-container-toolkit(1.17.8)  # 現在の nvidia-container-toolkit(1.17.8) をアップグレードする必要はありません
      
    • スクリプトが次の出力を返す場合、ノードは NVIDIA Container Toolkit の脆弱性の影響を受けており、修正されています。

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

ステップ 3:ノードをスケジューリング可能に設定する

コンソール

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

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

  3. [ノード] ページで、ターゲットノードを選択し、ページの下部にある [ノードのスケジューリング可能性を設定] をクリックします。表示されるダイアログボックスで、[スケジューリング可能に設定] を選択し、注意事項を読み、チェックボックスをオンにして、[OK] をクリックします。

kubectl

次のコマンドを実行して、ノードの cordon を解除します(スケジューリングの隔離を削除します)。

kubectl uncordon <NODE_NAME>

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

上記の手順を完了した後、次のいずれかのトピックのサンプル YAML テンプレートを使用して GPU アプリケーションをデプロイし、ノードが想定どおりに動作することを確認します。