Skip to content

XRayZen/cve-2025-9074-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

CVE-2025-9074 (教育用 PoC・概念実証コード)

このリポジトリは、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の既定値)

使い方

  1. リポジトリの取得

    git clone <this-repo>
    cd cve-2025-9074
  2. PoCの実行

    go run poc.go
  3. 出力例

    • /version への疎通成功表示
    • 利用イメージの検出 or alpine:latest のプル
    • 特権コンテナ作成、ホストへのファイル作成結果
    • /info に基づくシステム情報の抜粋表示
  4. デモンストレーションの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の使用によって生じたいかなる損害についても、作者は責任を負いません。
  • 自身が正当な管理権限を持つ隔離環境以外で実行しないでください。

ライセンス

About

2025年8月20日に公開されたDockerDesktopの脆弱性(対策済み)を実証する

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages