Description
Grav versions from 1.5.2 through 2.0.12 contain a stored cross-site scripting vulnerability in the Security::detectXss() function (system/src/Grav/Common/Security.php). The event-handler scan is anchored at `<` and uses `[^>]*?`, which cannot cross the first literal `>`; when a `>` appears inside a quoted attribute value the browser keeps the tag open and parses a subsequent event handler (e.g. onerror), so the detector and browser disagree. A page editor without admin.super privileges can save page content such as `<img src=x title=">" onerror=alert(document.domain)>`, which is accepted, stored, and executed in the site origin when any visitor (including unauthenticated users) views the page. Fixed in 2.0.13.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| getgrav | grav | 1.5.2 – ≤ 2.0.12 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Packagist | getgrav/grav | >= 1.5.2, < 2.0.13 | 2.0.13 | GHSA-269c-h76q-8cxw |
References
- GitHub Security Advisory (GHSA-269c-h76q-8cxw) vendor-advisory
- Patch Commit patch
- VulnCheck Advisory: Grav before 2.0.13 Stored XSS via quoted-attribute bypass third-party-advisory