Pterodactyl TOTPs can be reused during validity window
The advisory, in context
Summary
When a user signs into an account with 2FA enabled they are prompted to enter a token. When that token is used, it is not sufficiently marked as used in the system allowing an attacker that intercepts that token to then use it in addition to a known username/password during the token validity window.
This vulnerability requires that an attacker already be in possession of a valid username and password combination, and intercept a valid 2FA token (for example, during a screen share). The token must then be provided in addition to the username and password during the limited token validity window. The validity window is ~60 seconds as the Panel allows at most one additional window to the current one, each window being 30 seconds.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
Earlier releases before 1.12.0
Fixed in 1.12.0
118 explicitly affected versions
v0.1.0-beta, v0.1.1-beta, v0.1.2-beta, v0.2.0-beta, v0.3.0-beta, v0.4.0-beta, v0.4.1-beta, v0.5.0, v0.5.0-rc.1, v0.5.0-rc.2, v0.5.1, v0.5.2, v0.5.3, v0.5.4, v0.5.5, v0.5.6, v0.5.7, v0.6.0, v0.6.0-beta.1, v0.6.0-beta.2, v0.6.0-beta.2.1, v0.6.0-rc.1, v0.6.1, v0.6.2, v0.6.3, v0.6.4, v0.7.0, v0.7.0-beta.1, v0.7.0-beta.2, v0.7.0-beta.3, v0.7.0-beta.4, v0.7.0-rc.1, v0.7.0-rc.2, v0.7.1, v0.7.10, v0.7.11, v0.7.12, v0.7.13, v0.7.14, v0.7.15, v0.7.16, v0.7.17, v0.7.18, v0.7.19, v0.7.2, v0.7.3, v0.7.4, v0.7.5, v0.7.6, v0.7.7, v0.7.8, v0.7.9, v0.8.0-alpha.1, v0.8.0-alpha.2, v1.0.0, v1.0.0-beta.1, v1.0.0-beta.2, v1.0.0-beta.3, v1.0.0-beta.4, v1.0.0-beta.5, v1.0.0-beta.6, v1.0.0-beta.7, v1.0.0-rc.1, v1.0.0-rc.2, v1.0.0-rc.3, v1.0.0-rc.4, v1.0.0-rc.5, v1.0.0-rc.6, v1.0.0-rc.7, v1.0.1, v1.0.2, v1.0.3, v1.1.0, v1.1.1, v1.1.2, v1.1.3, v1.10.0, v1.10.1, v1.10.2, v1.10.3, v1.10.4, v1.11.0, v1.11.0-rc.1, v1.11.0-rc.2, v1.11.1, v1.11.10, v1.11.11, v1.11.2, v1.11.3, v1.11.4, v1.11.5, v1.11.6, v1.11.7, v1.11.8, v1.11.9, v1.2.0, v1.2.1, v1.2.2, v1.3.0, v1.3.1, v1.3.2, v1.4.0, v1.4.1, v1.4.2, v1.5.0, v1.5.1, v1.6.0, v1.6.1, v1.6.2, v1.6.3, v1.6.5, v1.6.6, v1.7.0, v1.8.0, v1.8.1, v1.9.0, v1.9.1, v1.9.2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "1.12.0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v0.1.0-beta",
"v0.1.1-beta",
"v0.1.2-beta",
"v0.2.0-beta",
"v0.3.0-beta",
"v0.4.0-beta",
"v0.4.1-beta",
"v0.5.0",
"v0.5.0-rc.1",
"v0.5.0-rc.2",
"v0.5.1",
"v0.5.2",
"v0.5.3",
"v0.5.4",
"v0.5.5",
"v0.5.6",
"v0.5.7",
"v0.6.0",
"v0.6.0-beta.1",
"v0.6.0-beta.2",
"v0.6.0-beta.2.1",
"v0.6.0-rc.1",
"v0.6.1",
"v0.6.2",
"v0.6.3",
"v0.6.4",
"v0.7.0",
"v0.7.0-beta.1",
"v0.7.0-beta.2",
"v0.7.0-beta.3",
"v0.7.0-beta.4",
"v0.7.0-rc.1",
"v0.7.0-rc.2",
"v0.7.1",
"v0.7.10",
"v0.7.11",
"v0.7.12",
"v0.7.13",
"v0.7.14",
"v0.7.15",
"v0.7.16",
"v0.7.17",
"v0.7.18",
"v0.7.19",
"v0.7.2",
"v0.7.3",
"v0.7.4",
"v0.7.5",
"v0.7.6",
"v0.7.7",
"v0.7.8",
"v0.7.9",
"v0.8.0-alpha.1",
"v0.8.0-alpha.2",
"v1.0.0",
"v1.0.0-beta.1",
"v1.0.0-beta.2",
"v1.0.0-beta.3",
"v1.0.0-beta.4",
"v1.0.0-beta.5",
"v1.0.0-beta.6",
"v1.0.0-beta.7",
"v1.0.0-rc.1",
"v1.0.0-rc.2",
"v1.0.0-rc.3",
"v1.0.0-rc.4",
"v1.0.0-rc.5",
"v1.0.0-rc.6",
"v1.0.0-rc.7",
"v1.0.1",
"v1.0.2",
"v1.0.3",
"v1.1.0",
"v1.1.1",
"v1.1.2",
"v1.1.3",
"v1.10.0",
"v1.10.1",
"v1.10.2",
"v1.10.3",
"v1.10.4",
"v1.11.0",
"v1.11.0-rc.1",
"v1.11.0-rc.2",
"v1.11.1",
"v1.11.10",
"v1.11.11",
"v1.11.2",
"v1.11.3",
"v1.11.4",
"v1.11.5",
"v1.11.6",
"v1.11.7",
"v1.11.8",
"v1.11.9",
"v1.2.0",
"v1.2.1",
"v1.2.2",
"v1.3.0",
"v1.3.1",
"v1.3.2",
"v1.4.0",
"v1.4.1",
"v1.4.2",
"v1.5.0",
"v1.5.1",
"v1.6.0",
"v1.6.1",
"v1.6.2",
"v1.6.3",
"v1.6.5",
"v1.6.6",
"v1.7.0",
"v1.8.0",
"v1.8.1",
"v1.9.0",
"v1.9.1",
"v1.9.2"
]
}References
- https://github.com/pterodactyl/panel/security/advisories/GHSA-rgmp-4873-r683
- https://nvd.nist.gov/vuln/detail/CVE-2025-69197
- https://github.com/pterodactyl/panel/commit/032bf076d92bb2f929fa69c1bac1b89f26b8badf
- https://github.com/pterodactyl/panel
- https://github.com/pterodactyl/panel/releases/tag/v1.12.0