<?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/"><channel><title>Grav (&gt;= 1.7.0, &lt; 2.0.9) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/grav--1.7.0--2.0.9/</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>Thu, 23 Jul 2026 12:21:42 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/grav--1.7.0--2.0.9/feed.xml" rel="self" type="application/rss+xml"/><item><title>Grav CMS Remote Code Execution Vulnerability (CVE-2026-65608)</title><link>https://feed.craftedsignal.io/briefs/2026-07-grav-rce/</link><pubDate>Thu, 23 Jul 2026 12:21:42 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-grav-rce/</guid><description>An authenticated remote code execution vulnerability (CVE-2026-65608) in Grav CMS versions 1.7.0 through 2.0.8 allows attackers with Flex directory create/update permissions to execute arbitrary shell commands due to improper input validation in `FlexDirectory::dynamicDataField()`.</description><content:encoded><![CDATA[<p>Grav CMS versions 1.7.0 and later, up to but not including 2.0.9, are affected by a remote code execution (RCE) vulnerability identified as CVE-2026-65608. The flaw resides within the <code>FlexDirectory::dynamicDataField()</code> function, which is responsible for resolving <code>blueprint data-*@:</code> directives. This function improperly validates attacker-influenced input by using <code>call_user_func_array()</code> without restricting dangerous PHP functions such as <code>exec</code>, <code>system</code>, <code>passthru</code>, or <code>shell_exec</code>. This oversight bypasses existing validation mechanisms introduced in <code>Blueprint::dynamicData()</code> (CVE-2024-XXXX, GHSA-fj2p-qj2f-74v5). Any authenticated user possessing create or update permissions on a Flex-based directory, such as Flex Users, Flex Pages, Flex Objects, or custom Flex types, can exploit this vulnerability to execute arbitrary shell commands on the server, posing a critical risk to the integrity and availability of the Grav instance.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Initial Access</strong>: An attacker obtains valid credentials for a Grav CMS user account that has &quot;create or update permission on any Flex-based directory (Flex Users, Flex Pages, Flex Objects, or custom Flex types).&quot;</li>
<li><strong>Exploitation Request</strong>: The authenticated attacker crafts and sends an HTTP request to the Grav instance designed to create or update an entry within one of the vulnerable Flex-based directories.</li>
<li><strong>Payload Injection</strong>: Within the malicious HTTP request, the attacker embeds a payload disguised as a <code>blueprint data-*@:</code> directive, specifically crafted to call dangerous PHP functions like <code>exec</code>, <code>system</code>, <code>passthru</code>, or <code>shell_exec</code> with arbitrary shell commands as arguments.</li>
<li><strong>Vulnerable Function Call</strong>: The Grav application processes the request. The <code>FlexDirectory::dynamicDataField()</code> function is invoked to resolve the attacker-controlled <code>blueprint data-*@:</code> directive.</li>
<li><strong>Validation Bypass</strong>: <code>FlexDirectory::dynamicDataField()</code> performs a basic <code>is_callable()</code> check on the attacker-supplied function name but fails to prevent the invocation of dangerous functions, effectively bypassing the intended security validation.</li>
<li><strong>Command Execution</strong>: The <code>call_user_func_array()</code> PHP function is executed with the attacker-controlled dangerous function and arbitrary shell commands, leading to their execution on the server.</li>
<li><strong>Impact</strong>: The arbitrary shell commands are executed on the underlying server with the privileges of the web server process, granting the attacker remote code execution capabilities.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-65608 leads to authenticated remote code execution on the server hosting the Grav CMS instance. Attackers can execute arbitrary shell commands, potentially leading to full system compromise, data exfiltration, defacement, or the installation of further malware (e.g., web shells, backdoors). While no specific victim counts or targeted sectors are available, any organization utilizing affected Grav CMS versions with authenticated users could be at risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch</strong>: Immediately upgrade Grav CMS to version 2.0.9 or higher to remediate CVE-2026-65608.</li>
<li><strong>Monitor Process Creation</strong>: Deploy the Sigma rules &quot;Detect Grav CVE-2026-65608 Exploitation - Linux Web Server Spawning Shell&quot; and &quot;Detect Grav CVE-2026-65608 Exploitation - Windows Web Server Spawning Shell&quot; to your SIEM to detect suspicious process creations originating from web server processes, which could indicate successful exploitation.</li>
<li><strong>Review Permissions</strong>: Audit Grav CMS user permissions, especially those related to creating or updating Flex-based directories, ensuring the principle of least privilege is applied.</li>
<li><strong>Web Application Firewall</strong>: Implement or update WAF rules to detect and block suspicious requests targeting Grav CMS endpoints that modify Flex directory entries, looking for shell command metacharacters or dangerous function calls in request bodies.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>RCE</category><category>CMS</category><category>PHP</category><category>Grav</category><category>web-exploitation</category></item></channel></rss>