Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable via the deploy UI/API with low complexity, but requires a deployment-permitted member account (PR:L); host command execution escapes the app scope (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, packages/server/src/utils/providers/git.ts parses the user-controlled customGitUrl with sanitizeRepoPathSSH and interpolates its domain into the ssh-keyscan command from addHostToKnownHostsCommand without shell quoting, allowing an authenticated member with service deployment permission and an attached SSH key to execute arbitrary commands on the Dokploy host during deployment. This issue is fixed in version 0.29.13.
AnalysisAI
OS command injection in Dokploy self-hosted PaaS before 0.29.13 lets an authenticated member with service-deployment permission and an attached SSH key run arbitrary commands on the Dokploy host. The flaw lives in the custom-Git deployment path, where the host portion of a user-supplied customGitUrl is interpolated unquoted into an ssh-keyscan shell command that executes during deployment. No public exploit is identified at time of analysis, but the fix commit is public and the trigger is trivial for anyone with deploy rights.
Technical ContextAI
Dokploy builds shell command strings in packages/server/src/utils/providers/git.ts and passes them to /bin/sh -c (locally via execAsync or remotely via execAsyncRemote). The custom-Git provider takes a user-controlled customGitUrl, parses it with sanitizeRepoPathSSH, and passes the extracted domain to addHostToKnownHostsCommand, which built ssh-keyscan -p ${port} ${domain} >> ${knownHostsPath} || true; with no shell quoting. This is a textbook CWE-78 (OS Command Injection) via unsanitized interpolation of attacker data into a shell context; the domain field is the injection point, so shell metacharacters ($(...), ;, backticks, |) in the hostname break out of the ssh-keyscan argument and execute as separate commands. The vendor's fix introduces a shellWord() helper (wrapping shell-quote's quote()) applied across all Git providers - bitbucket, gitea, github, gitlab and the generic git path - and casts port with Number(), indicating the branch name, clone URL, output path and other fields shared the same unsafe pattern. Affected CPE: cpe:2.3:a:dokploy:dokploy:*:*:*:*:*:*:*:* (all versions prior to 0.29.13).
RemediationAI
Vendor-released patch: 0.29.13 - upgrade to Dokploy v0.29.13 or later (https://github.com/Dokploy/dokploy/releases/tag/v0.29.13), which routes user-controlled Git fields through the new shellWord() shell-quoting helper. Until you can upgrade, reduce the attack surface by tightly restricting who holds service-deployment permission and the ability to attach SSH keys, since exploitation depends on those grants; treat every member with deploy rights as effectively having host shell access. As a targeted interim control, avoid or disable use of the custom Git URL deployment path (the customGitUrl/generic-git provider) and prefer the managed GitHub/GitLab app integrations, and audit existing services for suspicious customGitUrl domain values containing shell metacharacters - the trade-off is loss of arbitrary self-hosted Git source support until patched. Review the GHSA advisory (https://github.com/Dokploy/dokploy/security/advisories/GHSA-6693-xv3f-69px) for authoritative guidance.
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
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
Remote command injection in Dokploy self-hosted PaaS before 0.29.13 allows an authenticated dashboard user to execute ar
Same weakness CWE-78 – OS Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55689