Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Grav Admin Panel
-
DeliveryInject script into page metadata/taxonomy field
-
ExploitPayload stored in page frontmatter
-
ExecutionAdministrator opens page in admin UI
-
PersistScript executes in admin session
-
ImpactHijack session / escalate privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Grav Admin Panel account with page create/edit permission to inject the payload into the data[header][metadata], data[header][taxonomy][category], or data[header][taxonomy][tag] fields of the POST /admin/pages/[page] endpoint (PR:H). Execution additionally requires a privileged user to open or render the poisoned page in the administrative interface (UI:A/active interaction), so it is not exploitable against an unauthenticated remote attacker and depends on a second admin viewing the malicious page. Affects grav-plugin-admin versions prior to 1.11.0-beta.1. |
| Impact | This is a genuine but low-priority issue. The vendor CVSS 4.0 vector (6.2 Medium) requires PR:H (high privileges) and UI:A (active victim interaction), meaning the attacker must already hold an authenticated admin/editor account capable of creating or editing pages, and a second privileged user must then view the poisoned page in the Admin Panel. EPSS is very low at 0.04% (11th percentile), and there is no CISA KEV listing, so widespread or automated exploitation is not indicated. Publicly available exploit code exists (a working <script>alert()</script> PoC is published in the GHSA-mpjj-4688-3fxg advisory), but a PoC is not evidence of active exploitation. The signals are internally consistent: a stored XSS reachable only by authenticated content authors, with scope change (SC:H/SI:H/SA:H in 4.0) reflecting that the payload executes in another user's browser session. The primary real risk is privilege escalation within the admin team (a lower-privileged editor poisoning a page to hijack a full administrator's session), not mass exploitation. |
| Exploit ScenarioDerived | An attacker with a low-privileged Grav admin account (e.g., an editor able to create/edit pages) injects a script payload such as <script>alert('PoC')</script> into a page's Metadata key, Taxonomy Category, or Tag field, which is saved into the page's YAML frontmatter. When a full administrator later opens or renders that page in the Admin Panel, the stored script executes in their authenticated session, enabling session/cookie theft or admin-account takeover. A working PoC is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Sep 26, 2026
Stored cross-site scripting (XSS) in the Grav Admin plugin prior to 1.11.0-beta.1 allows an authenticated administrator with page create/edit rights to inject malicious JavaScript into the data[header][metadata], data[header][taxonomy][category], or data[header][taxonomy][tag] fields of the POST /admin/pages/[page] endpoint; the payload is persisted in the page's YAML frontmatter and executes in the browser of any privileged user who later opens or renders that page in the admin interface. Exploitation requires a valid admin account (PR:H) and a second privileged user to view the poisoned page (UI:A), and publicly available exploit code exists in the form of a documented proof-of-concept payload, though EPSS is very low at 0.04% (11th percentile) and there is no confirmed active exploitation (CISA KEV). Impact is limited to client-side compromise of admin sessions - session/cookie theft, credential phishing, and CSRF-style actions on behalf of the victim - rather than server-side code execution.
Earlier versions of this analysis (1)
RemediationAI
Vendor-released patch: upgrade the Grav Admin plugin to 1.11.0-beta.1 or later, which introduces HTML-escaping render functions in the Selectize form widget; the fix is hosted at https://github.com/getgrav/grav-plugin-admin/commit/99f653296504f1d6408510dd2f6f20a45a26f9b0 and the full advisory at https://github.com/getgrav/grav/security/advisories/GHSA-mpjj-4688-3fxg. Because the fixed release is a beta, organizations that cannot adopt a pre-release should treat the risk as low given the PR:H/UI:A requirements and apply compensating controls: restrict Admin panel access to a trusted, minimal set of administrator accounts and enforce least privilege on page create/edit permissions so that lower-trust users cannot write arbitrary frontmatter; audit existing page frontmatter (metadata keys, taxonomy categories, tags) for '<script', 'onerror=', 'javascript:' or similar payloads and remove any suspicious values; and, where the trade-off is acceptable, temporarily disable the metadata/taxonomy editing fields or place the /admin path behind IP allow-listing or a reverse-proxy authentication layer - noting this may break legitimate editorial workflows. There is no vendor-released patch for versions below 1.11.0-beta.1, so upgrades or the above compensating controls are the only identified mitigations.
Affected VersionsENISA
Affected Packages
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
The vulnerability is a classic per-class CWE-79 (Improper Neutralization of Input During Web Page Generation) stored XSS in the Grav Admin plugin, an HTML-based administrative UI for the Grav flat-file CMS. Grav stores per-page configuration in YAML frontmatter, and the Admin panel exposes fields for page metadata keys, taxonomy categories, and taxonomy tags via a Selectize.js-backed form widget. The commit that fixes this issue (99f653296504f1d6408510dd2f6f20a45a26f9b0) adds default 'SafeRender' option/item functions to themes/grav/app/forms/fields/selectize.js that call Selectize's built-in escape() helper before interpolating user-controlled text into the DOM. In other words, the raw value was previously concatenated into template output without HTML-encoding, so any tag or attribute payload placed into metadata/category/tag fields was rendered as live markup both when re-editing the page and when metadata was surfaced in the admin UI. The CPE cpe:2.3:a:getgrav:grav-plugin-admin:*:*:*:*:*:*:*:* and the EUVD affected range (grav < 1.11.0-beta.1) confirm the Admin plugin is the affected component, distributed as the Composer package composer/getgrav/grav-plugin-admin. Note the same commit bundles generic-message changes for a password-reset rate-limit issue (GHSA-q3qx-cp62-f6m7), indicating the release folds several advisory fixes together.
Know when Grav Plugin Admin 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:L/VI:L/VA:N/SC:H/SI:H/SA:H
Injection requires an authenticated content author (PR:H) and a victim admin viewing the page (UI:R); stored XSS runs in another user's session (S:C) with limited C/I impact and no availability effect.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
5DescriptionCVE.org
This admin plugin for Grav is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages. Prior to 1.11.0-beta.1, a Stored Cross-Site Scripting (XSS) vulnerability was identified in the /admin/pages/[page] endpoint of the Grav application. This vulnerability allows attackers to inject malicious scripts into the data[header][metadata], data[header][taxonomy][category], and data[header][taxonomy][tag] parameters. These scripts are stored in the page frontmatter and executed automatically whenever the affected page is accessed or rendered in the administrative interface. This vulnerability is fixed in 1.11.0-beta.1.
Executive ViewAI
Organizations using This admin should be aware of moderate risk from CVE-2025-66311, a cross-site scripting vulnerability rated CVSS 5.4. Attackers could inject scripts to steal sessions or perform actions as authenticated users. Proof-of-concept code is publicly available. A patch is available and should be applied during regular vulnerability management.
Apply vendor patch. If patching is delayed: implement CSP headers, enable HttpOnly cookies, deploy WAF XSS rules.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Related Vulnerabilities in Grav Admin Plugin XSS and Information Disclosure
View all 6More in Grav Plugin Admin
View allGrav Admin Plugin is an HTML user interface that provides a way to configure Grav and create and modify pages. Rated cri
grav-plugin-admin is vulnerable to Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').
grav-plugin-admin is vulnerable to Improper Restriction of Rendered UI Layers or Frames. Rated medium severity (CVSS 5.4
EUVD-2025-200099
GHSA-mpjj-4688-3fxg
NVD
CVE.org
EPSS
VulDB
Exploit-DB