Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Authenticated dashboard user (PR:L) sends network requests with low complexity; injected command escapes the app to fully compromise the remote SSH host (S:C, C/I/A:H).
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, Dokploy passes user-controlled values directly into shell commands via unquoted template literal interpolation in the registry credential testing and Docker Swarm cluster management endbpoints. Both endpoints have a safe local code path (using execFileAsync or the Docker API) but a vulnerable remote path (using execAsyncRemote which runs the shell string via SSH). This vulnerability is fixed in 0.29.13.
Articles & Coverage 1
AnalysisAI
Remote command injection in Dokploy self-hosted PaaS before 0.29.13 allows an authenticated dashboard user to execute arbitrary shell commands on managed remote nodes. The registry credential-testing and Docker Swarm cluster-management endpoints interpolate user-controlled values (nodeId, imagePrefix/username driving the registry tag) into unquoted shell strings that run over SSH via execAsyncRemote. Rated CVSS 9.9 with scope change; no public standalone exploit is identified, though the public fix commit df2779e and advisory GHSA-4mfc-grxw-6858 disclose the exact vulnerable code paths and injection payloads.
Technical ContextAI
Dokploy is an open-source, self-hostable Platform-as-a-Service (a Heroku/Vercel alternative) that orchestrates Docker and Docker Swarm across local and remote nodes. The root cause is CWE-77 (Command Injection): several code paths build shell command strings with JavaScript template-literal interpolation, e.g. docker node update --availability drain ${input.nodeId}, docker node rm ${input.nodeId} --force, and registry docker tag/docker push commands where the registry tag is assembled from registryUrl/username/imagePrefix. Per the source evidence, username and imagePrefix have no schema/regex validation. Each operation has two execution paths: a safe local path using execFileAsync or the Docker API (argument-array based, not shell-parsed), and a vulnerable remote path where execAsyncRemote ships the assembled string to a remote host and executes it through /bin/sh over SSH - so metacharacters like $(...), backticks, ;, and | are interpreted by the shell. The fix wraps every interpolated value with shell-quote's quote() across cluster.ts, upload.ts, and gpu-setup.ts.
RemediationAI
Vendor-released patch: upgrade to Dokploy 0.29.13 or later, which wraps all user-controlled interpolations with shell-quote's quote() in cluster.ts, upload.ts, and gpu-setup.ts (fix commit df2779e; release https://github.com/Dokploy/dokploy/releases/tag/v0.29.13; advisory https://github.com/Dokploy/dokploy/security/advisories/GHSA-4mfc-grxw-6858). If immediate patching is not possible, reduce exposure by restricting Dokploy dashboard accounts to trusted administrators only and removing cluster-management and registry-configuration privileges from lower-trust users (trade-off: those users lose self-service node/registry management), and prefer local-only management (execFileAsync/Docker API path) over remote SSH-managed nodes where feasible, since the local path is not vulnerable (trade-off: loses multi-node remote orchestration). Network-restrict access to the Dokploy management UI so only administrators can reach the affected endpoints (trade-off: remote operators must use a VPN/bastion). These are stopgaps; upgrading to 0.29.13 is the definitive fix.
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-55684