All vulnerabilities

Servers and applications

GHSA-5qmc-4xhw-j6vp

Traefik rule injection via unsanitized host and path fields — cross-tenant traffic hijack

Severity
Critical 9.6
Published
12 Nov 2026
Last changed
12 Nov 2026
Added to UpHeron
12 Nov 2026
Fixed in
0.31.1
Weakness
Injection (CWE-74)Improper output encoding (CWE-116)
Attack
Over the network · Needs a user account · No user action needed
Attacker can
Read data · Change data
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Sources
Project advisories (GitHub)

Description

Any authenticated Dokploy user can inject arbitrary Traefik router rules by setting their application domain's host or path to a value containing backtick or pipe characters. Because Traefik routing rules are applied globally, the injected rule can match traffic destined for other users' applications on the same Dokploy instance, enabling cross-tenant traffic interception.

File: packages/server/src/utils/traefik/domain.ts

Vector A — host field via toPunycode() catch fallback (line ~84, ~92):

The backtick character () is a WHATWG "forbidden domain code point," so new URL("http://evil\host") throws a TypeError. The catch block returns the raw, unmodified host` string — including the injected backtick. That string is then interpolated directly into the Traefik router rule.

The path field is interpolated with no validation:

Only min(1) and trim-check. No character allowlist. Backticks, pipes, and parentheses all pass validation and reach the Traefik config.

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