Eigentlich sollte Dokploy genau das Problem lösen, das jeder Homelab-Betreiber kennt: eine eigene, schlanke Alternative zu Heroku oder Vercel, komplett selbst gehostet. Jetzt zeigt sich: Ausgerechnet die Funktion, mit der du ein Git-Repository für ein Deployment auswählst, öffnet Angreifern die Root-Kommandozeile im gesamten Container.
WAS GENAU KAPUTT IST
Die Lücke trägt die Kennung CVE-2026-93425 und sitzt in der internen Funktion patch.readRepoDirectories. Dokploy baut daraus im Hintergrund einen Shell-Befehl der Form cd "$repoPath" && git ls-tree -r --name-only HEAD — und übernimmt den Pfad dabei ungeprüft aus der Nutzereingabe. Wer in dieses Feld Shell-Sonderzeichen statt eines normalen Pfads schreibt, lässt Dokploy nicht mehr lesen, sondern ausführen.
Der CVSS-Wert liegt bei 9,9 von 10. Der Vektor zeigt, warum das kein Randfall ist: Der Angriff läuft über das Netzwerk, braucht keine besondere Komplexität und keine Nutzerinteraktion. Einzige Voraussetzung ist ein angemeldetes Konto mit der eher harmlos klingenden Berechtigung „service:read“ — ein Leserecht, das in vielen Teams großzügig vergeben wird, weil es nach wenig aussieht.
WARUM DER DOCKER-SOCKET ALLES SCHLIMMER MACHT
Der eingeschleuste Befehl läuft als Root im Dokploy-Container. Für sich genommen wäre das schon ernst. Richtig gefährlich wird es, weil Dokploy in seiner Standard-Installation den Docker-Socket des Host-Systems in den Container einbindet — damit die Oberfläche neue Container starten, stoppen und verwalten kann. Wer im Container Root ist und gleichzeitig den Docker-Socket erreicht, steuert damit den kompletten Docker-Daemon des Hosts. Aus einer Rechteausweitung im Container wird so im schlimmsten Fall die volle Kontrolle über den Server und alle darauf laufenden Anwendungen.
Die Entwickler stufen das Problem selbst als klassischen CWE-78 ein — Befehlsinjektion durch fehlende Bereinigung von Sonderzeichen. Genau die Art Fehler, die in Code-Reviews eigentlich als Erstes auffallen sollte, hier aber offenbar durchgerutscht ist.
WER DAS TRIFFT
Dokploy ist in der Self-Hosting-Szene beliebt, weil es Coolify und Portainer als schlanke, kostenlose PaaS-Oberfläche Konkurrenz macht: Git-Repo verknüpfen, Dokploy baut und deployt automatisch. Genau dieser Automatismus ist jetzt das Problem. Betroffen ist jede Installation vor Version 0.29.13 — unabhängig davon, ob sie auf einem gemieteten VPS, einem Homelab-Server oder in einem größeren Team mit mehreren Organisationsmitgliedern läuft. Teams mit mehreren Nutzerkonten sind besonders exponiert, weil dort öfter Konten mit reinen Leserechten existieren, die genau die nötige Mindestberechtigung mitbringen.
Ehrlich bleiben muss man an einer Stelle: Ein öffentlicher Machbarkeitsnachweis existiert im Sicherheitsbericht der Entwickler, konkrete Angriffe in freier Wildbahn sind bislang nicht dokumentiert. Bei einer derart niedrigen Einstiegshürde ist das aber eher eine Frage der Zeit als eine echte Entwarnung.
SO SCHÜTZT DU DEINEN SERVER — in 5 MINUTEN
- Sofort aktualisieren: Version 0.29.13 behebt die Lücke vollständig.
- Berechtigungen prüfen: Wer wirklich nur lesen soll, sollte nicht automatisch als „service:read“ auf Repo-Funktionen zugreifen können — Rollen nach dem Update trotzdem einmal durchgehen.
- Docker-Socket hinterfragen: Wo möglich, den direkten Zugriff auf
/var/run/docker.sockeinschränken oder über einen Proxy mit reduzierten Rechten laufen lassen, statt ihn roh durchzureichen.
Ein Workaround ohne Update existiert nicht — die Entwickler empfehlen ausdrücklich, execFile() mit Argument-Arrays statt exec() mit zusammengesetzten Strings zu verwenden, was mit 0.29.13 bereits umgesetzt ist.
FAZIT: Komfort hat einen Preis
Dokploy verspricht dir, dass ein Klick reicht und der Server den Rest erledigt. Genau dieser Automatismus — Git-Pfad rein, Shell-Befehl raus — ist jetzt zur Achillesferse geworden. Wenn du eine Self-Hosting-PaaS-Lösung mit Docker-Socket-Zugriff betreibst, ist das heute dein wichtigstes Update, nicht irgendwann diese Woche.
Häufige Fragen
Muss ich sofort handeln, auch wenn ich Dokploy nur allein nutze?
Reicht es, den Docker-Socket vom Container zu trennen?
Woher weiß ich, welche Dokploy-Version ich einsetze?
docker inspect.