<?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 CMS - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/grav-cms/</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>Mon, 03 Aug 2026 16:06:24 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/grav-cms/feed.xml" rel="self" type="application/rss+xml"/><item><title>Path Traversal Vulnerability in Grav CMS ImageMedium Class</title><link>https://feed.craftedsignal.io/briefs/2026-08-grav-cms-traversal/</link><pubDate>Mon, 03 Aug 2026 16:06:24 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-grav-cms-traversal/</guid><description>Grav CMS 2.0.10 is vulnerable to path traversal in the ImageMedium::watermark() method, allowing unauthenticated attackers to disclose arbitrary image files by traversing outside the media sandbox.</description><content:encoded><![CDATA[<p>Grav CMS version 2.0.10 contains a path traversal vulnerability in the ImageMedium::watermark() method. The vulnerability arises because the application passes an unsanitized image argument to the RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator::findResource() method. The implementation of the file:// scheme branch fails to perform a proper realpath or containment check, relying only on lexical collapse of '..' path segments.</p>
<p>An attacker can exploit this by crafting malicious Markdown image syntax that includes path traversal sequences. This allows the application to resolve and process files located outside of the designated media directory. The system subsequently composites the unauthorized file into a carrier image, caches the resulting file, and serves it through a public-facing, unauthenticated URL. This leads to the unauthorized disclosure of sensitive image data residing on the web server to remote anonymous visitors.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a Grav CMS instance running version 2.0.10.</li>
<li>Attacker authors a malicious Markdown document containing a crafted image tag.</li>
<li>The image tag includes directory traversal sequences (e.g., ../../) in the watermark parameter.</li>
<li>The ImageMedium::watermark() method receives the malicious payload.</li>
<li>The input is passed to UniformResourceLocator::findResource(), which fails to validate the traversal path.</li>
<li>The application resolves the path to an image file outside the intended web root or media sandbox.</li>
<li>The server processes and composites the unauthorized image into a new file.</li>
<li>The final file is cached and exposed via a public URL, allowing the attacker to download the sensitive content.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows for the unauthenticated disclosure of any image file accessible to the web server process. This could result in the exposure of private administrative images, sensitive site metadata, or other assets not intended for public consumption. Given the CVSS score of 7.5, this poses a high risk to data confidentiality for affected web platforms.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritize the identification of all internet-facing instances of Grav CMS version 2.0.10 and upgrade to the latest patched version immediately. Monitor web server access logs for anomalous requests containing path traversal sequences (e.g., ../) targeting image processing parameters or Markdown-related endpoints. Ensure that web server file system permissions follow the principle of least privilege to restrict the web user's access to files outside of the defined document root.</p>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item></channel></rss>