Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable web action needing only low-privileged deployment permission (PR:L, AV:N, AC:L); injected commands escape the app to run on the host OS, giving a scope change (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, application.saveBitbucketProvider stores bitbucketOwner and bitbucketRepository without validation and cloneBitbucketRepository in packages/server/src/utils/providers/bitbucket.ts interpolates those values into git clone commands executed through execAsync or execAsyncRemote, allowing a member with service deployment permission to execute arbitrary operating system commands on the Dokploy host or target server. This issue is fixed in version 0.29.13.
AnalysisAI
OS command injection in Dokploy (self-hosted PaaS) before 0.29.13 lets a low-privileged team member with service-deployment permission run arbitrary commands on the Dokploy host or a connected target server. The saveBitbucketProvider endpoint persists attacker-controlled bitbucketOwner and bitbucketRepository values without validation, and cloneBitbucketRepository later interpolates them straight into git clone commands run via execAsync/execAsyncRemote. There is no public exploit identified at time of analysis, but the fix (0.29.13) ships regression tests demonstrating the injection payloads, so the mechanism is well documented.
Technical ContextAI
Dokploy is an open-source, self-hostable Platform-as-a-Service (a Heroku/Vercel alternative) that orchestrates container deployments and integrates with Git providers including Bitbucket. The flaw is a classic CWE-78 OS Command Injection: in packages/server/src/utils/providers/bitbucket.ts the clone routine builds a shell string of the form git clone --branch <branch> ... <cloneUrl> <outputPath> and executes it through a shell (execAsync locally or execAsyncRemote over SSH). Because Bitbucket owner/repository/branch values are stored unvalidated and concatenated rather than passed as separated arguments, shell metacharacters ($( ), backticks, ;, &&, |) in those fields are interpreted by the shell. The CPE cpe:2.3:a:dokploy:dokploy:*:*:*:*:*:*:*:* confirms the affected product is the Dokploy application itself across all versions prior to the fix. The upstream patch introduces a shellWord() escaping helper and applies it across the Bitbucket, generic Git, and Gitea providers.
RemediationAI
Vendor-released patch: upgrade to Dokploy 0.29.13 or later (release https://github.com/Dokploy/dokploy/releases/tag/v0.29.13), which introduces a shellWord() shell-escaping helper applied to the Bitbucket, Git, and Gitea clone routines; see advisory GHSA-grrj-6xrh-j6vp and PR #4855. If you cannot patch immediately, reduce exposure by restricting who holds service-deployment permission to a minimal set of fully trusted operators, since that role is the prerequisite for exploitation; avoid delegating deployment rights in multi-tenant setups. As an additional compensating control, audit and constrain existing Bitbucket provider configurations (bitbucketOwner/bitbucketRepository/branch) for shell metacharacters, and where feasible run the Dokploy host with reduced blast radius (least-privilege service account, network segmentation for any execAsyncRemote target servers) - noting this does not close the injection, only limits post-exploitation reach. These are stopgaps only; upgrading 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
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-55733