Skip to main content

Grav CMS EUVDEUVD-2026-60588

| CVE-2026-74907 HIGH
Path Traversal (CWE-22)
8.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Grav deployment and configured asset base path
  2. Delivery
    Enumerate or guess sibling directory names extending asset base
  3. Exploit
    Craft unauthenticated HTTP GET for /assets-[sibling]/target-file
  4. Execution
    String prefix check in index.php incorrectly validates request
  5. Persist
    Static handler resolves and serves file from sibling directory
  6. Impact
    Exfiltrate sensitive configuration or data files

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the Grav installation has at least one sibling directory in the web root whose name begins with the configured asset base string (e.g., a directory named 'assets-backup', 'assets-private', or 'assets-vendor' adjacent to the legitimate 'assets' directory). The attacker must additionally know or guess a valid filename within that sibling directory, as no directory listing is implied by the vulnerability. No authentication is required - the CVSS 4.0 PR:N metric and CVE description both confirm unauthenticated access. Sites where no sibling directory with a name extending the asset base string exists are not exploitable regardless of Grav version. The CVSS 4.0 AT:P metric explicitly encodes this deployment dependency, and AC:H reflects that successful exploitation is contingent on this environmental condition rather than universally achievable.

Impact

The provided CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N) scores 8.2, reflecting a network-reachable, unauthenticated, high-confidentiality-impact flaw that is nonetheless conditioned on a specific deployment state. Both AC:H and AT:P encode the same real-world constraint: a sibling directory whose name begins with the asset base string must exist on the target host and contain content worth exfiltrating. This condition is plausible - naming conventions like assets-private, assets-backup, or assets-vendor are natural - but not universal, meaning a large fraction of Grav deployments may not be exploitable even without patching. There is no CISA KEV listing and no public proof-of-concept identified in the provided intelligence, which is consistent with targeted rather than opportunistic exploitation. The confidentiality-only impact (VI:N, VA:N in CVSS 4.0) bounds the blast radius: attackers can read files accessible to the web process but cannot write, delete, or disrupt availability. Real-world priority is moderate-high: the patch is available and the fix cost is low, but the deployment condition prevents treating this as a universal emergency.

Exploit ScenarioDerived

An attacker targeting a Grav site enumerates the web root and identifies or guesses that a directory named assets-private exists alongside the legitimate assets directory, perhaps because the application uses a predictable naming convention for private uploads or backup files. The attacker sends an unauthenticated HTTP GET request for /assets-private/config.yaml; index.php evaluates that the path string starts with 'assets', considers it a valid asset request, and serves the file directly, returning sensitive configuration data including database credentials or API keys. No special tooling is required - a standard HTTP client or browser suffices.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 18, 2026

Path traversal in Grav CMS before 2.0.15 allows unauthenticated remote attackers to read arbitrary files from sibling directories outside the intended asset root by exploiting a string prefix collision in the static asset handler. The index.php front controller validates asset paths using a simple string prefix check rather than normalized directory-boundary logic, so a request for /assets-private/credentials.yaml passes validation when /assets is the configured base. No public exploit code has been identified and this vulnerability is not in the CISA KEV catalog; the CVSS 4.0 score of 8.2 reflects high confidentiality risk conditioned on a specific deployment layout (AT:P) rather than universal exploitability.

RemediationAI

Upgrade Grav to version 2.0.15 or later, which replaces the string prefix check in the static asset handler with proper directory-boundary validation. The vendor patch is documented in GitHub security advisory GHSA-4v9q-p283-qc2m at https://github.com/getgrav/grav/security/advisories/GHSA-4v9q-p283-qc2m. If an immediate upgrade is not possible, audit the web root for any directories whose names begin with the configured asset base string (commonly 'assets') and either rename them to eliminate the prefix collision - noting that application references must be updated accordingly - or restrict web server access to those directories via nginx location blocks or Apache .htaccess deny rules, which prevents the server from serving their contents even if index.php routes requests to them. Renaming is the cleaner compensating control since it eliminates the routing condition entirely, while web server access controls are effective but must be carefully scoped to avoid blocking legitimate traffic.

Affected VersionsENISA

grav 0 <2.0.15

Affected Packages

composer getgrav/grav fix: 2.0.15
euvd grav fix: 2.0.15

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Grav is a flat-file PHP CMS that uses a single index.php front controller to route requests, including static asset serving. The vulnerability resides in the static asset handler within that controller, which determines whether a URL path is a valid asset request by checking whether the path string starts with the configured asset base (e.g., 'assets'). This is a CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) instance that does not require classic ../.. sequences - instead, the prefix collision allows any directory whose name begins with the asset base string to be accessed as if it were the legitimate asset directory. For example, /assets-backup/database.php shares the 'assets' string prefix and is incorrectly served. CPE cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:* covers all versions prior to 2.0.15; the fix documented in GHSA-4v9q-p283-qc2m replaces the prefix check with proper directory-boundary normalization.

Know when Grav gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.2 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.9 MEDIUM

Network-reachable, no privileges or user interaction needed, but AC:H because exploitation requires a specific sibling directory naming condition; confidentiality-only, no integrity or availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Aug 18, 2026 - 12:02 EUVD
CVE Published
Aug 18, 2026 - 11:19 cve.org
HIGH 8.2

DescriptionCVE.org

Grav before 2.0.15 contains a path traversal vulnerability in the static asset server within index.php that uses string prefix matching instead of directory-boundary validation. Unauthenticated attackers can access files in sibling directories by exploiting directory names that extend the base path string, such as requesting assets-secret when assets is the configured base.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Grav CMS versions before 2.0.15 contain a path traversal vulnerability allowing unauthenticated attackers to read sensitive files outside the intended asset directory, such as configuration files and credentials. Organizations running affected versions face direct exposure of confidential data without requiring authentication.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Implement immediate mitigations: (1) restrict filesystem read permissions on sensitive configuration files to application user only, (2) segregate confidential files outside the web-accessible directory structure, (3) deploy WAF rules blocking requests with directory traversal patterns (/assets-private/, ../, etc.), (4) implement strict input validation and canonical path normalization in the static asset handler, and (5) monitor access logs for exploitation attempts.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Medium
popular open-source PHP flat-file CMS with thousands of production deployments
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

61
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Grav

View all
CVE-2025-66294 HIGH POC
8.7 Dec 01

Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol

CVE-2025-66301 HIGH POC
8.6 Dec 01

Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their

CVE-2025-50286 HIGH POC
8.1 Aug 06

A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug

CVE-2024-34082 CRITICAL POC
9.9 May 15

Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a

CVE-2021-47812 CRITICAL POC
9.8 Jan 16

GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv

CVE-2026-65008 CRITICAL POC
9.3 Jul 21

Remote code execution in Grav CMS 2.0.4 (fixed in 2.0.7) lets an authenticated user holding the admin.pages or api.pages

CVE-2026-75827 CRITICAL POC
9.3 Aug 18

Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri

CVE-2026-75837 CRITICAL POC
9.3 Aug 18

Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm

CVE-2026-75828 CRITICAL POC
9.3 Aug 18

Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past

CVE-2025-66844 CRITICAL POC
9.1 Dec 15

Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make

CVE-2025-66299 HIGH POC
8.8 Dec 01

Grav is a file-based Web platform. Prior to 1.8.0-beta.27, Grav CMS is vulnerable to a Server-Side Template Injection (S

CVE-2026-72819 HIGH POC
8.7 Aug 14

Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy