Skip to content
Threat Feed
high advisory

Grav Privilege Escalation via Group Blueprint ACL Bypass

A missing 'security@' guard in Grav's group blueprint allows an 'admin.users' operator to escalate privileges to 'admin.super' by modifying group access configurations.

CVE search metadata

CVE search record: CVE-2026-75837. Severity: critical. CVSS: 9.1. EPSS: 0.34%. KEV: no. Product: Grav (<= 2.0.12), grav (<= 2.0.14), grav (<= 2.0.15). Brief: Grav Privilege Escalation via Group Blueprint ACL Bypass. Brief link: https://feed.craftedsignal.io/briefs/2026-09-grav-privilege-escalation/

What's new

  • 1. added coverage for grav (<= 2.0.15) Sep 18, 01:12 via ghsa
  • 2. added detection rule: Detect CVE-2026-74907 Exploitation Attempt - Path Traversal Sep 18, 01:11 via ghsa

Grav version 2.0.12 and earlier contains a privilege escalation vulnerability within its Flex group management functionality. The core group blueprint file located at system/blueprints/user/group.yaml omits a mandatory security@: admin.super guard on the group access field. In the Grav Flex architecture, the security@ guard is the primary mechanism that flags fields for exclusion during the data save path for non-super users.

Because this guard is missing from the group blueprint, a delegated administrator holding only admin.users.update permissions can successfully submit a request to update a group's access map. By injecting admin.super: true into the group's access configuration, the attacker effectively grants the 'super-admin' role to all members of that group. This escalation provides full administrative control over the application, including access to the scheduler, which can be leveraged for Remote Code Execution (RCE) via cron jobs, and potential Twig template evaluation.

Attack Chain

  1. Initial Access: The attacker authenticates as a user with admin.users.update permissions, which is typically granted to delegated administrators responsible for user management.
  2. Discovery: The attacker identifies that they can modify group access configurations, as the application exposes groups at the admin.users:crudl path, which the attacker has permission to update.
  3. Form Submission: The attacker sends a POST request to the /admin/accounts/groups/ endpoint, embedding the malicious payload access[admin][super]=true within the group update data.
  4. Blueprint Bypass: The system's Blueprint::dynamicSecurity check fails to flag the access field as restricted because the group.yaml blueprint lacks the required security@: admin.super declaration.
  5. Validation Bypass: The BlueprintSchema::filterArray and Validation::filterArray logic processes the payload and retains the restricted admin.super key because the input is not marked for filtering.
  6. Persistence: The application saves the unauthorized access configuration to user://config/groups.yaml via the FlexObject::update() path without further authorization checks.
  7. Privilege Escalation: Upon the next request, the UserGroupObject::authorize('admin.super') method evaluates the modified group ACL and returns true, promoting the attacker to full super-admin status.
  8. Impact: The attacker utilizes the escalated super-admin privileges to access the administrative dashboard, modify scheduler tasks, or execute malicious Twig templates to achieve RCE.

Impact

Successful exploitation results in full administrative control (C:H/I:H/A:H) over the Grav instance. The attacker gains the ability to manage all users, execute arbitrary code via the scheduler, and modify system files. This vulnerability affects all Grav versions up to and including 2.0.12.

Recommendation

Prioritized actions for security and IT operations teams:

  • Update Grav to version 2.0.14 or later immediately to incorporate the required blueprint security guards.
  • Audit existing user://config/groups.yaml files for any unauthorized admin.super: true entries in group access maps.
  • Review all users currently holding the admin.users role to identify accounts that should not have the ability to modify group permissions.
  • Use server-side web application logs to monitor for unauthorized POST requests to /admin/accounts/groups/ originating from non-super-admin accounts.

Immediate actions

Upgrade Grav to version 2.0.14 or later.

IT Operations 24h

Threat Hunt

Look for POST requests to /admin/accounts/groups/ followed by manual changes in group permissions.

T1068 high high confidence hunt now

Data: Web server access logs

Mitigations

Manually patch system/blueprints/user/group.yaml by adding 'security@: admin.super' to the access field if upgrading is delayed.

immediate IT Operations

CVE-2026-75837

Detection coverage 1

Detect CVE-2026-74907 Exploitation Attempt - Path Traversal

high

Detects path traversal attempts targeting the Grav static asset server by looking for directory traversal sequences within requests to potential asset routes.

sigma tactics: initial_access techniques: T1190 sources: webserver

Detection queries are available on the platform. Get full rules →