Loading...
Skip to main content

CVE-2026-32870 — Kirby has XML injection in getkirby/cms — CVE Details

MEDIUM

Kirby has XML injection in its XML creator toolkit

Published April 23, 2026Updated May 5, 2026Source: osv

Summary

### TL;DR This vulnerability only affects Kirby sites that use the `Xml` data handler (e.g. `Data::encode($string, 'xml')`) or the `Xml::create()`, `Xml::tag()` or `Xml::value()` method(s) in site or plugin code. The Kirby core does not use any of the affected methods. If consumers use an affected method and cannot rule out input to these methods controlled by an attacker, Kirby strongly recommends that they update to a patch release. ---- ### Introduction XML strings contain structured data in tags and attributes. Depending on the used XML schema, this data can carry specific meaning that can lead to actions in other systems that parse and act on the XML data. Tags and attributes are detected based on their specific syntax, which includes characters such as `<`, `>`, `"`, and `&`. If these characters are to be used verbatim in text within the XML string, they can be escaped using a `<![CDATA[ ]]>` block. XML injection is an attack on a system generating or parsing XML files. By injecting special characters into input data, XML output with a malicious meaning could be generated by a vulnerable system. ### Impact Kirby's `Xml::value()` method has special handling for `<![CDATA[ ]]>` blocks. If the input value is already valid `CDATA`, it is not escaped a second time but allowed to pass through. However it was possible to trick this check into allowing values that only *contained* a valid `CDATA` block but also contained other structured data outside of the `CDATA` block. This structured data would then also be allowed to pass through, circumventing the value protection. The `Xml::value()` method is used in `Xml::tag()`, `Xml::create()` and in the `Xml` data handler (e.g. `Data::encode($string, 'xml')`). Both the vulnerable methods and the data handler are not used in the Kirby core. However they may be used in site or plugin code, e.g. to create XML strings from input data. If those generated files are passed to another implementation that assigns specific meaning to the XML schema, manipulation of this system's behavior is possible. Kirby sites that don't use XML generation in site or plugin code are *not* affected. ### Patches The problem has been patched in [Kirby 4.9.0](https://github.com/getkirby/kirby/releases/tag/4.9.0) and [Kirby 5.4.0](https://github.com/getkirby/kirby/releases/tag/5.4.0). Please update to one of these or a [later version](https://github.com/getkirby/kirby/releases) to fix the vulnerability. In all of the mentioned releases, Kirby has added additional checks that only allow unchanged `CDATA` passthrough if the entire string is made up of valid `CDATA` blocks and no structured data. This protects all uses of the method against the described vulnerability. ### Credits Kirby thanks to Patrick Falb (@dapatrese) at [FORMER 03](https://former03.de/) for responsibly reporting the identified issue.

Advisory Timeline

  • First published April 23, 2026 (172 days ago).
  • Last revised May 5, 2026 — 12 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Composer
Update getkirby/cms to 5.4.0 or later
composer require "getkirby/cms:^5.4.0"
Composer
Update getkirby/cms to 4.9.0 or later
composer require "getkirby/cms:^4.9.0"

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (2)

Affects 1 ecosystem: packagist (1).

PackageEcosystemAffectedFixed In
getkirby/cms
packagist
5.0.0, 5.0.1, 5.0.2, 5.0.3 (+17 more)5.4.0
getkirby/cms
packagist
3.0.0, 3.0.1, 3.0.1-rc.1, 3.0.2 (+229 more)4.9.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.0 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:H/SA:N

Frequently Asked Questions

What is CVE-2026-32870?
Kirby has XML injection in its XML creator toolkit This vulnerability has been assigned a severity rating of MEDIUM (CVSS score: 8.0/10).
How do I check if my project is affected by CVE-2026-32870?
CVE-2026-32870 affects getkirby/cms. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-32870 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.0

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-9wfj-c55w-j9qr

Related CVEs

  • CVE-2026-54003
    CRITICAL

    Kirby: External Initialization of the Panel on reverse proxy setups with the `Forwarded` header

  • CVE-2026-44174
    HIGH

    Kirby CMS has an Arbitrary Method Call via REST API Search and Collection Query Endpoints

  • CVE-2026-44177
    HIGH

    Kirby CMS has pre-authentication path traversal and PHP file inclusion during user lookup

  • CVE-2026-34587
    HIGH

    Kirby has Server-Side Template Injection (SSTI) via double template resolution in option rendering

  • CVE-2024-41964
    HIGH

    Kirby has insufficient permission checks in the language settings

  • CVE-2026-75592
    MEDIUM

    Kirby: Access to image files outside of the site root via path traversal in the media handling

  • CVE-2026-88023
    MEDIUM

    MongoDB: GridFS data disclosure and deletion via query-operator injection in file IDs

  • CVE-2026-62993
    MEDIUM

    Smarty: SSRF via redirect bypass of trusted_uri using {fetch}

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies