Servers and applications
GHSA-945r-hp2m-928m
OS Command Injection via filePath in mount.deleteFileMount → HOST RCE
- Severity
- Critical 9.9
- 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 · 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
Deleting a file mount runs rm -rf where the path is built by interpolating the mount's user-controlled filePath unquoted into a shell command executed by execAsync. filePath is stored with no shell-safe validation (z.string().optional()), so an authenticated user who can create and delete a mount on a service they own obtains arbitrary command execution in the Docker-privileged host context → root on the node.
Unlike the DB changePassword family, this sink has no running-container precondition the command runs as soon as the mount is deleted which makes it the easiest to trigger.
packages/server/src/services/mount.ts:280-295 deleteFileMount:
packages/server/src/utils/filesystem/directory.ts:38-45 removeFileOrDirectory:
The remote branch (and the sibling updateFileMount, which uses … > ${quote([fullPath])} ) correctly wrap the value with shell-quote's quote(). The local branch the default single-node install driving its own host passes fullPath straight into rm -rf ${path}.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-945r-hp2m-928m
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-945r-hp2m-928m