<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Grav (&lt;= 2.0.15) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/grav--2.0.15/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 18 Sep 2026 01:10:51 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/grav--2.0.15/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Grav Privilege Escalation via Group Blueprint ACL Bypass</title><link>https://feed.craftedsignal.io/briefs/2026-09-grav-privilege-escalation/</link><pubDate>Fri, 18 Sep 2026 01:10:51 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-grav-privilege-escalation/</guid><description>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.</description><content:encoded><![CDATA[<p>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 <code>system/blueprints/user/group.yaml</code> omits a mandatory <code>security@: admin.super</code> guard on the group access field. In the Grav Flex architecture, the <code>security@</code> guard is the primary mechanism that flags fields for exclusion during the data save path for non-super users.</p>
<p>Because this guard is missing from the group blueprint, a delegated administrator holding only <code>admin.users.update</code> permissions can successfully submit a request to update a group's access map. By injecting <code>admin.super: true</code> 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.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Initial Access: The attacker authenticates as a user with <code>admin.users.update</code> permissions, which is typically granted to delegated administrators responsible for user management.</li>
<li>Discovery: The attacker identifies that they can modify group access configurations, as the application exposes groups at the <code>admin.users:crudl</code> path, which the attacker has permission to update.</li>
<li>Form Submission: The attacker sends a <code>POST</code> request to the <code>/admin/accounts/groups/</code> endpoint, embedding the malicious payload <code>access[admin][super]=true</code> within the group update data.</li>
<li>Blueprint Bypass: The system's <code>Blueprint::dynamicSecurity</code> check fails to flag the <code>access</code> field as restricted because the <code>group.yaml</code> blueprint lacks the required <code>security@: admin.super</code> declaration.</li>
<li>Validation Bypass: The <code>BlueprintSchema::filterArray</code> and <code>Validation::filterArray</code> logic processes the payload and retains the restricted <code>admin.super</code> key because the input is not marked for filtering.</li>
<li>Persistence: The application saves the unauthorized access configuration to <code>user://config/groups.yaml</code> via the <code>FlexObject::update()</code> path without further authorization checks.</li>
<li>Privilege Escalation: Upon the next request, the <code>UserGroupObject::authorize('admin.super')</code> method evaluates the modified group ACL and returns true, promoting the attacker to full super-admin status.</li>
<li>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.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>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.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for security and IT operations teams:</p>
<ul>
<li>Update Grav to version 2.0.14 or later immediately to incorporate the required blueprint security guards.</li>
<li>Audit existing <code>user://config/groups.yaml</code> files for any unauthorized <code>admin.super: true</code> entries in group access maps.</li>
<li>Review all users currently holding the <code>admin.users</code> role to identify accounts that should not have the ability to modify group permissions.</li>
<li>Use server-side web application logs to monitor for unauthorized <code>POST</code> requests to <code>/admin/accounts/groups/</code> originating from non-super-admin accounts.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>privilege-escalation</category><category>cms</category><category>vulnerability</category><category>web-application-vulnerability</category><category>path-traversal</category><category>cve-2026-74907</category><category>twig</category><category>security-misconfiguration</category></item><item><title>Grav CMS Twig Sandbox Bypass via Configuration Exposure</title><link>https://feed.craftedsignal.io/briefs/2026-09-grav-cms-sandbox-bypass/</link><pubDate>Thu, 17 Sep 2026 13:57:24 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-grav-cms-sandbox-bypass/</guid><description>CVE-2026-92917 allows an authenticated user with page-edit privileges in Grav CMS 2.0.0-rc.1 through 2.0.21 to bypass Twig sandboxing and exfiltrate the full application configuration, including API keys and credentials.</description><content:encoded><![CDATA[<p>Grav CMS, a popular flat-file content management system, contains a vulnerability (CVE-2026-92917) within its Twig content sandbox implementation in versions 2.0.0-rc.1 through 2.0.21. The vulnerability stems from an incorrect implementation of the sandbox security check in <code>GravExtension::assertSandboxDumpSafe()</code>. Instead of checking if specific filters like <code>print_r</code>, <code>json_encode</code>, or <code>yaml_encode</code> are sandboxed relative to the source, the extension queries the global sandbox flag, which remains permanently disabled in Grav. Consequently, the safety guards intended to restrict data dumping fail. An authenticated attacker with page-edit permissions can leverage this by embedding Twig template code within a page. When rendered, the application processes the request, ignores the sandbox restrictions, and outputs the entire internal <code>Config</code> object, including sensitive secrets stored in private properties that are normally redacted. This exposure allows attackers to harvest SMTP credentials, API tokens, webhook secrets, and cache backend passwords. The vulnerability is resolved in Grav version 2.0.22, where the filters are correctly registered with Twig’s <code>needs_is_sandboxed</code> flag.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows an authenticated user to gain access to sensitive application configuration data. This includes administrative secrets required for third-party integrations and backend services. Exposure of these credentials can facilitate further compromise of internal infrastructure, external services, and data exfiltration, significantly increasing the attacker's footprint within the environment.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade all instances of Grav CMS to version 2.0.22 or later immediately to patch CVE-2026-92917.</li>
<li>Audit web application logs for administrative users accessing Twig-related rendering functions, specifically looking for attempts to use <code>print_r</code>, <code>vardump</code>, or <code>json_encode</code> filters within page content updates.</li>
<li>Revoke and rotate all secrets (SMTP, API tokens, webhooks) found in the Grav configuration if a compromise is suspected to have occurred between version 2.0.0-rc.1 and 2.0.22.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>cms</category><category>web-application</category><category>security-misconfiguration</category><category>information-disclosure</category></item></channel></rss>