Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable tRPC endpoint, trivial injection (AC:L), but requires an authenticated account (PR:L); commands run on separate SSH-connected targets justify scope change (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, Dokploy allows an authenticated user to execute arbitrary commands on a local or SSH-connected target server because registry.testRegistry and registry.testRegistryById in apps/dokploy/server/api/routers/registry.ts interpolate the password field into an execAsyncRemote shell command instead of using safeDockerLoginCommand. This issue is fixed in version 0.29.13.
AnalysisAI
Command injection in Dokploy (self-hostable PaaS) before 0.29.13 lets an authenticated user run arbitrary OS commands on the Dokploy host or any SSH-connected target server. The registry.testRegistry and registry.testRegistryById tRPC endpoints interpolate the attacker-supplied registry password directly into a shell command (echo <password> | docker ...) via execAsyncRemote instead of the safe safeDockerLoginCommand helper. Rated CVSS 9.9; no public exploit identified at time of analysis, though the fix commit publicly reveals the vulnerable code path.
Technical ContextAI
Dokploy is a Node.js/TypeScript Platform-as-a-Service that orchestrates Docker deployments across a local host and remote servers reachable over SSH. The flaw is a classic OS Command Injection (CWE-78): in apps/dokploy/server/api/routers/registry.ts, the registry 'test' handlers built a shell string echo ${input.password} | docker ${args.join(' ')} and executed it remotely with execAsyncRemote. Because the password field is concatenated into the command without escaping or parameterization, shell metacharacters (backticks, $(), ;, |, &&) in the password break out of the intended docker-login context and are executed by the target shell. The patch (PR #4875) replaces the interpolation with safeDockerLoginCommand(registryUrl, username, password), which constructs the login invocation safely rather than through string interpolation.
RemediationAI
Upgrade Dokploy to version 0.29.13 or later, which is the vendor-released patch that replaces the unsafe password interpolation with safeDockerLoginCommand (see release https://github.com/Dokploy/dokploy/releases/tag/v0.29.13 and advisory https://github.com/Dokploy/dokploy/security/advisories/GHSA-w6r4-f26v-8g36). If you cannot upgrade immediately, reduce exposure by restricting who can authenticate to the panel: disable open/self-registration, remove untrusted user accounts, and place the Dokploy web interface behind a VPN or IP allowlist so the registry test endpoints are not broadly reachable - the trade-off is reduced convenience for distributed teams and no protection against an already-authenticated malicious or compromised account. Avoid using or testing untrusted container registry credentials, and audit configured SSH-connected target servers for signs of unexpected command execution. These are stopgaps only; the interpolation flaw is code-level, so patching to 0.29.13 is the sole complete fix.
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
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
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-55799