Docker Composeの脆弱性により攻撃者が任意のファイルを上書き可能に

概要

Docker Composeに発見されたパス・トラバーサル脆弱性により、攻撃者は特別に細工されたOCIアーティファクトを通じて、ホストシステムに任意のファイルを書き込むことが可能になります。この脆弱性はCVE-2025-62725として追跡されており、2025年10月上旬に発見され、CVSSスコア8.9(高)の深刻度と評価されています。

この脆弱性は、開発環境から企業のCI/CDパイプライン、クラウドインフラストラクチャに至るまで、数百万のDocker Composeデプロイメントを危険にさらします。

脆弱性の詳細

  • CVE ID: CVE-2025-62725
  • コンポーネント: Docker Compose OCI Artifacts
  • 脆弱性の種類: パス・トラバーサル / 任意のファイル書き込み
  • CVSS 3.1 スコア: 8.9 (高)
  • 影響を受けるバージョン: Docker Compose v2.40.2より前のバージョン

脆弱性の仕組み

Docker Composeは最近、OCIベースのComposeアーティファクトのサポートを導入し、開発者がリモートレジストリからComposeファイルをフェッチして含めることを可能にしました。この機能は移植性を向上させる一方で、ファイルパス検証に危険なギャップを生み出しました。

ComposeがリモートOCIレイヤーを処理する際、ダウンロードされたファイルをディスクのどこに書き込むかを指定するアノテーションを信頼します。攻撃者は、これらのアノテーションをパス・トラバーサルシーケンスで細工し、意図されたキャッシュディレクトリから完全に脱出し、ホストシステムのどこにでもファイルを書き込むことを可能にします。

脆弱なコードは、ファイルをディスクに書き込む前にパスを正規化または検証することに失敗していました。これは、攻撃者が悪意のあるアノテーションを注入し、ComposeにSSHディレクトリ、設定フォルダ、またはComposeプロセスが書き込み権限を持つその他の重要な領域などの機密性の高いシステムロケーションにファイルを書き込むように指示できることを意味します。

危険性と悪用

この脆弱性が特に危険なのは、ユーザーが明示的にコンテナを起動する必要がないことです。一見無害なコマンドである「docker compose ps」や「docker compose config」のようなコマンドでも、ComposeはリモートOCIアーティファクトをフェッチして再構築することを強制し、ユーザーが信頼できないコンテンツを処理していることに気づかないうちに脆弱性を自動的にトリガーします。

攻撃者は、悪意のあるdocker-compose.yamlファイルを含むディレクトリで、被害者に任意のComposeコマンドを実行させるだけで済みます。概念実証のデモンストレーションでは、攻撃者はターゲットシステムのauthorized_keysファイルに自身のSSH公開鍵を注入し、即座にリモートアクセスを許可することが可能でした。これは、コンテナが起動することなく、ユーザーからの明示的な書き込み操作なしに発生する可能性があります。攻撃チェーンは単純でありながら、壊滅的な効果をもたらします。

対策

Dockerは、Docker Compose v2.40.2以降のバージョンで、適切なパス検証を導入するパッチをリリースしました。この修正により、すべてのアノテーション由来のパスがディスクに書き込まれる前に正規化および検証され、キャッシュディレクトリ外に解決されるパスや絶対パスを含むパスは拒否されます。

Docker Composeを使用している組織は、悪用を防ぐために直ちにパッチが適用されたバージョンにアップグレードする必要があります。


元記事: https://gbhackers.com/docker-compose-flaw/