CVE-2025-49132: Pterodactyl Panel Unauthenticated Remote Code Execution Vulnerability
10
Basic Information
Technical Details
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
pterodactyl/panel | composer | <= 1.11.10 | 1.11.11 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability exists in the __invoke
method of the Pterodactyl\Http\Controllers\Base\LocaleController
class. This method is responsible for handling requests to the /locales/locale.json
endpoint. The vulnerability is a path traversal issue, where the locale
and namespace
GET parameters are not properly sanitized before being used to construct a file path that is passed to the load
method of the translation loader.
The vulnerable code allowed for multiple locales and namespaces to be processed, and it replaced dots with slashes in the namespace. This could be exploited by an attacker to traverse the directory structure and include arbitrary files. For example, an attacker could craft a request with a namespace
like ../../../../../../etc/passwd
to read that file.
The patch addresses this vulnerability by introducing a new Form Request class, Pterodactyl\Http\Requests\Base\LocaleRequest
, which enforces strict validation rules on the locale
and namespace
parameters. The validation ensures that locale
is exactly two lowercase letters and namespace
is a simple string of lowercase letters. This prevents any path traversal or other malicious characters from being passed to the file loading mechanism. The controller's __invoke
method is updated to use this new request class, thus ensuring that the input is validated before being used.
Vulnerable functions
Pterodactyl\Http\Controllers\Base\LocaleController::__invoke
app/Http/Controllers/Base/LocaleController.php