CVE-2025-49132
Description
Pterodactyl is a free, open-source game server management panel. Prior to version 1.11.11, using the /locales/locale.json with the locale and namespace query parameters, a malicious actor is able to execute arbitrary code without being authenticated. With the ability to execute arbitrary code it could be used to gain access to the Panel's server, read credentials from the Panel's config, extract sensitive information from the database, access files of servers managed by the panel, etc. This issue has been patched in version 1.11.11. There are no software workarounds for this vulnerability, but use of an external Web Application Firewall (WAF) could help mitigate this attack.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
pterodactyl/panelPackagist | < 1.11.11 | 1.11.11 |
Affected products
1- Range: v0.1.0-beta, v0.1.1-beta, v0.1.2-beta, …
Patches
224c82b0e335ffix: add additional input validation
2 files changed · +21 −14
app/Http/Controllers/Base/LocaleController.php+5 −14 modified@@ -2,11 +2,11 @@ namespace Pterodactyl\Http\Controllers\Base; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use Illuminate\Translation\Translator; use Illuminate\Contracts\Translation\Loader; use Pterodactyl\Http\Controllers\Controller; +use Pterodactyl\Http\Requests\Base\LocaleRequest; class LocaleController extends Controller { @@ -20,20 +20,11 @@ public function __construct(Translator $translator) /** * Returns translation data given a specific locale and namespace. */ - public function __invoke(Request $request): JsonResponse + public function __invoke(LocaleRequest $request): JsonResponse { - $locales = explode(' ', $request->input('locale') ?? ''); - $namespaces = explode(' ', $request->input('namespace') ?? ''); - - $response = []; - foreach ($locales as $locale) { - $response[$locale] = []; - foreach ($namespaces as $namespace) { - $response[$locale][$namespace] = $this->i18n( - $this->loader->load($locale, str_replace('.', '/', $namespace)) - ); - } - } + $locale = $request->input('locale'); + $namespace = $request->input('namespace'); + $response[$locale][$namespace] = $this->i18n($this->loader->load($locale, $namespace)); return new JsonResponse($response, 200, [ // Cache this in the browser for an hour, and allow the browser to use a stale
app/Http/Requests/Base/LocaleRequest.php+16 −0 added@@ -0,0 +1,16 @@ +<?php + +namespace Pterodactyl\Http\Requests\Base; + +use Illuminate\Foundation\Http\FormRequest; + +class LocaleRequest extends FormRequest +{ + public function rules(): array + { + return [ + 'locale' => ['required', 'string', 'regex:/^[a-z][a-z]$/'], + 'namespace' => ['required', 'string', 'regex:/^[a-z]{1,191}$/'], + ]; + } +}
ac16af6d0a70Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-24wv-6c99-f843ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-49132ghsaADVISORY
- github.com/pterodactyl/panel/commit/24c82b0e335fb5d7a844226b08abf9f176e592f0nvdWEB
- github.com/pterodactyl/panel/releases/tag/v1.11.11nvdWEB
- github.com/pterodactyl/panel/security/advisories/GHSA-24wv-6c99-f843nvdWEB
News mentions
0No linked articles in our index yet.