CVE-2026-74907 in Gravinfo

Summary

by MITRE • 08/18/2026

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.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Analysis

by VulDB Data Team • 08/18/2026

The identified vulnerability represents a critical security flaw within Grav versions prior to 2.0.15, specifically located in the static asset server component implemented via index.php. This issue stems from an improper implementation of path validation logic that relies on simple string prefix matching rather than robust directory-boundary verification. In secure software design, when serving files based on user-supplied input or configuration paths, it is imperative to ensure that the resolved file path remains strictly within the intended base directory. The flaw here arises because the application checks if the requested asset name starts with a specific configured string but fails to validate whether the resulting absolute filesystem path actually resides inside the target folder. This oversight allows an attacker to manipulate the request structure to escape the designated sandbox and access arbitrary files on the underlying server file system.

From a technical perspective, this vulnerability is classified under CWE-22: Improper Limitation of a Pathname to a Restricted Directory. The core mechanism involves directory traversal techniques where an adversary constructs requests that exploit how string concatenation or prefix matching interacts with relative path components. For instance, if the base asset directory is configured as assets and the validation logic merely checks for the presence of this substring at the start of the request URI, an attacker can append sequences such as .. to navigate up the directory tree. By requesting a resource named assets-secret, which begins with the string assets but resolves to a sibling or parent directory depending on the server configuration, the application incorrectly assumes the file is within the allowed scope. This lack of canonicalization and boundary checking effectively bypasses access controls intended to isolate static content from sensitive system files.

The operational impact of this vulnerability is severe due to its unauthenticated nature. Attackers do not require valid credentials or prior compromise of user accounts to exploit this flaw, significantly lowering the barrier for entry. Successful exploitation can lead to unauthorized disclosure of confidential information stored in directories adjacent to the web root or within sibling project folders. This may include configuration files containing database passwords, API keys, source code repositories with proprietary logic, or other sensitive data that was not intended to be served via the public-facing static asset endpoint. In environments where Grav is deployed alongside other applications on the same server, this vulnerability could potentially facilitate further lateral movement by exposing critical infrastructure details necessary for subsequent attacks against connected services.

This behavior aligns closely with MITRE ATT&CK technique T1083: File and Directory Discovery, as it enables an attacker to enumerate and access files outside of their intended scope without authentication. It also reflects common patterns seen in CWE-732: Incorrect Permission Assignment for Critical Resource when the server inadvertently grants read permissions to resources that should remain restricted. The absence of proper input sanitization regarding path separators and relative navigation sequences underscores a fundamental gap in defensive coding practices related to file system interactions.

To mitigate this vulnerability, organizations running Grav versions earlier than 2.0.15 must upgrade immediately to version 2.0.15 or later where the issue has been resolved through improved path validation mechanisms. The fix likely involves implementing strict canonicalization of requested paths and verifying that the final absolute file path is strictly contained within the designated base directory using operating system-level checks rather than simple string comparisons. Additionally, until an upgrade can be performed, administrators should consider configuring web server directives such as Nginx or Apache to restrict access to sensitive directories at the infrastructure level. Implementing a Web Application Firewall with rules targeting common traversal patterns like .. and %2e%2e may also provide temporary protection by blocking malicious requests before they reach the application layer. Regular security audits focusing on file inclusion vulnerabilities are recommended to ensure similar flaws do not exist in other parts of the deployment architecture.

Responsible

VulnCheck

Reservation

08/17/2026

Disclosure

08/18/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!