Servers and applications
GHSA-q7cq-vxv7-449c
Authenticated directory traversal in `patch.readRepoDirectories` lets any member enumerate the file tree of any git repository on the host, including other tenants' source
- Severity
- Medium 5.0
- 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 some data
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N- Sources
- Project advisories (GitHub)
Description
The patch.readRepoDirectories tRPC procedure takes a repoPath string straight from the caller and runs git ls-tree inside it. The value is never confined to the caller's own patch-repo directory, so a member with read access to one service can point repoPath at any path on the host (or a managed server) and list the tracked files of the git repository there — for example another organization's deployed application source under /etc/dokploy/applications//code. It is cross-tenant information disclosure of directory and file names.
From apps/dokploy/server/api/routers/patch.ts:
And the sink in packages/server/src/services/patch-repo.ts:
repoPath is attacker-controlled and absolute. quote() (added for GHSA-56g6, which was a command-injection issue in this same function) blocks shell metacharacters, but the directory itself is still whatever the caller asks for.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-q7cq-vxv7-449c
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-q7cq-vxv7-449c