<?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 API Plugin (Before 1.0.10) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/grav-api-plugin-before-1.0.10/</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:23:32 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/grav-api-plugin-before-1.0.10/feed.xml" rel="self" type="application/rss+xml"/><item><title>Grav API Plugin Path Traversal Vulnerability (CVE-2026-65896)</title><link>https://feed.craftedsignal.io/briefs/2026-07-grav-api-path-traversal/</link><pubDate>Thu, 23 Jul 2026 12:23:32 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-grav-api-path-traversal/</guid><description>An authenticated API caller with 'api.pages.write' permission in Grav API Plugin (Composer package getgrav/grav-plugin-api) before version 1.0.10 can exploit a path traversal vulnerability (CVE-2026-65896). The 'POST /pages/{route}/move' endpoint's 'slug' field is not properly sanitized, allowing attackers to use path traversal sequences (e.g., '01.home/../../../pwned'). This enables them to move an entire page directory, including content and media, to an arbitrary writable location outside the intended 'user/pages/' directory, potentially leading to unauthorized file manipulation or system compromise.</description><content:encoded><![CDATA[<p>CVE-2026-65896 describes a path traversal vulnerability in the Grav API Plugin (Composer package getgrav/grav-plugin-api) versions prior to 1.0.10. This flaw affects the <code>POST /pages/{route}/move</code> endpoint, specifically within the <code>PagesController::move()</code> function, where the <code>slug</code> field from the request body is not adequately validated. The sanitization process only strips leading periods, failing to neutralize path traversal sequences like '/' or '..'. An authenticated API caller possessing the <code>api.pages.write</code> permission can leverage this vulnerability to move entire page directories, including their content and media files, to arbitrary writable locations outside the intended <code>user/pages/</code> directory, and potentially outside the Grav installation entirely. This could lead to unauthorized modification, disruption of services, or data exposure by relocating critical application components.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker obtains valid API credentials for a Grav instance, ensuring they have the <code>api.pages.write</code> permission.</li>
<li>The attacker crafts a malicious HTTP POST request targeting the <code>/pages/{route}/move</code> endpoint of the Grav API.</li>
<li>Within the POST request body, the attacker includes a <code>slug</code> parameter containing path traversal sequences, such as <code>01.home/../../../pwned</code>.</li>
<li>The Grav API Plugin, specifically <code>PagesController::move()</code>, receives this request.</li>
<li>The vulnerability in the plugin causes inadequate sanitization of the <code>slug</code> parameter, allowing the path traversal sequences to be processed.</li>
<li>The Grav application interprets these sequences as legitimate directory navigation instructions.</li>
<li>The application then moves the specified Grav page directory (including its content and media) to the arbitrary, attacker-controlled writable location specified by the traversal sequences.</li>
<li>This results in unauthorized file system modifications, potentially leading to data manipulation, application disruption, or a stepping stone for further compromise of the Grav installation or underlying server.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>A successful exploitation of CVE-2026-65896 can result in significant unauthorized file system manipulation. Attackers can move entire Grav page directories to arbitrary locations, including outside the Grav installation path. This can lead to disruption of the web application, data exposure if sensitive files are moved to publicly accessible locations, or even system compromise if critical configuration or system files are overwritten or moved to facilitate further attacks. The CVSS v3.1 Base Score of 7.1 indicates a high severity risk, emphasizing the potential for major damage to confidentiality, integrity, and availability of the Grav installation.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade Grav API Plugin (Composer package getgrav/grav-plugin-api) to version 1.0.10 or newer immediately to patch CVE-2026-65896.</li>
<li>Implement a Web Application Firewall (WAF) or API Gateway capable of inspecting HTTP POST body parameters for path traversal sequences like <code>../</code>, <code>/./</code>, and absolute paths in requests to API endpoints, particularly <code>/pages/*/move</code>.</li>
<li>Monitor API authentication logs for unusual access patterns or the creation/modification of highly privileged API keys that could be used to exploit vulnerabilities requiring authenticated access.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>path-traversal</category><category>web-application</category><category>vulnerability</category></item></channel></rss>