Servers and applications
GHSA-j4h6-55cr-j72v
Stored XSS via unsanitized whitelabeling `customCss` (`</style>` breakout) - enterprise-license-gated; patched in canary after v0.30.5
- Severity
- Medium 4.8
- Published
- 12 Nov 2026
- Last changed
- 12 Nov 2026
- Added to UpHeron
- 12 Nov 2026
- Fixed in
- 0.31.1
- Weakness
- Cross-site scripting (CWE-79)Cross-site scripting (CWE-80)Improper output encoding (CWE-116)
- Attack
- Over the network · Needs an administrator account · Needs someone to click or open something
- Attacker can
- Read some data · Change some data
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N- Sources
- Project advisories (GitHub)
Description
The enterprise "whitelabeling" feature stores an operator-supplied customCss string and injects it verbatim into a `
sequence in customCss closes the style element and allows arbitrary HTML/JS to follow (e.g. ), yielding stored cross-site scripting. Because the whitelabeling config is served by the public whitelabeling.getPublic procedure and rendered on every page - including the unauthenticated login page - the payload executes in the browser of every visitor and user.
Important scope / severity caveat (validated): both the write and the read of customCss are enterprise-license-gated. Setting it requires whitelabeling.update (an enterpriseProcedure), and the public render path (getPublicWhitelabelingConfig) returns null unless hasAnyValidLicense() is true. On an instance without a valid enterprise license this feature is inert and the vulnerability is not exploitable - so it primarily affects enterprise-licensed deployments, and the actor is a licensed instance owner/admin.
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-j4h6-55cr-j72v
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-j4h6-55cr-j72v