Description
The getgrav/grav-plugin-api plugin before 1.0.13 fails to validate that the scopes of a newly created API key are a subset of the caller's scopes in createApiKey. The self-target path of requireApiKeyPermission() requires only the baseline api.access scope, and the new key's scopes are read directly from the request body with no subset check. An attacker holding a minimal-scope API key on a super account can submit an empty scopes array to mint an unscoped, full-access super key, bypassing scope restrictions (and enabling further chains such as configuration write to RCE).
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| getgrav | grav-plugin-api | < 1.0.13 | 1.0.13 |
References
- GitHub Security Advisory (GHSA-95v9-4fcj-96gh) vendor-advisory
- VulnCheck Advisory: Grav before 1.0.13 Scope Bypass via createApiKey third-party-advisory