Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable tRPC endpoint (AV:N/AC:L) requires a low-privilege backup:restore account (PR:L), no interaction (UI:N), and injected code escapes the container to the Docker-privileged host (S:C) with full C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, the backup.restoreBackupWithLogs tRPC subscription passes the databaseName parameter to restore builders in packages/server/src/utils/restore/utils.ts, where PostgreSQL, MariaDB, MySQL, and MongoDB commands embed the value in nested shell text executed by Node.js exec. An authenticated user with backup:restore permission can supply a crafted databaseName that the host /bin/sh expands before docker exec, resulting in arbitrary commands running in the Docker-privileged host context. This issue is fixed in version 0.29.13.
Articles & Coverage 2
AnalysisAI
OS command injection in Dokploy (self-hosted PaaS) before 0.29.13 lets an authenticated user with the backup:restore permission run arbitrary commands on the Docker-privileged host. The backup.restoreBackupWithLogs tRPC subscription forwards an attacker-controlled databaseName into shell strings that Node.js exec passes to /bin/sh before docker exec, so the outer host shell expands injected metacharacters. Rated CVSS 9.9 with a scope change to the host; no public exploit identified at time of analysis, though the upstream fix PR ships regression tests containing working injection payloads.
Technical ContextAI
Dokploy is a free, self-hostable Platform-as-a-Service (a Heroku/Vercel-style deployment layer) that orchestrates application and database containers via Docker. The vulnerable code in packages/server/src/utils/restore/utils.ts (and the parallel backups/utils.ts) builds restore/backup commands for PostgreSQL, MariaDB, MySQL, and MongoDB by string-interpolating user-supplied values (databaseName, user, password) directly into a docker exec ... bash -c "..." template. That template is handed to Node.js child_process exec, which spawns /bin/sh -c on the host; the host shell expands $(), backticks, and quote-breakouts in databaseName before docker even runs. This is a classic CWE-77 (Improper Neutralization of Special Elements used in a Command) issue caused by unescaped interpolation across two shell layers. The fix moves all user values into docker exec -e VAR=<shell-quote-escaped> environment variables referenced as "$VAR" inside a single-quoted inner script, so the values never appear inline in shell text.
RemediationAI
Vendor-released patch: upgrade to Dokploy 0.29.13, which rewrites the backup and restore command builders to pass database name, user, and password as shell-quote-escaped docker exec -e environment variables consumed inside a single-quoted inner script (see PR https://github.com/Dokploy/dokploy/pull/4862 and commit ccd2e83c57d99f725220d37e0152270e0827d71b). Upgrading is the only complete fix. If you cannot patch immediately, restrict the blast radius by removing the backup:restore permission from all but fully trusted operators and auditing which accounts currently hold it, and treat the Dokploy control plane as host-root-equivalent by placing its web interface behind a VPN or IP allowlist so account compromise is harder - the trade-off is that legitimate restore operations become manual/gated and remote administrative access is reduced. Do not rely on input validation of database names as a substitute for the upgrade, since crafting a robust denylist across four DB engines and two shell layers is error-prone. Advisory: https://github.com/Dokploy/dokploy/security/advisories/GHSA-f7mp-9jfp-mjrr.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Same weakness CWE-77 – Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55728