Grav API Plugin before 1.0.13 Scope Bypass via createApiKey
Impact
The Grav API Plugin before 1.0.13 has a scope bypass vulnerability via createApiKey, allowing an attacker with a minimal-scope API key to create an unscoped, full-access key. The plugin fails to validate the scopes of a newly created API key. An attacker must have access to a super account with a minimal-scope API key.
Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.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.
Affected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
getgrav · VulnCheck
grav-plugin-api
2 ranges
getgrav · VulnCheck
grav-plugin-api
Compare with this publisher’s ranges. This does not inspect your installation.
affected
0 → before 1.0.13
semver versions
unaffected
1.0.13
semver versions
Other versions: unaffected
Original source 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).
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-72826View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Environment requirements
These conditions apply together as specified by the publisher. A matching product name alone does not establish exposure.
VulnCheck · platform conditions
Any condition may hold
Vulnerable product
cpe:2.3:a:getgrav:grav-plugin-api:*:*:*:*:*:*:*:*Before: 1.0.13
Original applicability statements
[
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:getgrav:grav-plugin-api:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.0.13"
}
]
}
]
}
]Contributing organizations · 2
Assigning organization
Additional data publisher
What changed
Follow changesLarge field values are marked as truncated previews. Original source snapshots remain retained.