CVE-2026-54002 Kirby: Cross-site scripting (XSS) from incomplete HTML/XML sanitization in `Dom::sanitize()`
Attackers can inject malicious scripts via unsanitized HTML/XML tags in Kirby CMS fields, leading to stored cross-site scripting.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-54002?
CVE-2026-54002 is a high-severity cross-site scripting vulnerability in getkirby kirby, published on 9 Jul 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Official description
Kirby is an open-source content management system. Prior to 4.9.4 and 5.4.4, Kirby sites and plugins that use the writer or list fields or call Dom::sanitize(), Sane::sanitize(), Sane::Html::sanitize(), Sane::Svg::sanitize(), Sane::Xml::sanitize(), Sane::sanitizeFile(), or file sanitizeContents() with untrusted input allow malicious markup injected as children of an unknown HTML or XML tag to pass through Dom::sanitize() without being correctly sanitized, causing stored cross-site scripting. This issue is fixed in versions 4.9.4 and 5.4.4.
Which versions are affected by CVE-2026-54002?
4 open source packages ship an affected version, including getkirby/cms.
| Package | Affected | Fixed in |
|---|---|---|
getkirby/cms Packagist | All versions | 4.9.4 |
getkirby/cms Packagist | All versions | 4.9.4 |
getkirby/cms Packagist | From 5.0.0-alpha.1 | 5.4.4 |
getkirby/cms Packagist | From 5.0.0-alpha.1 | 5.4.4 |
How do I fix CVE-2026-54002?
Upgrade getkirby/cms to a fixed version for your release line: 4.9.4 or 5.4.4.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-54002 being exploited?
There is no known exploitation of CVE-2026-54002 in the wild and no public exploit code.
Sources
Also known as GHSA-wr9h-4r83-f4v6.