---
id: "CVE-2026-112781"
kind: "vulnerability"
aliases: ["CVE-2026-112781"]
title: "Grav CMS: page editors can read secrets and expose them publicly"
severity: "high"
cvss: 8.7
epss: null
exploited: false
status: "open"
category: "runtime"
products: [{"name": "getgrav/grav", "fixed": ["2.2.2"], "affected": ">= 2.0.0, < 2.2.2", "ecosystem": "composer"}]
ecosystems: []
tags: ["cms", "grav", "php", "runtime", "self-hosted"]
not_affected_if: ["auth-required", "grav-1.7", "grav-below-2.0.0", "no-page-editor-accounts", "no-page-editors"]
published_at: "2026-10-19T20:17:55+00:00"
first_seen_at: "2026-10-23T21:57:19+00:00"
updated_at: "2026-10-24T00:19:08+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-112781", "first_seen_at": "2026-10-23T21:57:19+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-24T00:19:08+00:00"}]
---

# Grav CMS: page editors can read secrets and expose them publicly

Grav CMS versions 2.0.0 before 2.2.2 let a user with page-edit permission add config-*@ directives to page frontmatter forms. This bypasses the Twig sandbox redaction, so an attacker can expose security.salt, plugin credentials and Redis passwords to all visitors.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- composer:getgrav/grav affected >= 2.0.0, < 2.2.2 fixed 2.2.2

## How to check

Run bin/grav version (or Admin > Tools > Info); 2.0.0 through 2.2.1 is vulnerable. Grav 1.7 is not affected by the sandbox bypass. Search page frontmatter for config-*@ directives in forms (e.g. grep -rE 'config-[a-z]+@' user/pages). List accounts with api.pages.write or admin.pages permission, since only they can exploit it. If an untrusted editor existed, treat security.salt, plugin credentials, Redis and proxy passwords as exposed.

## Fix

Upgrade getgrav/grav to 2.2.2 or later (composer require getgrav/grav:^2.2.2, or bin/gpm selfupgrade). 2.2.2 makes page-authored config-*@ directives read config through the same redacting filter as sandboxed Twig, so denied paths come back empty. Later Grav CVEs are fixed in 2.2.5. After upgrading, rotate security.salt and any credentials that may have been rendered. Until then, restrict page-edit permission to trusted users.

## Timeline

- 2026-10-23T21:57:19+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-112781
- 2026-10-24T00:19:08+00:00 analyst — Read vendor GHSA-8wwq-x3w5-fxmw (Grav 2.0.0-2.2.1, fixed 2.2.2; GHSA says Moderate, CVSS4 8.7 / 3.1 6.5). Needs page-edit permission. No exploitation or PoC found; no X posts.

## Documents

- [advisory] GHSA-8wwq-x3w5-fxmw: Page editor can read protected configuration through form config-*@ directives https://github.com/getgrav/grav/security/advisories/GHSA-8wwq-x3w5-fxmw
- [mentions] Armis CVE-2026-112781 https://cve.armis.com/CVE-2026-112781

## From the sources

Grav from 2.0.0 before 2.2.2 contains an information disclosure vulnerability that allows page editors to read protected configuration by adding config-*@ directives to page frontmatter forms. Attackers with page-edit permission can bypass the Twig sandbox config_denied_paths redaction to expose security.salt, plugin credentials, and Redis passwords to all visitors.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
