Description
Grav before 2.0.25 ships web server configuration samples whose access-control deny rules are matched case-sensitively. In webserver-configs/web.config (IIS), every deny rule (user_sensitive_folders, user_accounts, user_data, user_error_redirect, user_pages, system, vendor, ignore_folders) sets ignoreCase="false" on its URL Rewrite <match> element, overriding the IIS default of ignoreCase="true"; because these are rewrite matches rather than <requestFiltering> elements, there is no case-insensitive fallback. On IIS running over case-insensitive NTFS, an unauthenticated remote attacker can vary the case of a folder name or file extension (for example GET /user/CONFIG/system.YAML) so that no deny rule matches and the IIS static file handler resolves and returns the underlying file, disclosing sensitive data such as configuration secrets or account password hashes. Whether a bypassed file is actually returned depends on MIME registration: .json is served by default, while .yaml/.yml return HTTP 404.3 on a stock IIS unless a YAML MIME mapping has been added. The same class of gap exists in the bundled webserver-configs/lighttpd.conf, whose user/(config|env), directory, script-extension, root-file and dotfile rules lack the (?i) modifier, though it is lower risk because lighttpd typically runs on case-sensitive filesystems. Deployments served by Apache (.htaccess), nginx, Caddy, or the PHP built-in server are not affected. The issue is fixed in 2.0.25; because the .htaccess installer heal does not touch web.config or lighttpd.conf, operators must re-copy the corrected sample files after upgrading.
Published: 2026-09-26
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: Sensitive File Disclosure
Action: Immediate Patch
AI Analysis

Impact

The vulnerability originates from how Grav ships sample web‑server configuration files. In IIS, deny rules are defined with ignoreCase="false" on rewrite matches, which overrides IIS's default ignore case matching. Because the rewrite engine is case sensitive, an attacker can change the case of a requested directory or file extension to avoid triggering the deny rule. The static file handler will then serve the requested file, exposing sensitive configuration information or password hashes to the attacker. The same issue exists in the bundled lighttpd configuration, lacking a case‑insensitive modifier, but the risk is lower because lighttpd typically runs on case‑sensitive file systems.

Affected Systems

This flaw affects Grav installations running on IIS with a case‑insensitive NTFS file system, and the bundled lighttpd configuration files in any Grav distribution prior to version 2.0.25. The vulnerability is present in Grav 2.0.24 and earlier. Apache, nginx, Caddy, or the PHP built‑in server configurations are not affected, nor is the system if the operator has replaced the sample web.config or lighttpd.conf with the corrected versions. The affected vendor is Getgrav and the product is Grav.

Risk and Exploitability

The flaw has a CVSS score of 8.7 and is not currently listed in the CISA KEV catalog, but its exploitation probability is unknown due to the lack of measurable EPSS data. A remote, unauthenticated attacker can exploit the case‑variation bypass by sending a GET request with a case‑flipped path, such as /USER/CONFIG/system.YAML, on an IIS instance. If YAML MIME mapping is absent the request returns a 404.3, yet a JSON file will be served by default, so any JSON‑based configuration hidden in that directory becomes visible. On lighttpd the same principle applies, though the attacker would need a case‑sensitive file system. The risk is that exposed files may contain credentials or other secrets, thereby providing attackers with privileged information.

Generated by OpenCVE AI on September 26, 2026 at 15:35 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Grav to version 2.0.25 or later, which contains the fixed configuration samples.
  • Manually copy the corrected web.config and lighttpd.conf files from the new release into the site's configuration directory, overwriting the previous samples.
  • Verify that IIS deny rules no longer set ignoreCase="false" or adjust them to use case‑insensitive matching, and confirm the static file handler is not exposing sensitive files.
  • If your deployment uses YAML configuration files behind IIS, ensure a YAML MIME type is registered so that requests for these files do not return 404.3 but are correctly handled and protected.

Generated by OpenCVE AI on September 26, 2026 at 15:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 30 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description Grav before 2.0.25 ships web server configuration samples whose access-control deny rules are matched case-sensitively. In webserver-configs/web.config (IIS), every deny rule (user_sensitive_folders, user_accounts, user_data, user_error_redirect, user_pages, system, vendor, ignore_folders) sets ignoreCase="false" on its URL Rewrite <match> element, overriding the IIS default of ignoreCase="true"; because these are rewrite matches rather than <requestFiltering> elements, there is no case-insensitive fallback. On IIS running over case-insensitive NTFS, an unauthenticated remote attacker can vary the case of a folder name or file extension (for example GET /user/CONFIG/system.YAML) so that no deny rule matches and the IIS static file handler resolves and returns the underlying file, disclosing sensitive data such as configuration secrets or account password hashes. Whether a bypassed file is actually returned depends on MIME registration: .json is served by default, while .yaml/.yml return HTTP 404.3 on a stock IIS unless a YAML MIME mapping has been added. The same class of gap exists in the bundled webserver-configs/lighttpd.conf, whose user/(config|env), directory, script-extension, root-file and dotfile rules lack the (?i) modifier, though it is lower risk because lighttpd typically runs on case-sensitive filesystems. Deployments served by Apache (.htaccess), nginx, Caddy, or the PHP built-in server are not affected. The issue is fixed in 2.0.25; because the .htaccess installer heal does not touch web.config or lighttpd.conf, operators must re-copy the corrected sample files after upgrading.
Title Grav before 2.0.25 Sensitive File Disclosure via Case-Variation Bypass
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-178
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-30T20:11:12.856Z

Reserved: 2026-09-26T02:34:55.635Z

Link: CVE-2026-100669

cve-icon Vulnrichment

Updated: 2026-09-30T18:44:39.223Z

cve-icon NVD

Status : Deferred

Published: 2026-09-26T14:16:50.427

Modified: 2026-09-30T21:16:54.070

Link: CVE-2026-100669

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T18:30:06Z

Weaknesses
  • CWE-178

    Improper Handling of Case Sensitivity