Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network API reachable (AV:N), no special conditions (AC:L), requires an authenticated member with compose/deploy rights (PR:L), no interaction (UI:N); command execution breaks out of the app into the Docker-privileged host (S:C) with full C/I/A loss.
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 compose.update operation stores an unvalidated composePath that packages/server/src/utils/builders/compose.ts and packages/server/src/services/compose.ts interpolate into docker compose -f, docker stack deploy -c, and touch shell commands executed through /bin/sh -c. An authenticated member with compose write and deploy permission can supply a crafted composePath, trigger compose.deploy or startCompose, and execute arbitrary operating-system commands in the Docker-privileged Dokploy host context. This issue is fixed in version 0.29.13.
Articles & Coverage 1
AnalysisAI
OS command injection in Dokploy self-hosted PaaS prior to 0.29.13 lets an authenticated project member with compose write and deploy permissions execute arbitrary commands on the Docker-privileged host. The compose.update operation persists an unvalidated composePath that is later interpolated verbatim into docker compose -f, docker stack deploy -c, and touch commands run via /bin/sh -c, so a crafted path fires shell metacharacters when the compose is deployed. No public exploit identified at time of analysis and the issue is not listed in CISA KEV, but the upstream regression test suite demonstrates working injection payloads, making the path to exploitation well-understood.
Technical ContextAI
Dokploy is a Heroku/Vercel-style open-source platform-as-a-service that orchestrates Docker containers and Swarm stacks on a host it controls with privileged Docker access. The flaw is a classic CWE-78 OS Command Injection: user-controllable string fields (composePath, appName, and env file path) flow from the compose.update API into command builders in packages/server/src/utils/builders/compose.ts and packages/server/src/services/compose.ts, where they are string-concatenated into shell command lines (docker compose -p <appName> -f <path> up -d, docker stack deploy -c <path> <appName>, and touch <envFilePath>) that are executed through /bin/sh -c. Because no escaping was applied, shell control characters in these fields break out of the intended docker invocation. The fix wraps every interpolated value with shell-quote's quote() and additionally rejects any custom compose command containing the metacharacter set [;&|\$(){}<>\n\\]`. CPE cpe:2.3:a:dokploy:dokploy:*:*:*:*:*:*:*:* confirms the Dokploy application itself is the affected component.
RemediationAI
Vendor-released patch: upgrade to Dokploy 0.29.13 (release https://github.com/Dokploy/dokploy/releases/tag/v0.29.13), which introduces shell-quote escaping of composePath, appName, and env-file paths plus a metacharacter denylist on custom compose commands, per advisory GHSA-8r5w-vqjr-8c44 and PR #4863. Upgrading is the definitive fix and should be prioritized. Until you can patch, the actionable compensating control is to tightly restrict who holds compose write and deploy permissions - revoke deploy/compose-write from all but fully trusted operators, since the exploit is gated on that permission (trade-off: legitimate self-service deploys by team members are blocked). Additionally audit existing compose configurations for anomalous composePath values containing shell metacharacters (;, |, &, backticks, $(), and monitor the Dokploy host for unexpected child processes of /bin/sh -c under the docker deploy flow; these detective controls do not prevent injection but can catch abuse. Given the host runs with privileged Docker access, treat any suspected exploitation as full host compromise and rebuild accordingly.
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-78 – OS Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55723