Docker セキュリティアドバイザリ: runc、BuildKit、Moby の複数の脆弱性

2 月 1 日の更新:

1 月 31 日の更新:

  • runc、BuildKit、Moby (Docker Engine) のパッチが利用可能になりました。
  • 更新は、Docker Build Cloud ビルダーにロールアウトされました。

Dockerでは、ソフトウェアのセキュリティと整合性、およびユーザーの信頼を優先しています。 Snyk Labsのセキュリティ研究者は最近、コンテナエコシステムにおける4つのセキュリティ脆弱性を特定し、報告しました。 脆弱性の 1 つである CVE-2024-21626は runc コンテナランタイムに関係し、他の 3 つは BuildKit (CVE-2024-23651、CVE-2024-23652、および CVE-2024-23653)に影響を与えます。 私たちは、私たちのチームが報告者やオープンソースメンテナーと協力して、必要な修正の調整と実装に熱心に取り組んでいることをコミュニティに保証したいと思います。

バナー Docker セキュリティ アドバイザリ

私たちは、最高のセキュリティ基準を維持することをお約束します。 1 月 31 日に runc、BuildKit、Moby のパッチ適用済みバージョンを公開し、2 月 1 日に Docker Desktop の更新プログラムをリリースして、これらの脆弱性に対処します。 さらに、最新のMobyとBuildKitのリリースには、独立した研究者とDockerの内部調査イニシアチブによってそれぞれ発見されたCVE-2024-23650 とCVE-2024-24557の修正が含まれます。

 影響を受けるバージョン
ルンク<= 1です。1.11
BuildKit<= 0です。12.4
Moby (Docker エンジン)<= 25です。0.1 と <= 24です。0.8
Docker Desktop<= 4です。27.0

これらの脆弱性は、ユーザーが悪意のあるコンテンツをビルドプロセスに組み込んだり、疑わしいイメージからコンテナを実行したりして、悪意のあるコンテンツに積極的に関与している場合にのみ悪用できます(特にCVE-2024-21626 コンテナエスケープの脆弱性に関連しています)。 潜在的な影響には、ホストファイルシステムへの不正アクセス、ビルドキャッシュの整合性の侵害、CVEの場合、202421626、コンテナの完全なエスケープにつながる可能性のあるシナリオが含まれます。 

すべてのお客様には、利用可能な更新プログラムがリリースされたらすぐに適用して、セキュリティを優先することを強くお勧めします。 これらの更新プログラムをタイムリーに適用することは、これらの脆弱性からシステムを保護し、安全で信頼性の高い Docker 環境を維持するための最も効果的な手段です。

影響を受けるバージョンを使用している場合はどうすればよいですか?

影響を受けるバージョンのrunc、BuildKit、Moby、またはDocker Desktopを使用している場合は、パッチが適用されたバージョンが利用可能になったらすぐに最新バージョンに更新してください(すべて2月 1 日までにリリースされ、次の表にリンクされています)。

 パッチが適用されたバージョン
ルンク>= 1.1.12
BuildKit>= 0.12.5
Moby (Docker エンジン)>= 25.02 および >= 24.0.9*
Docker Desktop>= 4.27.1
* Moby 24では、CVE-2024-21626 と CVE-2024-24557のみが修正されました。0.9.


影響を受けていないバージョンがリリースされた後すぐに更新できない場合は、次のベスト プラクティスに従ってリスクを軽減します。 

  • 信頼できるDockerイメージ( Docker公式イメージなど)のみを使用してください。
  • 信頼できないソースや信頼できない Dockerfile から Docker イメージをビルドしないでください。
  • Docker Desktop を使用している Docker Business のお客様で、v4.27.1 リリース後すぐに、次のような Hardened Docker Desktop 機能を有効にしてください。
  • CVE-2024-23650、 CVE2024-23651、 CVE-2024-23652、および CVE-2024-23653の場合、信頼できないソースからの BuildKit フロントエンド の使用は避けてください。 フロントエンド イメージは、通常、Dockerfile の行として#syntax指定するか、コマンドを使用するbuildctl buildときにフラグ付き--frontendで指定します。
  • CVE202424557を軽減するには、イメージのビルド時に BuildKit を使用するか、キャッシュを無効にしてください。 CLIから、これは環境変数(Mobyのデフォルト>= v23.0 buildxプラグインがインストールされている場合)または--no-cacheフラグを介してDOCKER_BUILDKIT=1実行できます。HTTP API を直接またはクライアント経由で使用している場合は、 /build API エンドポイント または2 true version to を設定する nocache ことで同じことを行うことができます。

技術的な詳細と影響

CVE-2024-21626 (高)

