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
- 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.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-5qmc-4xhw-j6vp
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-5qmc-4xhw-j6vp