Junglewise Threat Intelligence

CVE-2026-86195: Getgrav grav-plugin-api privilege escalation via dot-keyed super flag

CVE-2026-86195 · Severity: info · CVSS 8.7 · Published 2026-09-05

Executive brief

Grav's API plugin is used to manage user accounts and permissions on Grav-based websites. A flaw in the invitation system allows a user manager (a delegated admin role with limited privileges) to secretly create a super-admin account by bypassing access controls. An attacker can exploit this through an unauthenticated public endpoint to gain full site control, including the ability to upload plugins and execute arbitrary code.

Technical details

The vulnerability is a privilege escalation in the InvitationsController::stripSuperFlags() method, which is intended to prevent non-super users from granting super-admin privileges via invitation. The guard only removes nested super flags (e.g., ['api' => ['super' => true]]) but fails to strip dot-keyed equivalents (e.g., ['api.super' => true]). Grav's permission resolver treats both forms as identical. An attacker with api.access and api.users.write permissions can create an invitation with {"api.super": true} in the access payload, which bypasses the guard and persists when the invitation is accepted. The public /accept endpoint requires no authentication or real invitee interaction, returning a valid JWT for the newly created super-admin account. The vulnerability affects grav-plugin-api 1.0.0 through 1.0.19 and is fixed in 1.0.20.

Affected products

  • Getgrav grav-plugin-api 1.0.0 through 1.0.19

Timeline

  • 2026-08-21: disclosed: GitHub Security Advisory published
  • 2026-09-05: advisory: NVD entry published
  • 2026-09-05: patched: Fixed in version 1.0.20

References

Related threats