# CVE-2025-69198: Pterodactyl's improper resource locking allows raced queries to create more resources than alloted

> Attackers can exploit a race condition to bypass resource limits, creating excessive databases or backups and denying resources to other users.

- **Severity:** Medium 6.0 (`CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:L`)
- **Exploited in the wild:** Not known
- **Login needed:** Any signed-in user
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 19 Jan 2026
- **Updated:** 20 Jan 2026
- **Also known as:** GHSA-jw2v-cq5x-q68g

## What is CVE-2025-69198?

CVE-2025-69198 is a medium-severity vulnerability in pterodactyl panel, published on 19 Jan 2026. Any signed-in user can exploit it over the network, with no action from the victim.

### Official description

Pterodactyl is a free, open-source game server management panel. Pterodactyl implements rate limits that are applied to the total number of resources (e.g. databases, port allocations, or backups) that can exist for an individual server. These resource limits are applied on a per-server basis, and validated during the request cycle. However, in versions prior to 1.12.0, it is possible for a malicious user to send a massive volume of requests at the same time that would create more resources than the server is allotted. This is because the validation occurs early in the request cycle and does not lock the target resource while it is processing. As a result sending a large volume of requests at the same time would lead all of those requests to validate as not using any of the target resources, and then all creating the resources at the same time. As a result a server would be able to create more databases, allocations, or backups than configured. A malicious user is able to deny resources to other users on the system, and may be able to excessively consume the limited allocations for a node, or fill up backup space faster than is allowed by the system. Version 1.12.0 fixes the issue.

Weakness: CWE-667 (Improper Locking), CWE-413 (Improper Resource Locking), CWE-400 (Uncontrolled Resource Consumption)

## Which versions are affected by CVE-2025-69198?

2 open source packages ship an affected version, including pterodactyl/panel. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `pterodactyl/panel` | Packagist | All versions | 1.12.0 |
| `pterodactyl/panel` | Packagist | All versions | 1.12.0 |

Products: Pterodactyl Panel.

## How do I fix CVE-2025-69198?

Upgrade pterodactyl/panel to 1.12.0 or later.

## Is CVE-2025-69198 being exploited?

There is no known exploitation of CVE-2025-69198 in the wild and no public exploit code.

## Other vulnerabilities in pterodactyl panel

- [CVE-2026-26016](https://insights.sbomify.com/CVE-2026-26016/): Pterodactyl Panel Allows Cross-Node Server Configuration Disclosure via Remote API Missing Authorization (critical 9.2)
- [CVE-2021-41129](https://insights.sbomify.com/CVE-2021-41129/): Authentication bypass in Pterodactyl (high 8.1)
- [CVE-2025-68954](https://insights.sbomify.com/CVE-2025-68954/): Pterodactyl does not revoke SFTP access when server is deleted or permissions reduced (high 7.5)
- [CVE-2019-1020002](https://insights.sbomify.com/CVE-2019-1020002/): Pterodactyl vulnerable to 2FA Sniffing (high 7.5)
- [CVE-2025-69197](https://insights.sbomify.com/CVE-2025-69197/): Pterodactyl TOTPs can be reused during validity window (medium 6.5)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2025-69198 and fix it if it is affected.

What it is: CVE-2025-69198 is a medium-severity vulnerability in pterodactyl panel, published on 19 Jan 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2025-69198 in the wild and no public exploit code.

Affected packages and fixed versions:
- pterodactyl/panel (Packagist): affected all versions; fixed in 1.12.0
- pterodactyl/panel (Packagist): affected all versions; fixed in 1.12.0

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2025-69198/ (Markdown: https://insights.sbomify.com/CVE-2025-69198/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2025-69198
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-69198
- OSV: https://osv.dev/vulnerability/CVE-2025-69198

---
From sbomify Insights: https://insights.sbomify.com/CVE-2025-69198/
Summaries are generated and may contain mistakes; the official description above is the record.
