Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate with low-privilege form-authoring account
-
DeliveryInject JavaScript payload into field property (prepend/append/spacer/section/option label)
-
ExploitMalicious form definition stored server-side
-
InstallVictim loads page containing compromised form
-
C2Browser renders unescaped |raw property value
-
ExecuteInjected script executes in victim browser context
-
ImpactSession token or credential exfiltration to attacker
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 a valid Grav CMS account with form-authoring privileges (PR:L per CVSS 4.0 vector). The attacker must have write access to form field-definition properties - specifically prepend, append, spacer text, section text, or select option labels - within the Grav administrative interface or equivalent configuration mechanism. Passive user interaction is required: a victim must load any page that renders the compromised form (UI:P per CVSS 4.0), but no active deception of the victim is necessary. Exploitation is limited to Grav deployments where form-authoring access is granted to users who are not fully trusted administrators; single-administrator sites are not at risk unless admin credentials are separately compromised. The vulnerability is not triggerable by anonymous form submitters - the injection point is exclusively in the form schema authoring workflow, not in form submission handling. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P) scoring 5.1 accurately captures the risk profile: network-accessible, low-complexity stored XSS gated on low-level privileges. The PR:L requirement is the dominant real-world risk limiter - exploitation is strictly contingent on the attacker holding a form-authoring account within Grav, ruling out anonymous exploitation. The UI:P (passive user interaction) metric is a notable risk amplifier relative to reflected XSS: victims need only load a page hosting the compromised form, with no phishing or active deception required. No EPSS score was provided in the input data, so exploitation probability cannot be quantified beyond the CVSS signal. No KEV listing exists, confirming no confirmed active exploitation at time of analysis. The subsequent-system impact metrics (SC:L/SI:L) in the CVSS 4.0 vector appropriately reflect the cross-origin JavaScript execution context affecting victim browser sessions. In multi-tenant, agency, or community Grav deployments where contributor-level users are granted form-editing rights, the PR:L threshold is easily met; single-administrator installations are not vulnerable unless admin credentials are separately compromised. |
| Exploit ScenarioDerived | An attacker with a contributor-level Grav CMS account opens a contact or registration form in the admin interface and inserts a JavaScript payload - such as a session-stealing script - into the 'prepend' property of a select field or the spacer text of a form section. The Grav Form Plugin renders this value through a |raw Twig filter without sanitization, embedding the live script tag in every subsequent page load of that form. All visitors - including unauthenticated public users - who load the form page execute the attacker's script in their browser context, enabling session token theft, credential harvesting, or redirection to attacker-controlled infrastructure. |
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 the Grav Form Plugin before version 9.1.19 allows authenticated form authors to embed persistent JavaScript payloads by supplying malicious content in field-definition properties - including prepend, append, spacer text, section text, and select option labels - which the form templates render verbatim via unescaped |raw filters and unquoted attributes. The injected script executes in every subsequent visitor's browser without any active deception required, making this a persistent, multi-victim condition for the life of the form definition. No CISA KEV listing or public exploit code has been identified at time of analysis, but the low-complexity exploitation path and PR:L privilege requirement make this a realistic threat in any Grav deployment where form-authoring access is granted to partially trusted users.
RemediationAI
Upgrade the Grav Form Plugin to version 9.1.19 or later, which introduces proper HTML escaping for all affected field-definition properties. The vendor security advisory at https://github.com/getgrav/grav/security/advisories/GHSA-5jrr-wfgh-mhg9 is the authoritative reference for patch details. If an immediate upgrade is not feasible, restrict form-authoring privileges to fully trusted administrators only, removing that capability from contributor-level or externally-supplied accounts - this eliminates the PR:L attack path entirely while the patch is staged. As a complementary measure, audit all existing form definitions for unexpected raw HTML or script tags in prepend, append, spacer, section, and select option label fields, and sanitize any discovered payloads. No functional side effects are expected from the patch, as proper escaping of decorative label fields does not alter form behavior.
Affected VersionsENISA
Affected Packages
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 is a flat-file CMS (CPE: cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*) that renders user-facing forms through its Form Plugin using Twig templates. The root cause (CWE-79: Improper Neutralization of Input During Web Page Generation) is the application of Twig's |raw filter to user-controlled field-definition properties, which explicitly bypasses Twig's automatic HTML output escaping, combined with rendering of property values in unquoted HTML attributes - a secondary injection surface. The affected properties are form field decorators and layout elements: prepend labels, append labels, spacer text, section text, and select option labels. Because these properties reside in the form schema authored by privileged users at design time, the injection is stored server-side and replayed to every visitor who loads the form, distinguishing this from reflected XSS and elevating the potential victim count significantly.
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:L/VI:L/VA:N/SC:L/SI:L/SA:N
Network-reachable stored XSS requiring a low-privilege form-author account (PR:L) and passive victim page load (UI:R); scope change reflects JavaScript executing in victim browser security context.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Grav Form Plugin before 9.1.19 fails to escape field-definition properties including prepend, append, spacer text, section text, and select option labels in form templates. Attackers with form authoring privileges can inject arbitrary HTML and JavaScript that executes for all form visitors through unescaped |raw filters and unquoted attributes.
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-60590
GHSA-vggh-9vqg-95jr
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB