Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable web action, low complexity, but requires an authenticated certificate permission (PR:L); shell injection escapes the app to the host OS (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, the apiCreateCertificate schema in packages/server/src/db/schema/certificate.ts accepts a client-supplied certificatePath, and packages/server/src/services/certificate.ts joins that value to the certificate root without confinement. An authenticated user with certificate create or delete permission can use certificatePath to write attacker-controlled certificate content outside the intended directory or delete an out-of-root directory. This vulnerability is fixed in 0.29.13.
AnalysisAI
Server-side command injection and path traversal in Dokploy, a self-hostable Platform-as-a-Service, allows an authenticated user holding certificate create or delete permission to supply a crafted certificatePath that is concatenated into shell commands without confinement or escaping. In versions before 0.29.13, this permits writing attacker-controlled content outside the certificate root, deleting arbitrary out-of-root directories, and - because the value reaches unquoted shell invocations (echo ... base64 -d > path, rm -rf certDir) - executing operating-system commands on the host. No public exploit has been identified at time of analysis, though the fixing pull request and commit are public; the flaw is fixed in 0.29.13.
Technical ContextAI
Dokploy (cpe:2.3:a:dokploy:dokploy) is a Node.js/TypeScript self-hosted PaaS that manages TLS certificates by shelling out to a remote host. The apiCreateCertificate Zod schema in packages/server/src/db/schema/certificate.ts accepts a client-supplied certificatePath, and packages/server/src/services/certificate.ts uses it to build a certificate directory that is then interpolated directly into shell strings executed via execAsyncRemote (e.g. 'mkdir -p ${certDir}', 'echo "..." | base64 -d > "${crtPath}"', and 'rm -rf ${certDir}'). This is classified CWE-78 (OS Command Injection): because the path is neither confined to the root nor shell-escaped, both directory-traversal sequences and shell metacharacters in certificatePath are honored. The fix wraps every interpolated path in shell-quote's quote() across certificate.ts, mount.ts, backup.ts, and destination.ts, and adds a VOLUME_NAME_REGEX allowlist for related volume operations - confirming the root cause was unsanitized user input flowing into shell commands.
RemediationAI
Vendor-released patch: 0.29.13 - upgrade every Dokploy instance to v0.29.13 or later, per the release at https://github.com/Dokploy/dokploy/releases/tag/v0.29.13 and advisory GHSA-q9qw-ch66-5hw3. If immediate upgrade is not possible, the highest-value compensating control is to restrict who holds certificate create and delete permissions to a minimal set of fully trusted administrators, since exploitation requires that permission (side effect: other users lose self-service certificate management). Additionally, place the Dokploy management interface behind a VPN or IP allowlist to shrink the reachable attacker population, and audit certificate records for suspicious certificatePath values or unexpected files written outside the certificate root. These are stopgaps only; because the flaw is server-side shell injection, no configuration flag fully neutralizes it, and the code-level fix (shell-quote quoting introduced in PR #4873) is the sole complete remedy.
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-55788