Servers and applications
GHSA-fr95-6x4c-3c5g
Dokploy member users can read the global web-server SSH private key through settings.getWebServerSettings
- Severity
- Medium 6.5
- Published
- 12 Nov 2026
- Last changed
- 12 Nov 2026
- Added to UpHeron
- 12 Nov 2026
- Fixed in
- 0.31.1
- Attack
- Over the network · Needs a user account · No user action needed
- Attacker can
- Read data
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N- Sources
- Project advisories (GitHub)
Description
Dokploy 0.29.13 allows any authenticated member user to call settings.getWebServerSettings and receive the global web-server settings object.
That object includes the stored sshPrivateKey value. The write endpoint for the same key is admin-only, but the read endpoint is only authenticated-user protected.
In my proof, an owner stores an SSH private key through the normal admin-only mutation. A default member user cannot overwrite that key, but the same member user can read it back through settings.getWebServerSettings.
The access-control boundary is inconsistent:
- settings.saveSSHPrivateKey is an adminProcedure.
- settings.getWebServerSettings is a protectedProcedure.
- The returned settings object includes the sshPrivateKey field.
Relevant source locations in Dokploy 0.29.13:
- apps/dokploy/server/api/routers/settings.ts:87: getWebServerSettings is registered as protectedProcedure.
- apps/dokploy/server/api/routers/settings.ts:91: the full settings object is returned.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-fr95-6x4c-3c5g
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-fr95-6x4c-3c5g