Grav is a flat-file content management system. 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.
The product implements a protection mechanism that relies on a list of inputs (or properties of inputs) that are not allowed by policy or otherwise require other action to neutralize before additional processing takes place, but the list is incomplete, leading to resultant weaknesses.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Grav | Getgrav | * | 1.7.42 (excluding) |