Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Network-reachable tRPC call needs only a low-privileged authenticated member (PR:L, AC:L, UI:N); the missing tenant check crosses a security authority so S:C, exposing (C:H) and poisoning (I:H) another org's backups while availability is unaffected (A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Dokploy is a free, self-hostable Platform as a Service (PaaS). In 0.29.8 and earlier, backup.create, backup.update, and backup.restoreBackupWithLogs in apps/dokploy/server/api/routers/backup.ts accept a client-controlled destinationId and use the referenced destination without verifying that destination.organizationId equals ctx.session.activeOrganizationId. An authenticated member with backup permissions for a service in one organization can cause another organization's S3 accessKey and secretAccessKey to be materialized by packages/server/src/utils/backups/utils.ts getS3Credentials on the attacker's service host, read that organization's backup objects, or redirect and poison backups across tenant boundaries.
AnalysisAI
Cross-tenant authorization bypass in Dokploy 0.29.8 and earlier lets an authenticated organization member with backup permissions reach another organization's S3 backup destinations by supplying a client-controlled destinationId that is never checked against their active organization. Because the referenced destination's S3 accessKey and secretAccessKey are materialized on the attacker's service host, the attacker can read a victim tenant's backup objects and redirect or poison backups across tenant boundaries. No public exploit identified at time of analysis, but the flaw is trivially reachable and breaks the core multi-tenant isolation of the platform (CVSS 9.6, scope-changed).
Technical ContextAI
Dokploy is a self-hostable Platform-as-a-Service that manages application deployments and their backups to S3-compatible object storage, organized into isolated organizations (tenants). The vulnerability is a classic CWE-639 Insecure Direct Object Reference (IDOR/BOLA): the tRPC procedures backup.create, backup.update and backup.restoreBackupWithLogs in apps/dokploy/server/api/routers/backup.ts accept a destinationId from the client and load the corresponding destination record without asserting that destination.organizationId equals ctx.session.activeOrganizationId. The credential-handling helper getS3Credentials in packages/server/src/utils/backups/utils.ts then decrypts and materializes the referenced destination's S3 accessKey/secretAccessKey on whatever service host the attacker controls, meaning the missing ownership check directly exposes another tenant's storage credentials and data.
RemediationAI
Upgrade to the fixed release referenced in the vendor advisory GHSA-56qv-89fq-3h2q (https://github.com/Dokploy/dokploy/security/advisories/GHSA-56qv-89fq-3h2q); an exact fixed version number was not provided in the input data, so confirm the patched version directly from that advisory before deploying - patch available per vendor advisory, released version not independently confirmed here. Until patched, compensating controls include isolating tenants onto separate Dokploy instances so no cross-organization destination records exist to reference, and tightly restricting who is granted backup permissions since that role is the sole prerequisite for the attack (trade-off: legitimate members lose self-service backup management). Additionally, rotate S3 accessKey/secretAccessKey credentials for all backup destinations after patching in case they were already exposed, and audit backup destination access and object integrity for signs of cross-tenant reads or poisoning.
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 technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55685