Servers and applications
GHSA-h52x-gwf8-4h58
Cross-organization project takeover via `project.update`
- Severity
- Critical 9.9
- Published
- 12 Nov 2026
- Last changed
- 12 Nov 2026
- Added to UpHeron
- 12 Nov 2026
- Fixed in
- 0.31.1
- Weakness
- Authorization bypass through a user-controlled key (IDOR) (CWE-639)Mass assignment (CWE-915)
- Attack
- Over the network · Needs a user account · No user action needed
- Attacker can
- Read data · Change data · Take it down
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H- Sources
- Project advisories (GitHub)
Description
The project.update endpoint lets the caller set organizationId. The permission check looks at the project's current organization, and only after that does the update write whatever fields were sent, including the new organizationId.
So anyone who can update a project can move it into any other organization. There is no approval step on the receiving side, and no transfer feature in the product that this would be part of. The field is simply writable because the update schema accepts every column on the projects table.
I verified this on dokploy.com with two free accounts of my own: one API request moved a project from account A's organization into account B's organization. B was never asked. I moved it back afterwards.
A project in Dokploy contains environments, services, environment variables (secrets), domains, mounts, and schedules. Whoever owns the project's organization can read all of it.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-h52x-gwf8-4h58
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-h52x-gwf8-4h58