CVE-2026-32870
CVE-2026-32870 is a high-severity vulnerability in Getkirby Kirby with a CVSS 3.x base score of 7.5. It is not currently listed as actively exploited by CISA, and its EPSS exploit-prediction score is low. The underlying weakness is classified as CWE-91.
Key facts
- Severity: High (CVSS 3.x base score 7.5)
- CVSS v4: 6.9
- EPSS exploit prediction: 0% (27th percentile)
- Actively exploited: Not listed in CISA KEV
- EU (EUVD) id: EUVD-2026-25368
- Weakness: CWE-91
- Affected product: Getkirby Kirby
- Published:
- Last modified:
Description
Kirby is an open-source content management system. 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, prior to versions 4.9.0 and 5.4.0, 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. The problem has been patched in Kirby 4.9.0 and Kirby 5.4.0. 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.
Frequently asked questions
- What is CVE-2026-32870?
- Kirby is an open-source content management system. 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, prior to versions 4.9.0 and 5.4.0, 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. The problem has been patched in Kirby 4.9.0 and Kirby 5.4.0. 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.
- How severe is CVE-2026-32870?
- CVE-2026-32870 has a CVSS 3.x base score of 7.5, rated high severity. It is exploitable over network with low attack complexity, requires no privileges and no user interaction. Impact on confidentiality is none, integrity high, and availability none.
- Is CVE-2026-32870 being actively exploited?
- It is not currently listed in CISA's KEV catalog. Its EPSS exploit-prediction score is 0% (27th percentile), an estimate of the probability of exploitation in the next 30 days.
- What products are affected by CVE-2026-32870?
- CVE-2026-32870 affects Getkirby Kirby. See the affected-products list for the exact vulnerable versions.
- How do I fix CVE-2026-32870?
- Review the linked vendor and NVD advisories for patched versions and mitigations, then upgrade or apply the recommended workaround. Given its high severity, prioritise patching exposed systems.
- Does CVE-2026-32870 have an EU (EUVD) identifier?
- Yes. CVE-2026-32870 is tracked in the ENISA EU Vulnerability Database (EUVD) as EUVD-2026-25368.
- When was CVE-2026-32870 published?
- CVE-2026-32870 was published on 2026-04-24 and last updated on 2026-06-17.
References
- https://github.com/getkirby/kirby/releases/tag/4.9.0
- https://github.com/getkirby/kirby/releases/tag/5.4.0
- https://github.com/getkirby/kirby/security/advisories/GHSA-9wfj-c55w-j9qr
Affected products (1)
- cpe:2.3:a:getkirby:kirby:*:*:*:*:*:*:*:*
More vulnerabilities in Getkirby Kirby
- CVE-2025-31493 — Critical (CVSS 9.1): Kirby is an open-source content management system. A vulnerability in versions prior to 3.9.8.3, 3.10.1.2, and 4.7.1…
- CVE-2025-30159 — Critical (CVSS 9.1): Kirby is an open-source content management system. A vulnerability in versions prior to 3.9.8.3, 3.10.1.2, and 4.7.1…
- CVE-2026-41325 — High (CVSS 8.8): Kirby is an open-source content management system. Kirby's user permissions control which user role is allowed to…
- CVE-2024-26483 — High (CVSS 8.8): An arbitrary file upload vulnerability in the Profile Image module of Kirby CMS v4.1.0 allows attackers to execute…
- CVE-2026-34587 — High (CVSS 8.1): Kirby is an open-source content management system. Prior to versions 4.9.0 and 5.4.0, Kirby's user permissions control…
- CVE-2024-41964 — High (CVSS 8.1): Kirby is a CMS targeting designers and editors. Kirby allows to restrict the permissions of specific user roles. Users…
All CVEs affecting Getkirby Kirby →
Other CWE-91 (XML Injection) vulnerabilities
- CVE-2021-4140 — Critical (CVSS 10.0): It was possible to construct specific XSLT markup that would be able to bypass an iframe sandbox. This vulnerability…
- CVE-2023-43187 — Critical (CVSS 9.8): A remote code execution (RCE) vulnerability in the xmlrpc.php endpoint of NodeBB Inc NodeBB forum software prior to…
- CVE-2019-19450 — Critical (CVSS 9.8): paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates…
- CVE-2021-37154 — Critical (CVSS 9.8): In ForgeRock Access Management (AM) before 7.0.2, the SAML2 implementation allows XML injection, potentially enabling a…
- CVE-2020-29128 — Critical (CVSS 9.8): petl before 1.68, in some configurations, allows resolution of entities in an XML document.
- CVE-2020-25216 — Critical (CVSS 9.8): yWorks yEd Desktop before 3.20.1 allows code execution via an XSL Transformation when using an XML file in conjunction…