このリポジトリは、Docker Engine の未認証リモートAPIを悪用し、ホストファイルシステムへ読み書き可能な特権コンテナを作成できてしまうリスクを教育目的で実証する PoC を含みます。
実行ファイルは poc.go です。
重要: 本PoCは教育・防御目的のみで使用してください。第三者の環境や無許可のシステムでの実行は禁止です。
- 総合評価: クリティカル
- 想定CVSS v3.1 基本値: 9.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
- 根拠:
- 未認証で TCP/2375 に到達可能 → PR:N, UI:N, AV:N
- 特権コンテナ + ホスト bind mount によりスコープ変更と機密性/完全性/可用性が高影響 → S:C, C/I/A:H
- 攻撃手順は Docker Engine API への少数の HTTP リクエストで成立 → AC:L
- 影響範囲:
- ホストOS全体、他コンテナ、同一ネットワーク上の資産(資格情報窃取・横展開を含む)
- 実行権限:
- 未認証(PR:N)。管理者権限は不要
- Docker Engine はリモートAPIを提供しており、
/versionや/info、/containers/createなどのエンドポイントを介して操作できます。 - 外部からコンテナに到達可能な状態だと、認証なしにコンテナ作成・特権付与・ホストのディレクトリを bind mount する操作が可能となるケースがあります。
- Windows + Docker Desktop 環境では、
/run/desktop/mnt/host/<drive>や/host_mnt/<drive>を通じて Windows ホストドライブへアクセスできるマウント経路が存在します。本PoCはその経路を利用してホスト上のファイル生成で影響を可視化します。
poc.go は以下を行います:
http://192.168.65.7:2375に対して Docker Engine API を呼び出し、疎通確認(/version)を実施- 利用可能なイメージ一覧(
/images/json)を確認し、なければalpine:latestのプルを試行 - 特権コンテナを作成し、ホストドライブ(例: C:, N:)を
/host_rootに bind mount - コンテナ内から
/host_root直下へ検証用のファイル(例:cve_2025_9074_poc.txt)を書き込み、影響を可視化 - 実行後はコンテナを削除
- ホストファイルシステムの読み書き(Docker Engine実行権限範囲内)
- 機密情報(パスワード、SSH鍵等)の窃取
- システム設定ファイルの改ざん
- マルウェアの設置、持続化
- 他コンテナ・ネットワークへの横展開
- 特権昇格
- Go 1.20+ 程度(
go runで動作) - (脆弱性がある)Docker Desktop/Engine が動作中
- (脆弱性がある)Docker Desktop/Engine 上で実行されている Docker コンテナ内で本コードを実行すること
- Docker Engine API が
http://192.168.65.7:2375で応答する状態(PoCの既定値)
-
リポジトリの取得
git clone <this-repo> cd cve-2025-9074
-
PoCの実行
go run poc.go
-
出力例
/versionへの疎通成功表示- 利用イメージの検出 or
alpine:latestのプル - 特権コンテナ作成、ホストへのファイル作成結果
/infoに基づくシステム情報の抜粋表示
-
デモンストレーションのcurl例(画面に出力されます)
/containers/createに対するJSON例、/containers/{id}/startの起動例
attemptHostWrite内の候補配列(/run/desktop/mnt/host/<drive>、/host_mnt/<drive>、C:/等)を環境に合わせ調整可能です。- 使用イメージ
- 既存イメージ優先。なければ
alpine:latestを自動プル。
- 既存イメージ優先。なければ
- Windows + Docker Desktop での挙動を前提としたマウントパスの例が含まれます。
- macOS の場合、ホストパスは異なるため適宜書き換えが必要です。
- Docker Desktop のバージョンや設定によって、PoCが成立しない(=安全)場合があります。
- 本リポジトリは研究・教育目的のみを意図しています。攻撃・侵入・破壊行為を助長するものではありません。
- 本PoCの使用によって生じたいかなる損害についても、作者は責任を負いません。
- 自身が正当な管理権限を持つ隔離環境以外で実行しないでください。