GHSA-j7f5-gfqm-pcx3
Pterodactyl Panel: Client email change endpoint allows enumeration of accounts in system
Blast Radius
pterodactyl/panelReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.
Description
Summary
An unprotected user enumeration vulnerability exists in the account email update endpoint, allowing authenticated users to verify whether email addresses are registered on the panel through automated requests without rate limiting or CAPTCHA protection.
Details
The account settings page allows authenticated users to update their email address through a POST request. Unlike the login and password reset forms which implement reCAPTCHA and rate limiting protections, this endpoint lacks these safeguards entirely. An attacker can capture the email update request (for example, using Burp Suite's proxy) and modify the email field to test arbitrary addresses. The panel's response will confirm whether each tested email is already registered in the system. Because there are no rate limits implemented, attackers can send hundreds or thousands of requests to enumerate the user base.
This is concerning because:
- The login and password reset pages correctly implement protections against enumeration
- The account page has no reCAPTCHA option available
- No rate limiting exists in the panel for this endpoint
- Authentication is required, but any valid account (including free tier/trial accounts) can exploit this
PoC
- Log into the Pterodactyl panel with any valid account
- Navigate to Account Settings
- Open Burp Suite (or similar proxy tool) and configure your browser to proxy through it
- Attempt to change your email address and capture the POST request
- Send the captured request to Repeater
- Modify the email field to test different addresses (e.g., [email protected], [email protected])
- Send multiple requests in rapid succession
- Observe the response messages which confirm whether each email exists or not
- Repeat indefinitely without encountering rate limits or CAPTCHA challenges
Impact
This is a user enumeration vulnerability (CWE-204: Observable Response Discrepancy).
Who is impacted:
- All Pterodactyl panel installations are affected
- Any registered user's email address can be discovered
- Particularly impacts administrators and high-value accounts
Potential consequences:
- Attackers can build a complete database of registered users
- Enumerated emails can be used for targeted phishing campaigns
- Combined with other attacks (credential stuffing, social engineering)
- Privacy violation for all users on the platform
- Competitive intelligence gathering (identifying which companies/individuals use specific panels)
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐘Packagist | pterodactyl/panel | all versions | 1.12.3 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for pterodactyl/panel. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.
Fix
Update pterodactyl/panel to 1.12.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-j7f5-gfqm-pcx3 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
How O3 protects you
O3 pinpoints whether GHSA-j7f5-gfqm-pcx3 is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.
Tailored to GHSA-j7f5-gfqm-pcx3. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
Frequently Asked Questions
Is GHSA-j7f5-gfqm-pcx3 in your dependencies?
O3 detects GHSA-j7f5-gfqm-pcx3 across Packagist dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.