Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network tRPC API with low-complexity calls, only a low-privilege member account (PR:L), no interaction, and escalation from tenant context to root on the host (S:C) fully compromising C/I/A.
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). From 0.29.2 until 0.29.13, schedule.create and schedule.update in apps/dokploy/server/api/routers/schedule.ts derive serviceId from applicationId or composeId and execute the owner/admin host-schedule gate only in the alternative branch, allowing a member with access to one application to attach its applicationId to a dokploy-server schedule and run a supplied script as root through schedule.runManually. This issue is fixed in version 0.29.13.
AnalysisAI
Privilege escalation to root in Dokploy (self-hosted PaaS) versions 0.29.2 through 0.29.12 lets a low-privilege organization member who has access to a single application escalate to full host command execution. Because schedule.create/schedule.update derive the internal serviceId from applicationId or composeId but only enforce the owner/admin host-schedule gate in the alternate branch, a member can bind their applicationId to a 'dokploy-server' (host-level) schedule and execute an arbitrary supplied script as root via schedule.runManually. No public exploit identified at time of analysis; fixed in 0.29.13.
Technical ContextAI
Dokploy is a Node.js/TypeScript, self-hostable Heroku/Vercel-style Platform-as-a-Service that manages applications, Docker Compose stacks, and host servers, exposing its API through tRPC routers. The flaw lives in apps/dokploy/server/api/routers/schedule.ts, where 'scheduleType' can be application, compose, server, or 'dokploy-server' (the Dokploy host itself). The root cause is CWE-269 (Improper Privilege Management): the authorization logic branched on how serviceId was resolved, so the owner/admin gate and organization ownership checks that should protect host-level ('server'/'dokploy-server') schedules were reachable only in one code path, leaving the applicationId-driven path ungated. The fix centralizes enforcement into a single assertHostScheduleAccess(ctx, scheduleType, serverId) helper invoked in create, update, and run paths. The affected component is cpe:2.3:a:dokploy:dokploy across all versions in the 0.29.2-0.29.12 range.
RemediationAI
Vendor-released patch: upgrade to Dokploy 0.29.13, which introduces the centralized assertHostScheduleAccess gate across schedule create, update, and run (release: https://github.com/Dokploy/dokploy/releases/tag/v0.29.13; fix PR https://github.com/Dokploy/dokploy/pull/4869; commit 1e3f10bd22c1c28a7b65a2d7ac15a0a5e47599eb). Until you can upgrade, reduce exposure by not granting organization membership to untrusted users and by keeping every member at owner/admin only where you fully trust them (the vulnerability lets any lower-privilege member reach host execution, so restricting who has member accounts directly limits the attack surface); where feasible, avoid using host-level ('dokploy-server') schedules and audit existing schedules and their runManually usage for scripts you did not create. These are stopgaps with the trade-off of reduced delegation and collaboration - they do not fully close the code-path gap, so patching to 0.29.13 remains the only complete fix. Details: https://github.com/Dokploy/dokploy/security/advisories/GHSA-r89g-h7x9-phr2.
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-269 – Improper Privilege Management
View allSame technique Privilege Escalation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55797