All vulnerabilities

Servers and applications

GHSA-gw29-hh29-xhfr

Member API key can list all containers and read logs of any container on the server via compose.readLogs

Severity
High
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)Missing authorization (CWE-862)
Sources
Project advisories (GitHub)

Description

A user with the member role, restricted to a single project and service, can read the logs of any container on the same Docker host. That includes containers of other projects and Dokploy's own service containers. Two authorization gaps combine:

  • compose.readLogs authorizes the caller against composeId, but never checks that containerId belongs to that compose.
  • docker.getContainersByAppNameMatch only requires service: read, which every member has by default. It does not limit results to services the member can access, so it returns container ids and names for other projects.

Cross-project confidentiality break for any member, and for any API key or AI agent acting as one. Application logs often contain secrets, tokens, personal data and internal URLs, and Dokploy's own logs may expose platform details. This defeats per-project API keys as an isolation boundary for logs, even though settings, environment variables and deployments are correctly refused.

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