Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
A low-privileged account suffices (PR:L) and it is network-reachable (AV:N), but exploitation depends on an egg rendering a user-editable variable into a config file (AC:H); stolen token enables full-node compromise, so S:C and C/I/A:H.
Primary rating from Vendor (https://github.com/pterodactyl/wings).
CVSS VectorVendor: https://github.com/pterodactyl/wings
Lifecycle Timeline
3DescriptionCVE.org
Impact
Type: Exposure of sensitive information / insufficiently protected credentials leading to privilege escalation and full node compromise.
Wings exposes its entire daemon configuration to the egg configuration-file templating engine. When Wings renders a server's configuration files, any {{config.<path>}} placeholder in a replacement value is resolved against the full marshalled daemon configuration, with no restriction on which paths may be read.
Because the Panel substitutes user-controlled egg variable values into these replacements before sending them to Wings, a low-privileged user can smuggle a {{config.*}} placeholder through a variable value. The placeholder is then resolved by Wings and written into a file inside the user's own server, where it can be read via the file manager or SFTP.
This allows reading, among other values:
{{config.token}}- the node's daemon token, which is both the API bearer for
the Panel⇆Wings channel and the HMAC signing key for every JWT the node issues;
{{config.token_id}};{{config.docker.registries}}- configured container-registry credentials.
Who is impacted: Any deployment where a user who is not fully trusted can set an egg variable value (e.g. a server owner or a subuser with the startup.update permission) and the server's egg renders a user-editable variable into a configuration file via {{server.build.env.*}}. This pattern is common across stock and community eggs, so most multi-tenant / shared-hosting deployments are affected.
Resulting impact: Disclosure of the node daemon token lets the attacker forge authentication tokens and act against every server on that node, a full-node compromise reachable from a low-privileged account.
Patches
Yes. Fixed in Wings v1.12.3 (Panel is unaffected; the fix is Wings-only).
Wings no longer exposes its full configuration to the templating engine only an explicit, non-secret subset (the Docker network interface) can be resolved by {{config.*}} placeholders.
Users should upgrade Wings to v1.12.3 or later.
After upgrading, rotate the affected nodes' daemon tokens, since a previously exfiltrated token remains valid until rotated (Admin → Nodes → Configuration → reset the token, then re-deploy config.yml to the node).
Workarounds
For operators who cannot upgrade immediately:
- Audit your eggs and ensure no user-editable variable is rendered into a
configuration file, or mark such variables non-editable.
These reduce exposure but are not a complete fix; upgrading Wings is the recommended action.
Articles & Coverage 1
AnalysisAI
Sensitive-credential disclosure leading to full node compromise in Pterodactyl Wings before v1.12.3 lets a low-privileged, authenticated panel user (a server owner or a subuser holding startup.update) smuggle a {{config.*}} placeholder through a user-editable egg variable, causing Wings to resolve it against its entire daemon configuration and write secrets - including the node daemon token, token_id, and Docker registry credentials - into a file the user can read via the file manager or SFTP. Because the daemon token is both the Panel⇆Wings API bearer and the HMAC signing key for every JWT the node issues, an attacker can then forge tokens and act against every server on the node. No public exploit identified at time of analysis and it is not listed in CISA KEV, but the CVSS is 9.9 and the affected templating pattern is common across stock and community eggs.
Technical ContextAI
Pterodactyl is a widely used open-source game-server management platform split into a Panel (web control plane) and Wings (the Go daemon running on each node to manage Docker containers). Wings renders per-server configuration files using an 'egg' templating engine in which {{config.<path>}} placeholders are resolved against the daemon's own configuration. The root cause (CWE-200, Exposure of Sensitive Information) is that Wings marshalled its full config.Get() object and let jsonparser.Get() resolve any path within it, with no allow-list of readable keys. The fix commit (parser/parser.go) replaces json.Marshal(config.Get()) with a narrow templatableConfig struct exposing only docker.network.interface, and parser/helpers.go now refuses to substitute Object/Array JSON types - confirming that whole secret subtrees such as docker.registries were previously reachable. The trust-boundary failure is that the Panel forwards user-controlled egg variable values (rendered via {{server.build.env.*}}) into these replacements before Wings resolves them, so untrusted input reaches a privileged config lookup.
RemediationAI
Vendor-released patch: Wings v1.12.3 - upgrade every affected node's Wings daemon to v1.12.3 or later, which restricts {{config.*}} resolution to a non-secret subset (only the Docker network interface). Patching alone is insufficient: because a previously exfiltrated daemon token stays valid until rotated, after upgrading you must rotate each affected node's daemon token via Admin → Nodes → Configuration → reset the token, then redeploy config.yml to the node. For operators who cannot upgrade immediately, the vendor workaround is to audit all eggs and ensure no user-editable variable is rendered into a configuration file, or mark such variables non-editable - this reduces exposure but is not a complete fix and carries the trade-off of removing legitimate user customization of those variables. See the advisory at https://github.com/pterodactyl/wings/security/advisories/GHSA-pfvc-3p5h-x7h6.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2
Same weakness CWE-200 – Information Exposure
View allSame technique Privilege Escalation
View allVendor StatusVendor
SUSE
Severity: Critical| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51568
GHSA-pfvc-3p5h-x7h6