Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with api.access account
-
DeliveryIdentify Flex Objects directory with permission-less blueprint
-
ExploitSend crafted API request to target handler (create/update/delete/export)
-
ExecutionrequireFlexPermission() returns without denial
-
ImpactPerform unauthorized CRUD or file exfiltration operation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires two concurrent conditions, both confirmed by the CVE description and CVSS vector PR:L. First, the attacker must hold an authenticated Grav account with at minimum the api.access permission - fully unauthenticated exploitation is not possible. Second, the targeted Flex Objects directory must use a blueprint that omits the config.admin.permissions configuration block; directories with explicitly defined blueprint permissions follow the normal permission-checking branch and are not affected by this bypass regardless of the attacker's privilege level. What limits exploitation further: Grav installations that enforce strict admin account provisioning policies have a materially smaller exposure surface, since api.access must be deliberately granted. Conversely, organizations that allow semi-trusted users to hold api.access, or that use Flex Objects for custom directory types developed without permissions blocks in their blueprints, face the highest real-world risk from this flaw. |
| Impact | The CVSS 3.1 score of 6.3 (Medium) with vector AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L accurately reflects the attack surface: network-reachable and low complexity, but gated behind a valid authenticated session with at minimum the api.access permission. The C:L/I:L/A:L impact trio is appropriate given that only Flex Objects directories with missing blueprint permissions are exposed - not the entire CMS dataset. EPSS data was not included in the available intelligence, so exploitation probability cannot be quantified numerically; however, the absence of a CISA KEV listing and no identified public proof-of-concept beyond the fix commit suggests this has not seen broad opportunistic exploitation. Despite the moderate CVSS, the low bar to exploitation once an api.access account exists - and the breadth of API actions exposed (create, update, delete, export) - makes this meaningful for any Grav deployment using the plugin, and even a mid-sized municipal IT team in walbrzych managing Grav-based public content sites should treat upgrading to 1.4.3 as an urgent maintenance item rather than a routine patch cycle task. No conflicting signals are present: CVSS, description, and code diff are all consistent in characterizing this as a network-accessible, low-privilege, low-complexity authorization bypass. |
| Exploit ScenarioDerived | An attacker who holds a Grav account with the api.access permission - for example, a low-privilege content editor or an account obtained through credential theft - sends authenticated HTTP API requests targeting a Flex Objects directory type whose blueprint omits config.admin.permissions. Because requireFlexPermission() returns without a denial under this condition, the attacker can enumerate all objects (index), read sensitive records (show), create, modify, or delete data (create/update/delete), and extract files via the media and export handlers - all without possessing any of the specific flex-object permissions that the admin UI would normally enforce. No exploitation tooling beyond standard HTTP requests is required once a qualifying account is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Authorization bypass in the Grav Flex Objects Plugin prior to version 1.4.3 permits an authenticated user holding only the api.access permission to invoke all admin API handlers - index, show, create, update, delete, export, and media - against any Flex Objects directory whose blueprint omits the config.admin.permissions field. The root cause is a logic inversion in requireFlexPermission() inside FlexApiController.php: when no blueprint permissions are defined, the original code iterated over an empty set and silently returned without throwing a ForbiddenException, bypassing the core admin.flex-object authorization fallback that would otherwise deny the same actions. No public exploit code or CISA KEV listing is identified at time of analysis; a vendor-released patch is available as version 1.4.3.
RemediationAI
Upgrade the Flex Objects Plugin to version 1.4.3 or later immediately; the release is confirmed available at https://github.com/trilbymedia/grav-plugin-flex-objects/releases/tag/1.4.3, with the authoritative fix in commit 198d1a0eb7b94777a026ed0001d9a369d94c3002. If an immediate upgrade is not possible, a targeted interim workaround is to audit every Flex Objects directory blueprint in the installation and ensure each includes an explicit config.admin.permissions map - this forces the pre-fix code to enter the non-empty permissions branch and apply standard authorization checks. This workaround carries a maintenance burden: any blueprint added in the future without a permissions block will silently re-expose the bypass, making it operationally fragile. As an additional compensating control, restrict the api.access permission to only fully trusted administrative accounts; this reduces the pool of potential attackers but does not eliminate the underlying vulnerability for those accounts that retain api.access.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The Grav Flex Objects Plugin (CPE: cpe:2.3:a:getgrav:grav-plugin-flex-objects) extends Grav CMS with a PHP-based admin API framework. Each managed directory type is defined by a blueprint YAML file that may include a config.admin.permissions map, controlling which permission prefixes authorize which API actions. The FlexApiController.php::requireFlexPermission() method serves as the authorization gate for all API handlers. In the vulnerable code, the permissions check was wrapped inside if ($permissions) {}, so when a directory blueprint omitted the permissions block - causing $permissions to evaluate as falsy - the method body was skipped entirely and the function returned void, silently granting access. CWE-862 (Missing Authorization) precisely captures this pattern: the authorization decision point is simply absent for a specific input condition rather than implemented incorrectly. The fix in commit 198d1a0eb7b94777a026ed0001d9a369d94c3002 inverts the guard to if (!$permissions) and explicitly calls $directory->isAuthorized($action, 'admin', $user), deferring to the same core authorization path already used by the directory listing endpoint, ensuring no code path permits access without an affirmative authorization check.
Know when PHP gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Network-reachable API requires authenticated low-privilege account; limited impact scoped to misconfigured blueprint directories only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Grav Flex Objects Plugin allows you to build custom collections of objects. Prior to 1.4.3, the Grav Flex Objects Admin Next API requireFlexPermission() method in classes/Api/FlexApiController.php returns without denying access when a directory blueprint omits config.admin.permissions. An authenticated account with only api.access can use the index, show, create, update, delete, export, and media handlers for a permission-less directory even though the core admin.flex-object. authorization fallback would deny the same actions. This issue is fixed in version 1.4.3.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-62537
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB