All vulnerabilities

Servers and applications

GHSA-jrg5-2gj5-h827

Non-admin organisation member can gain root on the host via an unrestricted host bind-mount

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
Improper privilege management (CWE-269)Missing authorization (CWE-862)
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

A low-privilege organization member can get root on the Docker host that runs Dokploy. A member who can create a service, but who is denied Docker access (canAccessToDocker = false) and has no SSH or Traefik access, can attach a host bind-mount (type: "bind", hostPath: "/") to its own service and deploy it. The resulting container runs as uid=0(root) with the entire host filesystem mounted read-write. The mounts.create endpoint checks only whether the member may create volumes and manage the service. It does not check whether the member may mount host paths into the container.

Dokploy defines each tRPC route using a procedure type (apps/dokploy/server/api/trpc.ts). A protectedProcedure is available to any authenticated user, including a member, while an adminProcedure requires an owner or admin. Members also have permission flags such as canCreateServices, canAccessToDocker, and canAccessToSSHKeys. Dokploy checks these flags on routes that expose the corresponding features.

From Dokploy/dokploy's security advisory. Shortened; the full text is there.

Affected software

SoftwareAffected versions
DokployServers and applications · github:dokploy/dokploy
  • Every version before 0.31.1

References