runc v1.1.11 以前では、特定のファイル記述子が漏洩したため、攻撃者は、新しく生成されたコンテナプロセス(from runc exec)にホストファイルシステムの名前空間に作業ディレクトリを持たせたり、ユーザーを騙して悪意のあるイメージを実行させ、コンテナプロセスがホストファイルシステムにアクセスできるようにしたりすることで、ホスト runc runファイルシステムにアクセスできます。 また、この攻撃は、半任意のホストバイナリを上書きするように適応させ、コンテナを完全にエスケープすることができます。 高レベルのランタイム(DockerやKubernetesなど)を使用している場合、追加の構成なしで悪意のあるコンテナイメージを実行したり、コンテナの起動時に特定の workdir オプションを渡したりすることで、この脆弱性が悪用される可能性があることに注意してください。 この脆弱性は、Dockerの場合、Dockerfile内から悪用される可能性もあります。

  • この問題は runc v1で修正されました。1.12.

CVE-2024-23651 (高)

BuildKit では <= v0.12.4, サブパスで同じキャッシュマウントを共有する2つの悪意のあるビルドステップが並行して実行されると、競合状態が発生し、ホストシステムのファイルがビルドコンテナにアクセスできる可能性があります。 これは、ユーザーが悪意のあるプロジェクトの Dockerfile をビルドしようとしている場合にのみ発生します。

  • この問題は BuildKit v0で修正される予定です。12.5.

CVE-2024-23652 (高)

BuildKit では <= v0.12.4、悪意のある BuildKit フロントエンドまたは Dockerfile を使用すると RUN --mount 、マウントポイント用に作成された空のファイルを削除する機能を騙して、ホストシステムからコンテナー外のファイルを削除する可能性があります。 これは、ユーザーが悪意のある Dockerfile を使用している場合にのみ発生します。

  • この問題は BuildKit v0で修正される予定です。12.5.

CVE-2024-23653 (高)

BuildKit は、コンテナをビルドステップとして実行するだけでなく、ビルドされたイメージに基づいてインタラクティブなコンテナを実行するための API も提供します。 BuildKit では <= v0.12.4、これらの API を使用して、昇格された権限でコンテナーを実行するように BuildKit に要求できます。 通常、このようなコンテナーの実行は、buildkitd 構成によって特別な security.insecure エンタイトルメントが有効になっていて、ビルド要求を初期化するユーザーによって許可されている場合にのみ許可されます。

  • この問題は BuildKit v0で修正される予定です。12.5.

CVE-2024-23650 (中)

BuildKit では <= v0.12.4、悪意のある BuildKit クライアントまたはフロントエンドがリクエストを作成し、BuildKit デーモンがパニックでクラッシュする可能性があります。

  • この問題は BuildKit v0で修正される予定です。12.5.

CVE-2024-24557 (中)

白鯨では<= v25.0.1 と <= v24です。0.8、従来のビルダーキャッシュシステムは、イメージがゼロから構築されている場合、キャッシュポイズニングが発生しやすくなります。 また、いくつかの命令 (最も重要なのは HEALTHCHECKONBUILD) を変更しても、キャッシュ ミスは発生しません。 誰かが使用しているDockerfileを知っている攻撃者は、一部のビルドステップで有効なキャッシュ候補と見なされる特別に細工されたイメージをプルさせることで、キャッシュを汚染する可能性があります。

  • この問題はMoby >= v25で修正される予定です。0.2 と >= v24です。0.9.

Docker製品にはどのような影響がありますか? 

以下のDocker製品が影響を受けます。 他の製品はこれらの脆弱性の影響を受けません。

Docker Desktop

Docker Desktop v4.27.0 以前が影響を受けます。 Docker Desktop v4.27.1 は 2 月 1 日にリリースされ、runc、BuildKit、dockerd バイナリのパッチが含まれています。 この新しいバージョンへの更新に加えて、すべての Docker ユーザーが Docker イメージと Dockerfile を熱心に使用し、ビルドで信頼できるコンテンツのみを使用するようにすることをお勧めします。

いつものように、完全な互換性を確保するために、更新する前にオペレーティングシステム(WindowsLinuxMac)のDocker Desktopのシステム要件を確認する必要があります。

Dockerビルドクラウド

新しい Docker Build Cloud ビルダーインスタンスは、修正プログラムのリリース後に最新の Docker Engine および BuildKit バージョンでプロビジョニングされるため、これらの CVE の影響を受けません。 また、Dockerは既存のビルダーインスタンスに対して段階的な更新をロールアウトする予定です。

Dockerのセキュリティ

Dockerでは、開発者にこだわることの一部は、開発者に安全なソフトウェアを提供することであることを知っています。 これらの脆弱性を責任を持って開示していただきありがとうございます。 Docker製品の潜在的なセキュリティ脆弱性に気付いた場合は、[ email protected]に報告してください。 Dockerのセキュリティプラクティスの詳細については、当社の Webサイトを参照してください。

アドバイザリリンク