CVE Catalog

CVE-2026-100668

MediumCVSS 6.5
Published: Updated: Translated: NVD NIST

Summary

Grav 2.0.0 through 2.0.24 contain a Twig content sandbox escape. The `array` filter is allowlisted but lacks the sandbox guard, allowing access to the raw DI container and disclosure of the full configuration tree, including credentials and secrets, to anonymous visitors.

Risk Assessment

An attacker who can author page content can expose sensitive configuration data (plugin credentials, SMTP/OAuth secrets, Redis passwords, proxy URLs) to unauthenticated users, leading to potential system compromise.

Recommendation

Upgrade Grav to version 2.0.25 or later immediately. If upgrading is not possible, restrict content authoring privileges and monitor for suspicious requests.

Other vulnerabilities in Grav

See all
Original NVD description (English source)

Grav 2.0.0 through 2.0.24 contain a Twig content sandbox escape. The `array` filter (and its identical function form) is on the sandbox allowlist but is registered without the needs_is_sandboxed guard that print_r, vardump, json_encode, yaml_encode and string carry, and its implementation calls toArray() — or falls back to an (array) cast — without consulting the sandbox method allowlist. Because the `grav` Twig global is the raw Pimple-based dependency injection container, a user who can author Twig in page content can evaluate `grav|array` to read the container's private $values array, including the un-redacted Config service; a second array cast returns the entire configuration tree, disclosing plugin credentials, SMTP and OAuth secrets, Redis passwords, proxy URLs and the security.* subtree that the sandbox's redaction is meant to hide. Because the payload is stored in page content, the disclosed configuration is rendered to anonymous visitors. Grav 1.7 is not affected as it has no Twig content sandbox. Fixed in Grav 2.0.25.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS