CVE-2026-54593 json
Pterodactyl's improper JWT scoping allows subuser to upload files when not explicitly granted `file.create` permissions
published 2026-07-28 3 mo ago modified 2026-10-24 15 d ago also GHSA-8r6w-3qq5-4p4r , GO-2026-6120 , EUVD-2026-49880
- cvss
- 8.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.7%
- EPSS 0.7% chance of exploitation in 30 days, percentile 52%
- public exploits
- 0
- none known
Summary
Pterodactyl is a free, open-source game server management panel. Prior to Panel version 1.12.3 and Wings version 1.12.2, the Wings /upload/file endpoint accepted any valid panel-signed JWT that contained server_uuid, user_uuid, and unique_id claims without checking the token's intended purpose; because the Panel issues JWTs carrying those same claims for lower-privilege operations such as WebSocket authentication and file-download links, an authenticated subuser could reuse one of those tokens (for example a WebSocket token obtained with only the websocket.connect permission) by replaying it against /upload/file to write arbitrary files to the same server, despite never being granted the file.create permission. This issue is fixed in Panel version 1.12.3 and Wings version 1.12.2.
Patch / fix
- packagist pterodactyl/panel 1.12.3
- go github.com/pterodactyl/wings 1.12.2
- govulncheck-vulndb SLES for SAP applications 16.0, SLES 16.0 0.0.20260827T195228-160000.1.1
suse advisories SUSE-SU-2026:23625-1
- govulncheck-vulndb openSUSE Leap 16.0 0.0.20260827T195228-160000.1.1
opensuse advisories openSUSE-SU-2026:21761-1
- github.com/pterodactyl/panel@7ffcd63 commit
- github.com/pterodactyl/wings@d0ddc80 commit
- github.com/pterodactyl/panel#5636 pull request
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- total
- Assessed
- 3 mo ago
Exploit prediction
0.68% chance of exploitation in the next 30 days, higher than 52% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 8.1 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H |
| GitHub | 3.1 | 8.1 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| packagist | pterodactyl/panel | <1.12.3 |
1.12.3 |
| go | github.com/pterodactyl/wings | <1.12.2 |
1.12.2 |
Affected products
- pterodactyl panel
Classification
References
-
github.com
/pterodactyl/panel/pull/5636
web
-
github.com
/pterodactyl/panel/commit/7ffcd636310bb72b54bac3280d2a15e727feded7
web
-
github.com
/pterodactyl/wings/commit/d0ddc80844479302abdaf9654de3bacd511c0f5c
web, patch
-
github.com
/pterodactyl/panel/security/advisories/GHSA-8r6w-3qq5-4p4r
web, advisory
-
github.com
/pterodactyl/panel
package
Sources
- CVE List CVE-2026-54593
- GitHub Advisory GHSA-8r6w-3qq5-4p4r
- NVD CVE-2026-54593
- OSV GO-2026-6120
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.