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

Container Service for Kubernetes:runCの脆弱性CVE-2019-5736の修正に関するお知らせ

最終更新日:Nov 11, 2024

Alibaba Cloudは、Container Service for Kubernetes (ACK) のrunC脆弱性CVE-2019-5736を修正しました。 このトピックでは、以前のバージョンの影響と脆弱性の修正方法について説明します。

背景情報

Docker、containerd、またはその他のrunCベースのコンテナーに使用されるrunCランタイムに脆弱性があります。 攻撃者は、ホストのrunCバイナリを上書きし、その結果、特定のコンテナー内でコマンドをrootとして実行する機能を悪用することで、ホストのrootアクセスを取得できます。 このようなコンテナにはdocker execをアタッチできるため、攻撃者はコンテナに対する書き込み権限を持ちます。

詳しくは、「CVE-2019-5736」をご参照ください。

影響

  • ACK:

    18.09.2より前のバージョンのDockerを使用するDocker SwarmクラスターおよびKubernetesクラスターが影響を受けます。

  • ユーザー定義のDocker/Kubernetesランタイム:

    18.09.2より前のDockerバージョンまたは1.0-rc6より前のrunCバージョンを使用するランタイムが影響を受けます。

修正

Alibaba Cloudは、ACKクラスター1.11または1.12で使用されるDockerバージョンのこの脆弱性を修正しました。 他のクラスターでは、次の方法を使用して脆弱性を修正できます。

  • Dockerをアップグレードします。 Dockerのバージョンを18.09.2以降にアップグレードします。 これにより、コンテナの切断やビジネスの中断が発生します。
  • runCのみのアップグレード (Docker 17.06用) 。 Dockerエンジンのアップグレードによるビジネスの中断を回避するには、次の手順を実行して各クラスターノードのrunCバイナリをアップグレードします。
    1. 次のコマンドを実行してdocker-runcを見つけます。 ほとんどの場合、docker-runcは /usr/bin/docker-runcパスにあります。
      which docker-runc
    2. 次のコマンドを実行して、現在のrunCをバックアップします。
      mv /usr/bin/docker-runc /usr/bin/docker-runc.orig.$(日付-1秒)
    3. 次のコマンドを実行して、固定runCをダウンロードします。
      curl -o /usr/bin/docker-runc -sSL https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/runc/docker-runc-17.06-amd64
    4. 次のコマンドを実行してdocker-runcを実行可能にします。
      chmod + x /usr/bin/docker-runc
    5. 次のコマンドを実行して、runCが期待どおりに機能するかどうかをテストします。
      docker-runc -v
      # runcバージョン1.0.0-rc3
      # コミット: fc48a25bde6fb041aae0977111ad8141ff396438
      # spec: 1.0.0-rc5
      docker run -it -- rm ubuntu echo OK 
    6. オプション: ACKクラスターのGPUノードの場合、nvidia-runtimeをインストールするには、次の手順を実行する必要があります。
      1. 次のコマンドを実行して、nvidia-container-runtimeを見つけます。 ほとんどの場合、nvidia-container-runtimeは /usr/bin/nvidia-container-runtimeパスにあります。
        nvidia-container-runtime
      2. 次のコマンドを実行して、現在のnvidia-container-runtimeをバックアップします。
        mv /usr/bin/nvidia-container-runtime /usr/bin/nvidia-container-runtime.orig.$(日付-1秒)
      3. 次のコマンドを実行して、固定されたnvidia-container-runtimeをダウンロードします。
        curl -o /usr/bin/nvidia-container-runtime -sSL https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/runc/nvidia-container-runtime-17.06-amd64
      4. 次のコマンドを実行して、nvidia-container-runtimeを実行可能にします。
        chmod + x /usr/bin/nvidia-container-runtime
      5. 次のコマンドを実行して、nvidia-container-runtimeが期待どおりに機能するかどうかをテストします。
        nvidia-container-runtime -v
        # runcバージョン1.0.0-rc3
        # commit: fc48a25bde6fb041aae0977111ad8141ff396438-dirty
        # spec: 1.0.0-rc5
        
        docker run -it -- rm -e NVIDIA_VISIBLE_DEVICES=すべてのubuntu nvidia-smi -L
        # GPU 0: テスラP100-PCIE-16GB (UUID: GPU-122e199c-9aa6-5063-0fd2-da009017e6dc) 
        説明 このトピックでは、テストはGPU P100を使用するノードで実行されます。 テスト方法は、GPUモデルによって異なります。