<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pterodactyl - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/pterodactyl/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 28 Jul 2026 15:44:29 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/pterodactyl/feed.xml" rel="self" type="application/rss+xml"/><item><title>Pterodactyl Wings Privilege Escalation via Improper JWT Scoping (CVE-2026-54593)</title><link>https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-jwt-scoping/</link><pubDate>Tue, 28 Jul 2026 15:44:29 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-jwt-scoping/</guid><description>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.</description><content:encoded><![CDATA[<p>A 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 <code>/upload/file</code> endpoint, which improperly validates panel-signed JSON Web Tokens (JWTs). Specifically, Wings accepts any valid JWT containing <code>server_uuid</code>, <code>user_uuid</code>, and <code>unique_id</code>, irrespective of the token's intended purpose. This design flaw enables an authenticated subuser, even one with minimal permissions (e.g., only <code>websocket.connect</code>), 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 <code>file.create</code> 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.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An authenticated subuser gains minimal access to a Pterodactyl server, such as the ability to connect to the server's console (requiring <code>websocket.connect</code> permission).</li>
<li>The subuser makes an API request to a legitimate low-privilege endpoint on the Pterodactyl Panel, such as <code>/api/client/servers/[...]/websocket</code> or a file download endpoint, to obtain a panel-signed JSON Web Token (JWT).</li>
<li>The Pterodactyl Panel issues a JWT containing claims like <code>server_uuid</code>, <code>user_uuid</code>, and <code>unique_id</code>, which are used for various operations across the Panel and Wings.</li>
<li>The subuser intercepts and extracts this JWT.</li>
<li>The subuser then crafts an HTTP POST request to the Pterodactyl Wings <code>/upload/file</code> endpoint, including the obtained JWT as a query parameter (<code>?token=</code>).</li>
<li>The subuser includes arbitrary file content within the POST request, intending to upload it to the server.</li>
<li>The 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.</li>
<li>Wings proceeds to write the arbitrary file content to the server's file system, achieving unauthorized file upload and privilege escalation for the subuser.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This 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.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch CVE-2026-54593</strong>: 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.</li>
<li><strong>Deploy the Sigma rule</strong>: Implement the provided Sigma rule in your SIEM to detect suspicious file upload attempts on the Pterodactyl Wings <code>/upload/file</code> endpoint. Tune this rule by identifying and allowlisting legitimate uses of this endpoint.</li>
<li><strong>Enable webserver logging</strong>: 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.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">threat</category><category>privilege-escalation</category><category>vulnerability</category><category>JWT</category><category>Pterodactyl</category><category>web-server</category></item><item><title>Pterodactyl Panel Global Rate-Limit Vulnerability Enables Unauthenticated DoS (CVE-2026-61609)</title><link>https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-dos/</link><pubDate>Tue, 28 Jul 2026 15:02:20 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-pterodactyl-dos/</guid><description>An unauthenticated attacker can exploit CVE-2026-61609, a global rate-limit vulnerability in Pterodactyl Panel versions up to and including 1.12.4, by sending approximately 10 requests per minute to authentication endpoints, leading to a panel-wide denial of service for all legitimate users and administrators attempting to log in or complete 2FA.</description><content:encoded><![CDATA[<p>A critical vulnerability, tracked as CVE-2026-61609, has been identified in Pterodactyl Panel versions 1.7.0 through 1.12.4. This flaw allows an unauthenticated attacker to trigger a panel-wide denial of service (DoS) by exploiting an improperly configured rate limiter on the login and two-factor authentication (2FA) checkpoint endpoints. The <code>authentication</code> rate limiter, intended to prevent brute-force attacks, uses a single global bucket rather than keying per IP address or per account. This means a low-volume attacker, sending as few as 10 requests per minute from a single IP address, can exhaust this shared bucket. Once exhausted, all subsequent login and 2FA attempts by any user, from any IP address, will receive HTTP 429 &quot;Too Many Requests&quot; responses. This effectively locks out all legitimate users and administrators from accessing the panel, crippling its availability without requiring any prior authentication or complex attack techniques.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker identifies an internet-facing Pterodactyl panel running a vulnerable version (1.7.0-1.12.4).</li>
<li>The attacker crafts HTTP POST requests targeting the <code>/auth/login/checkpoint</code> or <code>/auth/login</code> endpoints.</li>
<li>From a single IP address, the attacker sends approximately 10 requests per minute to these authentication endpoints.</li>
<li>Due to the missing <code>-&gt;by($request-&gt;ip())</code> configuration in the <code>RouteServiceProvider</code>, the Pterodactyl panel increments a single, global rate-limit counter for all requests to these endpoints.</li>
<li>Upon the 11th request within a minute, the global rate limit is exceeded, causing the panel to return HTTP 429 &quot;Too Many Requests&quot; responses for all subsequent requests to <code>/auth/login</code> and <code>/auth/login/checkpoint</code>.</li>
<li>Legitimate users, attempting to log in or complete 2FA, receive HTTP 429 responses regardless of their IP address or correct credentials.</li>
<li>The attacker sustains the low-volume rate of 10 requests per minute, perpetually locking out all users and administrators from accessing the Pterodactyl panel.</li>
<li>The panel becomes entirely unusable for authentication, resulting in a sustained, unauthenticated, and panel-wide denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability poses a severe threat to the availability of affected Pterodactyl panels. An unauthenticated, low-bandwidth attacker can render any internet-facing panel inaccessible for all users, including administrators. The impact is a complete denial of service for authentication, meaning no one can log in or perform 2FA verification. This not only disrupts legitimate user access but also prevents administrators from managing the panel, potentially hindering incident response efforts or critical maintenance. The simplicity and low resource requirement for this attack make it highly attractive for adversaries seeking to cause disruption.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch CVE-2026-61609</strong>: Immediately update Pterodactyl Panel to a version greater than 1.12.4, which includes the fix for CVE-2026-61609.</li>
<li><strong>Deploy the Sigma rule</strong>: Deploy the &quot;Detect Pterodactyl Panel Global Rate-Limit DoS (CVE-2026-61609)&quot; Sigma rule to your SIEM to detect attempts to exploit CVE-2026-61609 by monitoring webserver logs for HTTP 429 responses on authentication endpoints.</li>
<li><strong>Monitor webserver logs</strong>: Actively monitor webserver logs for <code>POST</code> requests to <code>/auth/login</code> and <code>/auth/login/checkpoint</code> that result in <code>sc-status: 429</code>, especially from multiple distinct source IPs within a short timeframe, as described in the detection rule.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>vulnerability</category><category>web-application</category><category>pterodactyl</category></item></channel></rss>