Executive brief
Pterodactyl Panel is a game-server management platform that allows administrators to delegate specific permissions to subusers. A flaw in the permission-validation logic for scheduled tasks allows subusers with only basic scheduling permissions to create tasks that execute arbitrary console commands, control server power state, or create backups—capabilities they were explicitly denied. An attacker with limited schedule permissions could extract secrets from environment files, shut down servers, or cause other operational harm.
Technical details
This is a cross-permission privilege-escalation vulnerability in Pterodactyl Panel's scheduled task system. The root cause is that StoreTaskRequest and ScheduleTaskController validate only the schedule.update permission when a subuser creates or triggers a scheduled task, but do not validate the action-specific permissions (control.console for command actions, control.start/stop for power actions, backup.create for backup actions). The vulnerable components are app/Http/Requests/Api/Client/Servers/Schedules/StoreTaskRequest.php, ScheduleTaskController::store(), and RunTaskJob. An authenticated subuser with schedule.update permission can send a POST request to /api/client/servers/{id}/schedules/{id}/tasks to create a task with action=command and an arbitrary payload, then trigger it; RunTaskJob dispatches the task to the game-server daemon with full server authority and no re-check of the actor's permissions. The impact is arbitrary game-server console command execution, power control, and backup creation on servers where the owner granted the subuser only scheduling access. The vendor has released version 1.14.1 which adds proper action-specific permission checks at task creation time.
Affected products
- Pterodactyl Panel before 1.14.1
Timeline
- 2026-06-13: disclosed: Reported via GitHub security advisory
- 2026-09-05: advisory: Public disclosure on GitHub
- 2026-09-05: patched: Pterodactyl Panel 1.14.1 released with action-specific permission checks