Skip to main content

Grav Admin Plugin EUVDEUVD-2025-200099

| CVE-2025-66311 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2025-12-01 security-advisories@github.com GHSA-mpjj-4688-3fxg
6.2
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Grav Admin Panel
  2. Delivery
    Inject script into page metadata/taxonomy field
  3. Exploit
    Payload stored in page frontmatter
  4. Execution
    Administrator opens page in admin UI
  5. Persist
    Script executes in admin session
  6. Impact
    Hijack 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv2 – 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)
v1 Mar 15, 2026 - 13:34 CVSS 5.4

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

grav < 1.11.0-beta.1

Affected Packages

composer getgrav/grav fix: 1.11.0-beta.1
euvd grav fix: 1.11.0-beta.1

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

Vendor (github) PRIMARY 6.2 MEDIUM
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
vuln.today AI 4.8 MEDIUM

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.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

5
CVSS changed
Sep 26, 2026 - 00:22 NVD
5.4 (MEDIUM) 6.2 (MEDIUM)
Patch released
Mar 15, 2026 - 13:34 nvd
Patch available
PoC Detected
Dec 03, 2025 - 21:56 vuln.today
Public exploit code
CVE Published
Dec 01, 2025 - 22:15 cve.org
MEDIUM 6.2
CVE Published
Dec 01, 2025 - 22:15 nvd
MEDIUM 5.4

DescriptionCVE.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

Why It Matters

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.

Business Impact: Low
Compensating Controls

Apply vendor patch. If patching is delayed: implement CSP headers, enable HttpOnly cookies, deploy WAF XSS rules.

Threat Intelligence Overview

EPSS Score
0.0%
Top 89% exploitable
Prevalence
Low
Grav is a niche open-source flat-file CMS with modest adoption
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Low

Priority Score

51
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +31
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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