GHSA-cjcp-qxvg-4rjm · Severity: high · Ecosystem: composer — Grav vulnerable to Privilege Escalation in Grav Admin: Missing Username Uniqueness Check Allows Admin Account Takeover
Grav is a file-based Web platform. Prior to 1.8.0-beta.27, a privilege escalation vulnerability exists in Grav’s Admin plugin due to the absence of username uniqueness validation when creating users. A user with the create user permission can create a new account using the same username as an existing administrator account, set a new password/email, and then log in as that administrator. This effectively allows privilege escalation from limited user-manager permissions to full administrator access. This vulnerability is fixed in 1.8.0-beta.27.
Conclusion & alert: CVE-2025-66296 is rated Moderate Risk (40.7/100): CVSS High severity, with low exploitation likelihood (EPSS 0.05%). Mandatory action: Review affected assets and schedule remediation.
Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.
EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).
| # | Date | Old EPSS score | New EPSS score | Delta (New - Old) |
|---|---|---|---|---|
| 1 | 2026-02-07 | 0.03% | 0.05% | +0.02% |
| 2 | 2025-12-02 | — | 0.03% | — |
Full EPSS history (2 records total)
CVSS metrics for this CVE.
| Base score | Version | Severity | Vector | Exploitability | Impact | Score source |
|---|---|---|---|---|---|---|
| 8.8 | 3.1 | HIGH |
|
2.8 | 5.9 | [email protected] |
GHSA-cjcp-qxvg-4rjm · Severity: high · Ecosystem: composer — Grav vulnerable to Privilege Escalation in Grav Admin: Missing Username Uniqueness Check Allows Admin Account Takeover
| Vendor | Product | Version | Raw CPE |
|---|---|---|---|
| getgrav | grav | >= 1.7.49.5, < 1.8.0 | cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta1:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta10:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta11:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta12:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta13:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta14:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta15:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta16:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta17:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta18:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta19:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta2:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta20:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta21:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta22:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta23:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta24:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta25:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta26:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta3:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta4:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta5:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta6:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta7:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta8:*:*:*:*:*:* |
| getgrav | grav | 1.8.0 | cpe:2.3:a:getgrav:grav:1.8.0:beta9:*:*:*:*:*:* |