🔐 CVE Alert

CVE-2026-85600

MEDIUM 5.4

Grav Admin before 2.0.21 Stored XSS via username

CVSS Score
5.4
EPSS Score
0.0%
EPSS Percentile
0th

Grav Admin (getgrav/grav-plugin-admin2) versions <= 2.0.19 contain a stored cross-site scripting vulnerability in the tHtml() function (src/lib/stores/i18n.svelte.ts), which substitutes untrusted parameters such as usernames into translation templates before parsing the result as markdown. Grav's server-side username validation (DataUser::isValidUsername) blocks filesystem-dangerous characters but not <, >, ", or ', allowing an attacker to register a username containing an HTML payload. When an administrator views a UI surface that renders the username through tHtml()—such as the two-factor force-disable confirmation prompt or the 'page is locked' editor notice—the payload executes in their authenticated session. Fixed in 2.0.21.

CWE CWE-79
Vendor getgrav
Product grav
Published Sep 4, 2026
Last Updated Sep 4, 2026
Stay Ahead of the Next One

Get instant alerts for getgrav grav

Be the first to know when new medium vulnerabilities affecting getgrav grav are published — delivered to Slack, Telegram or Discord.

Get Free Alerts → Free · No credit card · 60 sec setup

CVSS v3 Breakdown

CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Affected Versions

getgrav / grav
0 < 2.0.21

References

NVD ↗ CVE.org ↗ EPSS Data ↗
github.com: https://github.com/getgrav/grav/security/advisories/GHSA-96xm-c5hr-59rx vulncheck.com: https://www.vulncheck.com/advisories/grav-admin-before-2.0.21-stored-xss-via-username

Credits

🔍 alham-rizvi