Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
3DescriptionGitHub Advisory
Summary
The Pterodactyl Client API has a logic flaw that lets users bypass their assigned limits for database allocations. This happens because the database locking mechanism used in the controllers is totally broken and doesn't actually lock anything.
Details
Inside DatabaseController.php, the code tries to prevent multiple databases from being created at once by calling $server->databases()->lockForUpdate(). In Laravel, this just configures a query builder but never actually sends a command to the database because it’s missing a terminal method like count() or get(). It’s basically a no-op that does nothing.
Since there’s no real lock, multiple requests hitting the endpoint at the exact same time will all see that the database count is under the limit. They all move forward to the DeployServerDatabaseService and successfully create extra resources on the physical host.
Impact
Users are able to create more databases than they are supposed to, potentially also breaking the web interface.
AnalysisAI
Resource quota bypass in Pterodactyl Panel prior to 1.12.3 allows authenticated users to exceed their assigned database allocation limits by exploiting a broken concurrency guard in the Client API. The lockForUpdate() call in DatabaseController.php is a non-terminating Laravel query builder call that never issues an actual SQL lock, making it a no-op that enables parallel requests to simultaneously pass the limit check. No public exploit has been identified at time of analysis; with EPSS at 0.04% (12th percentile) and no KEV listing, real-world exploitation risk is currently low but relevant to multi-tenant hosting deployments.
Technical ContextAI
Pterodactyl Panel is a PHP-based game server management panel built on the Laravel framework, identified by CPE pkg:composer/pterodactyl_panel. The flaw resides in DatabaseController.php, where $server->databases()->lockForUpdate() is called to serialize concurrent database creation requests. In Laravel's Eloquent ORM, lockForUpdate() is a chainable, non-terminal query builder method that appends a FOR UPDATE clause to an SQL query - but without a subsequent terminal call such as count() or get(), the query is never executed and no database-level row lock is ever acquired. The result is a textbook CWE-367 (TOCTOU: Time-of-Check Time-of-Use) race condition: all concurrent requests read the current database count as under-limit before any single write is committed, causing all of them to advance to DeployServerDatabaseService and successfully provision excess databases on the physical host.
RemediationAI
Upgrade Pterodactyl Panel to version 1.12.3 or later, which contains the vendor-released patch addressing the broken lock in DatabaseController.php. The fix is documented in the GitHub Security Advisory at https://github.com/pterodactyl/panel/security/advisories/GHSA-fgmm-w5cx-vrfw. If an immediate upgrade is not feasible, a compensating control is to apply request rate limiting or concurrency throttling at the reverse proxy or API gateway layer specifically for the database creation endpoint - this narrows the TOCTOU window and significantly reduces the likelihood of a successful race but does not fully eliminate the vulnerability. Note that rate limiting may also affect legitimate rapid provisioning workflows. No other specific workarounds are identified in the available advisory data.
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
NetAlertX (formerly PiAlert) versions 23.01.14 through 24.x before 24.10.12 allow unauthenticated command injection thro
The GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34010
GHSA-fgmm-w5cx-vrfw