Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate as low-privileged server owner
-
DeliveryInject {{config.token}} into user-editable egg variable
-
ExploitWings renders placeholder against full daemon config
-
InstallSecret written into server config file
-
C2Read token via file manager or SFTP
-
ExecuteForge JWTs with stolen daemon token
-
ImpactCompromise every server on node
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated low-privileged panel account that can set an egg variable value - a server owner, or a subuser with the startup.update permission (PR:L). The decisive limiting precondition is that the server's egg must render a user-editable variable into a configuration file via a {{server.build.env.*}} substitution; if no user-editable variable is written into a config file (or such variables are marked non-editable), the placeholder is never resolved and the attack fails. The attacker must then be able to read the rendered file, i.e. have file-manager or SFTP access to their own server. No admin/end-user interaction is needed and exploitation is network-reachable. This egg pattern is common across stock and community eggs, so most multi-tenant / shared-hosting Wings deployments before v1.12.3 meet the condition, while single-tenant or fully-trusted deployments generally do not present a meaningful trust boundary to cross. |
| Impact | The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, 9.9) reflects a genuinely severe outcome: network-reachable, low-complexity, only low privileges (a normal server owner) needed, no user interaction, and a scope change because disclosure of the daemon token cascades into control of every server on the node. Two signals temper raw urgency: it is not in CISA KEV (no confirmed active exploitation) and no POC is referenced, so treat this as high-priority-but-not-yet-exploited. One important caveat: the base vector marks AC:L, but exploitation also requires that the target server's egg actually render a user-editable variable into a configuration file - a real precondition the vector does not capture (arguably AC:H or an attack requirement). No EPSS score or SSVC decision data was provided and none can be cited. Net: for multi-tenant / shared game-hosting operators this is a top-priority patch because the direct impact is full-node compromise from a cheap account; for single-tenant or fully-trusted deployments the practical risk is materially lower. |
| Exploit ScenarioDerived | A customer on a shared game-hosting node who owns a single low-tier server (or a subuser granted startup.update) edits an egg variable that the egg renders into a server config file, setting its value to include {{config.token}}. Wings resolves the placeholder against its full daemon configuration and writes the node's daemon token into the file, which the attacker reads back over SFTP or the panel file manager; they then use that token to forge JWTs and issue privileged Wings API calls against every other server on the node. No POC is publicly referenced, but the attack requires only a normal account and low complexity. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 31, 2026
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.
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.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
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.
Know when Docker gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
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
DescriptionCVE.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
Executive ViewAI
Pterodactyl Wings versions before v1.12.3 contain a critical credential disclosure vulnerability that allows any low-privileged authenticated panel user to extract daemon credentials and compromise all servers on a node. Although no public exploit identified at time of analysis, the attack is straightforward to execute for users with basic startup permissions and represents a severe risk to organizations using Pterodactyl Wings for game server hosting or containerized infrastructure management. Immediate patching is essential to prevent full infrastructure compromise.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system
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
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 |
EUVD-2026-51568
GHSA-pfvc-3p5h-x7h6
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB