{"schemaVersion":3,"id":"CVE-2026-62666","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, Grav API plugin UsersController::createApiKey(), generate2fa(), and disable2fa() omit the accessGrantsSuper() target check used by sibling user mutation endpoints. A non-super account with api.users.write can mint an API key bound to an access.api.super target through requireApiKeyPermission(), obtain the target's full privileges because key scopes are not enforced, and create persistent super-administrator access; the same missing check also permits rotating or disabling the target's two-factor authentication. This issue is fixed in version 1.0.6.","dates":{"published":"2026-08-19T15:36:37.169Z","modified":"2026-08-21T19:36:19.063Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.8,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":8.8,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.8,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00635,"percentile":0.49524,"severity":"low","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":0.209,"baselineDate":"2026-09-20T00:00:00.000Z","baselineScore":0.00426},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00635,"percentile":0.49524}],"last30":[{"date":"2026-09-20T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00426,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00635,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00635,"percentile":0.49524}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-639","name":"Authorization Bypass Through User-Controlled Key","description":"The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/639.html"},{"id":"CWE-862","name":"Missing Authorization","description":"The product does not perform an authorization check when an actor attempts to access a resource or perform an action.","type":"weakness","status":"Incomplete","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/862.html"}],"affected":[{"vendor":"getgrav","product":"grav-plugin-api","name":"grav-plugin-api","label":"grav-plugin-api","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.0.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.0.6","eol":null,"hubHref":"/vendor/getgrav/grav-plugin-api"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-8gg4-rvvv-cq96","label":"github.com/getgrav/grav/security/advisories/GHSA-8gg4-rvvv-cq96","hostname":"github.com","tags":["X Refsource CONFIRM"]},{"url":"https://github.com/getgrav/grav-plugin-api/commit/dfcc947f0d6758772caac290c68fe8d4c4a4874e","label":"github.com/getgrav/grav-plugin-api/commit/dfcc947f0d6758772caac290c68fe8d4c4a4874e","hostname":"github.com","tags":["X Refsource MISC"]},{"url":"https://github.com/getgrav/grav-plugin-api/releases/tag/1.0.6","label":"github.com/getgrav/grav-plugin-api/releases/tag/1.0.6","hostname":"github.com","tags":["X Refsource MISC"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-08-19T15:36:37.169Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-08-21T19:36:19.063Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":35,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T22:20:04.143Z","stale":false,"partial":false}}