Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-exploitable by any authenticated Compose editor (AV:N, PR:L); low complexity; full C/I/A impact on Dokploy host; scope unchanged as the host is the primary impacted system.
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, sanitizeCommand in packages/server/src/utils/builders/compose.ts only trims whitespace and strips surrounding quotes from compose.command before exportEnvCommand and docker command interpolation, allowing an authenticated user who can update a Compose service to inject shell metacharacters and execute arbitrary commands on the Dokploy host. This issue is fixed in version 0.29.13.
AnalysisAI
Shell command injection in Dokploy exposes the underlying host OS to arbitrary command execution by any authenticated user with Compose service edit permissions. The flaw is in the sanitizeCommand function within packages/server/src/utils/builders/compose.ts, which stripped only whitespace and surrounding quotes before interpolating user-supplied compose.command values into live shell invocations such as docker ${command} - leaving semicolons, pipe operators, backticks, and subshell substitutions entirely intact. Working exploit payloads (semicolons, $(subshell), pipes, backtick substitution) are publicly available in the fix PR test suite at https://github.com/Dokploy/dokploy/pull/4863; no CISA KEV listing exists at time of analysis, and the vendor-confirmed patch is available in v0.29.13.
Technical ContextAI
Dokploy is a self-hosted, open-source Platform as a Service built atop Docker Compose and Docker Swarm stack management. The vulnerable code path originates in packages/server/src/utils/builders/compose.ts where the sanitizeCommand function accepted a user-controlled compose.command string, applied only .trim() and quote-character stripping, then inserted the result unsanitized into shell command strings. The same pattern affected appName and composePath interpolation in both the compose builder and packages/server/src/services/compose.ts, where values like compose.appName were embedded directly into env -i PATH=$PATH docker compose -p ${compose.appName} -f ${path} up -d without escaping. CWE-78 (Improper Neutralization of Special Elements Used in an OS Command) precisely describes the root cause: user-controlled data entered a shell execution context without proper neutralization. The fix in PR #4863 introduced the shell-quote library to properly shell-escape appName, path, and envFilePath arguments throughout the codebase, and added a strict regex blocklist (/[;&|`$(){}<> \\]/) on compose command fields that throws an error rather than attempting to sanitize dangerous input. CPE cpe:2.3:a:dokploy:dokploy:*:*:*:*:*:*:*:* covers all affected pre-fix versions.
RemediationAI
Upgrade to Dokploy v0.29.13 immediately - this is the vendor-confirmed patched release (https://github.com/Dokploy/dokploy/releases/tag/v0.29.13), which replaces unsafe raw string interpolation with shell-quote escaping for appName, composePath, and envFilePath arguments throughout both the compose builder and compose service, and adds regex validation that rejects shell control characters in user-supplied compose command fields. The fix is backwards-compatible and has no documented side effects on legitimate compose workflows, as confirmed by the test cases in PR #4863 that verify benign commands like compose -f docker-compose.yml -p app up -d --build pass through correctly. If an immediate upgrade is not feasible, restrict Compose service edit permissions exclusively to fully trusted administrative accounts - this narrows the exploitable attack surface but does not eliminate the vulnerability, as any remaining Compose editor retains exploitation capability. There is no documented configuration toggle or network-layer control that removes the vulnerable code path while preserving Compose deployment functionality.
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-55794