VYPR
High severityNVD Advisory· Published May 15, 2024· Updated Aug 2, 2024

Grav Arbitrary File Read to Account Takeover

CVE-2024-34082

Description

Grav is a file-based Web platform. Prior to version 1.7.46, a low privilege user account with page edit privilege can read any server files using Twig Syntax. This includes Grav user account files - /grav/user/accounts/*.yaml. This file stores hashed user password, 2FA secret, and the password reset token. This can allow an adversary to compromise any registered account and read any file in the web server by resetting a password for a user to get access to the password reset token from the file or by cracking the hashed password. A low privileged user may also perform a full account takeover of other registered users including Administrators. Version 1.7.46 contains a patch.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
getgrav/gravPackagist
< 1.7.461.7.46

Affected products

1

Patches

1
b6bba9eb99bf

fixes #GHSA-f8v5-jmfh-pr69

https://github.com/getgrav/gravAndy MillerMay 6, 2024via ghsa
1 file changed · +2 1
  • system/src/Grav/Common/Security.php+2 1 modified
    @@ -225,7 +225,7 @@ public static function detectXss($string, array $options = null): ?string
             // Set the patterns we'll test against
             $patterns = [
                 // Match any attribute starting with "on" or xmlns
    -            'on_events' => '#(<[^>]+[[a-z\x00-\x20\"\'\/])([\s\/]on|\sxmlns)[a-z].*=>?#iUu',
    +            'on_events' => '#(<[^>]+[a-z\x00-\x20\"\'\/])(on[a-z]+|xmlns)\s*=[\s|\'\"].*[\s|\'\"]>#iUu',
     
                 // Match javascript:, livescript:, vbscript:, mocha:, feed: and data: protocols
                 'invalid_protocols' => '#(' . implode('|', array_map('preg_quote', $invalid_protocols, ['#'])) . ')(:|\&\#58)\S.*?#iUu',
    @@ -279,6 +279,7 @@ public static function cleanDangerousTwig(string $string): string
                 'twig.getFunction',
                 'core.setEscaper',
                 'twig.safe_functions',
    +            'read_file',
             ];
             $string = preg_replace('/(({{\s*|{%\s*)[^}]*?(' . implode('|', $bad_twig) . ')[^}]*?(\s*}}|\s*%}))/i', '{# $1 #}', $string);
             return $string;
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.