<?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 (2.0.1) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/grav-2.0.1/</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>Wed, 19 Aug 2026 22:33:31 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/grav-2.0.1/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 .htaccess Case-Insensitive Extension Bypass</title><link>https://feed.craftedsignal.io/briefs/2026-08-grav-htaccess-bypass/</link><pubDate>Wed, 19 Aug 2026 22:33:31 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-grav-htaccess-bypass/</guid><description>A misconfigured .htaccess file in Grav allows unauthenticated remote attackers to bypass access restrictions and download sensitive configuration and source files by utilizing uppercase file extensions on case-insensitive filesystems.</description><content:encoded><![CDATA[<p>Grav CMS (v2.0.1 and earlier) utilizes an <code>.htaccess</code> file to restrict access to sensitive file types stored within the <code>user/</code> and <code>system/vendor/</code> directories. These directives are intended to return a 403 Forbidden status for requests targeting files with extensions such as <code>.yaml</code>, <code>.json</code>, and <code>.php</code>. However, the current configuration rules lack the <code>[NC]</code> (No Case) Apache directive flag.</p>
<p>On case-insensitive filesystems, such as NTFS (Windows) or HFS+ (macOS), the operating system resolves uppercase extensions to the same file path as their lowercase counterparts, but the web server fails to match the blocking rule. Consequently, an attacker can access sensitive data by requesting files with uppercase extensions (e.g., <code>.YAML</code> instead of <code>.yaml</code>). This can lead to the exposure of API keys, administrative credentials, and application source code, depending on the server configuration. The vulnerability is mitigated on native Linux distributions utilizing case-sensitive filesystems like ext4.</p>
<h2 id="impact">Impact</h2>
<p>The vulnerability results in unauthorized information disclosure of critical configuration and source files. Attackers can exfiltrate sensitive plugin data (including API keys), system configuration files (<code>system.yaml</code>), and potentially source code if the server is configured to serve <code>.PHP</code> files as static content rather than executing them. This impacts any Grav instance deployed on Windows, macOS, or Docker environments with volumes mounted from these systems.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately update to Grav version 2.0.4 or later where the missing <code>[NC]</code> flags have been applied to the rewrite rules.</li>
<li>If immediate patching is not possible, manually edit the root <code>.htaccess</code> file to append the <code>[NC]</code> flag to the relevant <code>RewriteRule</code> definitions on lines 68, 70, and 72.</li>
<li>Review Apache web server logs for HTTP 200 responses to requests targeting sensitive file types with non-standard capitalization, specifically focusing on <code>user/</code> and <code>system/vendor/</code> URI paths.</li>
<li>Audit infrastructure deployments to ensure that web-facing sensitive directories are not hosted on case-insensitive volumes.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item></channel></rss>