
CVE-2026-44848のPoC: PortainerのDockerプラグインエンドポイントにおける認可欠如 -> ホストRCE(GHSA-rrmm-9v76-h3p4)。標準ライブラリのみを使用したPython。
CVE-2026-44848 の概念実証です。これは認可欠如 (CWE-862) の脆弱性で、 Portainer において Docker エンドポイントへのアクセス権を持つ 非管理者 ユーザーが 特権的な Docker プラグイン操作を実行できるため、完全な ホスト RCE に至ります。
GitHub セキュリティアドバイザリ: GHSA-rrmm-9v76-h3p4 · CVSS 9.4 (緊急)。
Portainer は、Docker API の上にロールベースアクセス制御 (RBAC) を適用しており、リクエストを
認可チェックを適用するリソースごとのハンドラーを介してプロキシします。Docker の
プラグイン管理 エンドポイント (/plugins/*) は ハンドラーに登録されていなかった ため、
認可レイヤーはそれらに対して実行されません。その結果、標準ユーザー (ロール 2) — または
エンドポイントレベルのアクセスを許可された任意のロール — が、基盤となる Docker デーモンに対して特権的なプラグイン操作を直接呼び出すことができます。
POST /plugins/pull — 任意のレジストリから任意のプラグインをプルするCAP_SYS_ADMIN やホストパスのマウントを含む特権を要求するPOST /plugins/{name}/enable — Docker はそれらの
ケーパビリティを使ってプラグインを ホスト上で root として 実行します → ホストファイルシステムへの完全なアクセスが可能になり、Docker ホスト上の root と同等になります。>= 2.33.0, < 2.33.8>= 2.39.0, < 2.39.2>= 2.40.0, < 2.41.0このバグの核心であり、安全に再現可能なプリミティブ: 標準 (非管理者) ユーザーが認可なしで
Portainer のプロキシを介して特権的な /plugins/* Docker API に到達できる。
これは、実際の脆弱な Portainer インスタンスに対してエンドツーエンドで実行されます。
POST /api/users/admin/init で管理者をブートストラップします (409 を許容し、ログインにフォールバックします)。bob、ロール 2) を作成し、パスワードをリセットして 409 を許容します。POST /api/endpoints でローカルソケットエンドポイントを自動作成) し、bob に
PUT /api/endpoints/{id} の UserAccessPolicies でアクセスを許可します。bob として (非管理者ユーザー) ログインし、bob のトークンで
GET /api/endpoints/1/docker/plugins を呼び出します。# Defaults: https://localhost:9444, random admin password
python3 portainer_plugin_poc.py
# Explicit target + admin password + command
python3 portainer_plugin_poc.py --url https://localhost:9444 --admin-pass 'P@ssw0rd!' --command "id; hostname"
# Write a JSON summary
python3 portainer_plugin_poc.py --url https://localhost:9444 --output out.json
python3 portainer_plugin_poc.py --help
必要なのは Python 3 標準ライブラリのみ です。TLS 検証は無効です (自己署名のラボ証明書)。
docker run -d --name portainer-lab-cve44848 \
-p 127.0.0.1:9444:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce:2.39.1 # vulnerable
AUTH-BYPASS CONFIRMED: standard user reached /plugins (HTTP 200)
=> PASS (missing auth / host-RCE primitive confirmed)
許可されたセキュリティ研究およびテスト専用です。有効化ステップ (POST /plugins/*) は
ホスト上で root 権限を付与する可能性があります。この PoC は認可バイパスの実証のみを行い、
破壊的/悪意のあるプラグインを有効化することはありません。所有しているシステム、または
テストを許可されたシステムに対してのみ使用してください。