All vulnerabilities

Servers and applications

GHSA-xmmr-fhf3-cwwj

Authenticated Remote Code Execution and Host Escape via Command Injection in Dokploy Domain Management ServiceName Field

Severity
Critical 9.9
Published
12 Nov 2026
Last changed
12 Nov 2026
Added to UpHeron
12 Nov 2026
Fixed in
0.30.0
Weakness
OS command injection (CWE-78)Code injection (CWE-94)Improper output encoding (CWE-116)
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 user with the domain.create permission can execute arbitrary shell commands inside the Dokploy container through the domain.create endpoint. The serviceName parameter is stored without sanitization and later interpolated into a shell command via an error message in the writeDomainsToCompose function, enabling command injection. This results in full container compromise, and if the Docker socket is mounted, the attacker can escape to the underlying host via a privileged container with chroot to the host filesystem.

CRITICAL: Admin and Owner privileges definitely have full, unrestricted access to exploit this vulnerability!

The vulnerability exists in a chain of three functions:

  • addDomainToCompose (in packages/server/src/utils/docker/domain.ts) throws an error containing user-controlled serviceName when the service doesn't exist in the compose file.
  • writeDomainsToCompose catches this error and interpolates the error message directly into a shell script string.
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.30.0

References