Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable authenticated endpoint (PR:L) with no user interaction and low complexity; app-to-OS command execution justifies scope change and full C/I/A host 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, the backup.listBackupFiles tRPC endpoint in apps/dokploy/server/api/routers/backup.ts passes the search parameter through normalizeS3Path and interpolates it into an rclone lsjson command executed by child_process.exec(), allowing an authenticated user with backup:read permission to execute arbitrary commands on the Dokploy host. 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 with backup:read permission run arbitrary OS commands on the Dokploy host. The backup.listBackupFiles tRPC endpoint routes an attacker-controlled search parameter through normalizeS3Path and interpolates it unescaped into an rclone lsjson string executed via child_process.exec(). No public exploit identified at time of analysis, but the root cause and fix are confirmed in the vendor commit and the CVSS 9.9 rating reflects full host compromise from a low-privilege application role.
Technical ContextAI
Dokploy is a Node.js/TypeScript Platform-as-a-Service used to deploy and manage applications, databases, and backups on a self-hosted server. The vulnerable code path builds a shell command line for rclone (a cloud-storage sync tool) to list S3 backup files, then executes it through child_process.exec(), which spawns /bin/sh -c and therefore interprets shell metacharacters. Because the user-supplied search value was placed inside a double-quoted argument with no escaping, characters such as ", $(...), backticks, or ; break out of the intended argument and become additional shell commands. This is the classic CWE-78 (OS Command Injection) pattern: untrusted input concatenated into a string handed to a shell interpreter. The vendor fix imports shell-quote and wraps every interpolated value (searchPath, S3 access key/secret/region/endpoint/provider, and multiple restore paths) with quote([...]), neutralizing the metacharacters across backup, destination, and restore routines.
RemediationAI
Vendor-released patch: upgrade Dokploy to 0.29.13 or later, which replaces the vulnerable string interpolation with shell-quote's quote() across the backup, destination, and restore command builders (fix commit eeb6e7b8ea88e4b4b1fac8460755464100516ac9; release https://github.com/Dokploy/dokploy/releases/tag/v0.29.13). If you cannot upgrade immediately, reduce exposure by revoking the backup:read permission from all non-trusted users and auditing which accounts currently hold it, since that permission is the entry condition; treat backup/destination management as an admin-only function until patched. As additional compensating controls, restrict network access to the Dokploy management UI/API to a trusted VPN or admin network so the authenticated endpoint is not broadly reachable, and monitor the host for unexpected child processes spawned from the Dokploy/rclone process tree. These controls reduce reachable attacker population but do not remove the underlying injection, so patching remains the only complete fix; review the GHSA-5vjv-73wr-rf79 advisory for vendor 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
OS command injection in Dokploy self-hosted PaaS before 0.29.13 lets an authenticated member with service-deployment per
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-55686