Skip to main content

Grav CMS EUVDEUVD-2026-46183

| CVE-2026-65008 CRITICAL
Code Injection (CWE-94)
2026-07-21 VulnCheck GHSA-3q93-h5p2-5mx8
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain account with admin.pages/api.pages.write
  2. Delivery
    Inject Class::method callable into page frontmatter
  3. Exploit
    Blueprint::dynamicData() reaches call_user_func_array() sink
  4. Execution
    Visitor loads poisoned page
  5. Impact
    Arbitrary code runs as web-server user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated account possessing the Grav admin.pages permission or the api.pages.write permission to inject a malicious 'Class::method' callable directive into a page's frontmatter; this privileged write is the essential prerequisite and the primary limiting factor. Once planted, execution requires only that the affected page be accessed - this second step needs no authentication and can be triggered by any visitor or by the attacker directly, with no user interaction beyond a normal page load. The exploit is confirmed against Grav 2.0.4; deployments that restrict page-write permissions to a single trusted administrator sharply limit who can stage the attack.

Impact

The vendor-assigned CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, base 9.3) rates this as critical and unauthenticated, but that PR:N reflects only the trigger stage - an unauthenticated visitor rendering the poisoned page - not the injection stage, which requires an authenticated account with the admin.pages or api.pages.write permission. In practice this is a two-stage flaw: a privileged authenticated write plants the payload, then unauthenticated execution occurs on access. That materially lowers real-world exploitability versus a pure pre-auth RCE, so treating it strictly as PR:N overstates ease of initial compromise; my independent assessment uses PR:H to reflect the required elevated content-management privilege. Impact is nonetheless full compromise of the web-server context (C/I/A all High). No EPSS score, SSVC decision, KEV listing, or public POC was provided, so exploitation-probability signals are absent - prioritize on the trust model: if untrusted or low-trust users can obtain page-write permissions this is high priority, whereas single-trusted-admin deployments carry lower practical risk.

Exploit ScenarioDerived

An attacker with a low-trust editor account (holding admin.pages or api.pages.write) creates or edits a page and embeds a malicious Class::method callable and arguments in the frontmatter. The next time anyone loads that page - the attacker themselves or an unauthenticated site visitor - Blueprint::dynamicData() invokes the callable via call_user_func_array(), executing the attacker's command as the web-server user. No public POC was provided, but the low attack complexity and simple call_user_func_array() sink make exploitation straightforward once page-write access is obtained.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 21, 2026

Remote code execution in Grav CMS 2.0.4 (fixed in 2.0.7) lets an authenticated user holding the admin.pages or api.pages.write permission plant a malicious Class::method callable directive in page frontmatter, which Blueprint::dynamicData() feeds unfiltered into call_user_func_array(). The injected command then executes as the web-server user for any subsequent visitor to the page, including unauthenticated ones. Reported by VulnCheck (CWE-94, CVSS 4.0 base 9.3); no public exploit identified at time of analysis and it is not listed in CISA KEV.

RemediationAI

Vendor-released patch: upgrade to Grav 2.0.7 or later, which introduces restrictions on the callable resolution path; this is the primary and recommended fix, per advisory GHSA-fj2p-qj2f-74v5 (https://github.com/getgrav/grav/security/advisories/GHSA-fj2p-qj2f-74v5). If immediate patching is not possible, tighten the trust boundary that gates the attack: audit and minimize accounts holding admin.pages and api.pages.write so only fully trusted operators can create or edit pages, and disable or restrict the admin panel and Pages API to trusted networks - trade-off is reduced content-editing convenience and possible workflow disruption for delegated editors. Additionally, review existing pages for unexpected callable/Class::method directives in frontmatter, and run the web server under a least-privileged account to limit the blast radius of any code that does execute.

Affected VersionsENISA

grav 0 <2.0.7

Affected Packages

composer getgrav/grav fix: 2.0.7
euvd grav fix: 2.0.7

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Grav is a PHP-based flat-file content management system (cpe:2.3:a:getgrav:grav). The root cause is CWE-94 (Code Injection): Blueprint::dynamicData() in system/src/Grav/Common/Data/Blueprint.php accepts a callable expressed as a 'Class::method' string plus arguments and dispatches it straight to PHP's call_user_func_array() with no allowlist or type restriction on which classes or methods may be invoked. Because the form plugin routes page frontmatter through the blueprint dynamic-data resolution path, attacker-controlled frontmatter becomes an attacker-controlled callable. This converts a data-binding mechanism into an arbitrary-code-execution primitive whenever the affected page is rendered.

Know when Grav gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.2 HIGH

Injection requires the elevated admin.pages/api.pages.write permission so PR:H; network-reachable simple callable sink gives AC:L, and full code execution yields C/I/A High with no scope change.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Jul 21, 2026 - 13:17 EUVD
CVE Published
Jul 21, 2026 - 11:39 cve.org
CRITICAL 9.3

DescriptionCVE.org

Grav 2.0.4 (fixed in 2.0.7) contains a remote code execution vulnerability in Blueprint::dynamicData() (system/src/Grav/Common/Data/Blueprint.php), which passes a Class::method callable string and its arguments directly to call_user_func_array() without any allowlist. Because the form plugin routes page frontmatter through this path, an authenticated account with the admin.pages (or api.pages.write) permission can plant a malicious callable directive in a page. The command then executes as the web-server user whenever anyone - including an unauthenticated visitor - accesses the page.

Executive ViewAI

Why It Matters

Grav CMS version 2.0.4 contains a critical remote code execution vulnerability affecting administrative users with specific page editing permissions. Attackers with admin.pages or api.pages.write privileges can inject malicious code that executes for all subsequent website visitors, compromising site integrity and potentially exposing all users to attack.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Implement immediate compensating controls: (1) strictly limit admin.pages and api.pages.write permissions to essential personnel only; (2) audit and lock down all pages, restricting edit capabilities; (3) implement Web Application Firewall (WAF) rules to detect and block suspicious call_user_func_array patterns; (4) enable comprehensive logging and monitoring of page modifications and website activity; (5) prepare and validate upgrade procedure for Grav CMS 2.0.7 when available.

Threat Intelligence Overview

EPSS Score
0.6%
Top 53% exploitable
Prevalence
Medium
well-known open-source PHP flat-file CMS, far smaller footprint than WordPress
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Exploit-DB GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

67
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +46
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Grav

View all
CVE-2025-66294 HIGH POC
8.7 Dec 01

Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol

CVE-2025-66301 HIGH POC
8.6 Dec 01

Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their

CVE-2025-50286 HIGH POC
8.1 Aug 06

A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug

CVE-2024-34082 CRITICAL POC
9.9 May 15

Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a

CVE-2021-47812 CRITICAL POC
9.8 Jan 16

GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv

CVE-2026-75827 CRITICAL POC
9.3 Aug 18

Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri

CVE-2026-75837 CRITICAL POC
9.3 Aug 18

Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm

CVE-2026-75828 CRITICAL POC
9.3 Aug 18

Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past

CVE-2025-66844 CRITICAL POC
9.1 Dec 15

Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make

CVE-2025-66299 HIGH POC
8.8 Dec 01

Grav is a file-based Web platform. Prior to 1.8.0-beta.27, Grav CMS is vulnerable to a Server-Side Template Injection (S

CVE-2026-72819 HIGH POC
8.7 Aug 14

Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary

CVE-2024-28119 HIGH POC
8.8 Mar 21

Grav is an open-source, flat-file content management system. Rated high severity (CVSS 8.8), this vulnerability is remot

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy