{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","feed_url":"https://feed.craftedsignal.io/products/pterodactyl-panel--1.12.3/feed.json","home_page_url":"https://feed.craftedsignal.io/","items":[{"_cs_actors":["Unauthorized Subuser"],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Pterodactyl Panel (\u003c 1.12.3)","Pterodactyl Wings (\u003c 1.12.2)"],"_cs_severities":["high"],"_cs_tags":["privilege-escalation","vulnerability","JWT","Pterodactyl","web-server"],"_cs_type":"threat","_cs_vendors":["Pterodactyl"],"content_html":"\u003cp\u003eA significant privilege escalation vulnerability, tracked as CVE-2026-54593, affects Pterodactyl Panel versions prior to 1.12.3 and Pterodactyl Wings versions prior to 1.12.2. The flaw resides in the Wings \u003ccode\u003e/upload/file\u003c/code\u003e endpoint, which improperly validates panel-signed JSON Web Tokens (JWTs). Specifically, Wings accepts any valid JWT containing \u003ccode\u003eserver_uuid\u003c/code\u003e, \u003ccode\u003euser_uuid\u003c/code\u003e, and \u003ccode\u003eunique_id\u003c/code\u003e, irrespective of the token's intended purpose. This design flaw enables an authenticated subuser, even one with minimal permissions (e.g., only \u003ccode\u003ewebsocket.connect\u003c/code\u003e), to reuse a JWT issued for a lower-privilege operation (like WebSocket authentication or file downloads) to upload arbitrary files to the associated server. This bypasses the intended \u003ccode\u003efile.create\u003c/code\u003e permission checks, allowing unauthorized write access to the server's file system. This vulnerability affects anyone running vulnerable versions of the Pterodactyl game server management software.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAn authenticated subuser gains minimal access to a Pterodactyl server, such as the ability to connect to the server's console (requiring \u003ccode\u003ewebsocket.connect\u003c/code\u003e permission).\u003c/li\u003e\n\u003cli\u003eThe subuser makes an API request to a legitimate low-privilege endpoint on the Pterodactyl Panel, such as \u003ccode\u003e/api/client/servers/[...]/websocket\u003c/code\u003e or a file download endpoint, to obtain a panel-signed JSON Web Token (JWT).\u003c/li\u003e\n\u003cli\u003eThe Pterodactyl Panel issues a JWT containing claims like \u003ccode\u003eserver_uuid\u003c/code\u003e, \u003ccode\u003euser_uuid\u003c/code\u003e, and \u003ccode\u003eunique_id\u003c/code\u003e, which are used for various operations across the Panel and Wings.\u003c/li\u003e\n\u003cli\u003eThe subuser intercepts and extracts this JWT.\u003c/li\u003e\n\u003cli\u003eThe subuser then crafts an HTTP POST request to the Pterodactyl Wings \u003ccode\u003e/upload/file\u003c/code\u003e endpoint, including the obtained JWT as a query parameter (\u003ccode\u003e?token=\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe subuser includes arbitrary file content within the POST request, intending to upload it to the server.\u003c/li\u003e\n\u003cli\u003eThe Pterodactyl Wings component, due to improper JWT scoping validation, accepts the JWT as valid for file upload, despite the token initially being issued for a different, lower-privilege action.\u003c/li\u003e\n\u003cli\u003eWings proceeds to write the arbitrary file content to the server's file system, achieving unauthorized file upload and privilege escalation for the subuser.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eThis vulnerability allows any authenticated subuser, regardless of their specific permissions on a server, to upload arbitrary files to that server. While the attacker must already have subuser access to the target server, this flaw significantly escalates their privileges beyond what is explicitly granted, potentially leading to unauthorized data modification, execution of malicious scripts, or further system compromise. The impact is confined to the specific server the subuser has access to; users without any subuser access cannot exploit this vulnerability. The inability to properly control file uploads can lead to data integrity issues, denial of service through disk exhaustion, or remote code execution if the uploaded files are executed by vulnerable services on the server.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePatch CVE-2026-54593\u003c/strong\u003e: Upgrade Pterodactyl Panel to version 1.12.3 or newer, and Pterodactyl Wings to version 1.12.2 or newer immediately to mitigate CVE-2026-54593.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDeploy the Sigma rule\u003c/strong\u003e: Implement the provided Sigma rule in your SIEM to detect suspicious file upload attempts on the Pterodactyl Wings \u003ccode\u003e/upload/file\u003c/code\u003e endpoint. Tune this rule by identifying and allowlisting legitimate uses of this endpoint.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnable webserver logging\u003c/strong\u003e: Ensure detailed webserver access logs are enabled for your Pterodactyl Wings instance to capture HTTP requests, including method, URI, query parameters, and status codes, which are crucial for detecting this activity.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-07-28T15:44:29Z","date_published":"2026-07-28T15:44:29Z","id":"https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-jwt-scoping/","summary":"A privilege escalation vulnerability, CVE-2026-54593, exists in Pterodactyl's Wings component that allows authenticated subusers to upload arbitrary files to a server without explicit file creation permissions, due to insufficient validation of panel-signed JSON Web Tokens (JWTs.","title":"Pterodactyl Wings Privilege Escalation via Improper JWT Scoping (CVE-2026-54593)","url":"https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-jwt-scoping/"}],"language":"en","title":"CraftedSignal Threat Feed - Pterodactyl Panel (\u003c 1.12.3)","version":"https://jsonfeed.org/version/1.1"}