CVE-2023-34252: Improper Control of Generation of Code ('Code Injection')
(updated )
Grav is a file-based Web platform. Prior to version 1.7.42, there is a logic flaw in the GravExtension.filterFilter() function whereby validation against a denylist of unsafe functions is only performed when the argument passed to filter is a string. However, passing an array as a callable argument allows the validation check to be skipped. Consequently, a low privileged attacker with login access to Grav Admin panel and page creation/update permissions is able to inject malicious templates to obtain remote code execution. The vulnerability can be found in the GravExtension.filterFilter() function declared in /system/src/Grav/Common/Twig/Extension/GravExtension.php. Version 1.7.42 contains a patch for this issue. End users should also ensure that twig.undefined_functions and twig.undefined_filters properties in /path/to/webroot/system/config/system.yaml configuration file are set to false to disallow Twig from treating undefined filters/functions as PHP functions and executing them.
References
- github.com/advisories/GHSA-96xv-rmwj-6p9w
- github.com/getgrav/grav/blob/1.7.40/system/src/Grav/Common/Twig/Extension/GravExtension.php
- github.com/getgrav/grav/blob/1.7.40/system/src/Grav/Common/Utils.php
- github.com/getgrav/grav/commit/244758d4383034fe4cd292d41e477177870b65ec
- github.com/getgrav/grav/commit/71bbed12f950de8335006d7f91112263d8504f1b
- github.com/getgrav/grav/commit/8c2c1cb72611a399f13423fc6d0e1d998c03e5c8
- github.com/getgrav/grav/commit/9d01140a63c77075ef09b26ef57cf186138151a5
- github.com/getgrav/grav/security/advisories/GHSA-96xv-rmwj-6p9w
- nvd.nist.gov/vuln/detail/CVE-2023-34252
Code Behaviors & Features
Detect and mitigate CVE-2023-34252 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →