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.
Published: 2026-07-09
Score: 8.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Kirby is an open‑source content management system. Before versions 4.9.4 and 5.4.4, sites and plugins that use writer or list fields or that explicitly invoke Dom::sanitize(), Sane::sanitize(), Sane::Html::sanitize(), Sane::Svg::sanitize(), Sane::Xml::sanitize(), Sane::sanitizeFile(), or file sanitizeContents() with untrusted input were vulnerable to stored cross‑site scripting. Malicious markup injected as children of an unknown HTML or XML tag bypassed the sanitization routine and was stored in the database, meaning any subsequent rendering to other users would execute arbitrary JavaScript. The flaw is a classic injection vulnerability (CWE‑79) and also involves improper sanitization of unknown tags (CWE‑87).

Affected Systems

The vulnerability affects the open‑source Kirby CMS from the getkirby vendor. All projects built on Kirby v4 prior to 4.9.4 and Kirby v5 prior to 5.4.4 that use the writer or list fields, or that explicitly call Dom::sanitize(), Sane::sanitize(), Sane::Html::sanitize(), Sane::Svg::sanitize(), Sane::Xml::sanitize(), Sane::sanitizeFile(), or file sanitizeContents() with untrusted input, are susceptible. It also applies to any plugin that operates on similar sanitization functions without applying the latest updates. Affected versions are explicitly mentioned as 4.9.4 and 5.4.4, which are the first secure releases.

Risk and Exploitability

With a CVSS score of 8.5 the vulnerability is considered high‑risk and would be exploitable when an attacker can submit or otherwise supply untrusted input to the identified fields or functions. Based on the description, it is inferred that the attack is performed via the web interface, typically by submitting crafted data that later becomes stored and rendered to other users. The EPSS score of < 1% indicates a very low probability of exploitation currently, but the lack of listing in CISA’s KEV catalog does not diminish its significance. The exploit requires user interaction to inject the payload, but once present it can affect all users browsing the compromised site. The vulnerability is more concerning in multi‑tenant or public sites where the attacker can influence a larger audience.

Generated by OpenCVE AI on July 28, 2026 at 08:44 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Kirby CMS to version 4.9.4 or 5.4.4, whichever applies to your installation, to incorporate the security fix for Dom::sanitize() and related functions.
  • If an immediate upgrade is not possible, review all editable fields such as writer or list fields and ensure that input is either not stored or is passed through a stricter sanitization routine that blocks unknown tags. Disable or remove the use of Dom::sanitize() and related Sane:: methods in plugins until the patch can be applied.
  • Verify that all third‑party plugins that use Dom::sanitize() or its variants are updated to compatible versions or patched to exclude the vulnerable logic.

Generated by OpenCVE AI on July 28, 2026 at 08:44 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-wr9h-4r83-f4v6 Kirby: Cross-site scripting (XSS) from incomplete HTML/XML sanitization in `Dom::sanitize()`
History

Thu, 09 Jul 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Getkirby
Getkirby kirby
Vendors & Products Getkirby
Getkirby kirby

Thu, 09 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Thu, 09 Jul 2026 19:15:00 +0000

Type Values Removed Values Added
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.
Title Kirby: Cross-site scripting (XSS) from incomplete HTML/XML sanitization in `Dom::sanitize()`
Weaknesses CWE-79
CWE-87
References
Metrics cvssV4_0

{'score': 8.5, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-09T19:26:59.702Z

Reserved: 2026-06-11T16:34:11.635Z

Link: CVE-2026-54002

cve-icon Vulnrichment

Updated: 2026-07-09T19:26:55.931Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-28T08:45:04Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

  • CWE-87

    Improper Neutralization of Alternate XSS Syntax