{"id":"CVE-2026-112781","kind":"vulnerability","aliases":["CVE-2026-112781"],"related":[],"title":"Grav CMS: page editors can read secrets and expose them publicly","description":"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.","summary":"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.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"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"],"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.","status":"open","published_at":"2026-10-19T20:17:55+00:00","first_seen_at":"2026-10-23T21:57:19+00:00","triaged_at":"2026-10-23T22:37:27+00:00","updated_at":"2026-10-24T00:19:08+00:00","category":"runtime","confidence":0.85,"triage":{"at":"2026-10-23T22:37:27Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade Grav to 2.2.2 or later.","reach":"internet","title":"Grav CMS: page editors can read secrets and expose them publicly","impact":"high","summary":"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.","category":"runtime","who_cares":["grav","self-hosted","php"],"confidence":0.7,"needs_auth":"yes","worst_case":"Secrets like the security salt and Redis passwords become readable by all visitors.","analyst_note":"Confirm the exact fixed behaviour and any config check to run; the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-112781 gave no detection steps.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":["grav-below-2.0.0","no-page-editor-accounts"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000499,"input_tokens":2940,"output_tokens":409,"severity_before":"high"},"analyst_status":"done","analyst_note":"Confirm the exact fixed behaviour and any config check to run; the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-112781 gave no detection steps.","search":"'-112781':14A,17A '-2026':13A,16A '2.0.0':29B,69C '2.2.2':31B,71C 'add':40B,86C 'allow':78C 'attack':55B,93C 'bypass':48B,100C 'cms':2A,19B,27B 'config':41B,87C,104C 'configur':84C 'contain':72C 'credenti':60B,112C 'cve':12A,15A 'deni':105C 'direct':42B,88C 'disclosur':75C 'edit':38B,97C 'editor':4A,80C 'expos':9A,57B,109C 'form':46B,92C 'frontmatt':45B,91C 'getgrav/grav':18A 'grav':1A,20B,26B,67C 'host':25B 'inform':74C 'let':32B 'page':3A,37B,44B,79C,90C,96C 'page-edit':36B,95C 'password':63B,115C 'path':106C 'permiss':39B,98C 'php':21B 'plugin':59B,111C 'protect':83C 'public':11A 'read':6A,82C 'redact':52B,107C 'redi':62B,114C 'runtim':22B 'sandbox':51B,103C 'secret':7A 'security.salt':58B,110C 'self':24B 'self-host':23B 'twig':50B,102C 'user':34B 'version':28B 'visitor':66B,118C 'vulner':76C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T20:17:55+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-112781","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-112781","severity":null,"published_at":"2026-10-19T20:17:55+00:00","modified_at":"2026-10-20T16:17:03+00:00","first_seen_at":"2026-10-23T21:57:19+00:00","fetched_at":"2026-10-23T22:28:57+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-112781:636","url":null,"severity":null,"published_at":"2026-10-24T00:19:08+00:00","modified_at":"2026-10-24T00:19:08+00:00","first_seen_at":"2026-10-24T00:19:08+00:00","fetched_at":"2026-10-24T00:19:08+00:00","note":"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":[{"id":2546,"url":"https://github.com/getgrav/grav/security/advisories/GHSA-8wwq-x3w5-fxmw","title":"GHSA-8wwq-x3w5-fxmw: Page editor can read protected configuration through form config-*@ directives","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":2547,"url":"https://cve.armis.com/CVE-2026-112781","title":"Armis CVE-2026-112781","kind":"other","source":"analyst","text":null,"published_at":null,"relation":"mentions","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}