Cyber Resilience

CVE-2026-34587

Getkirby Kirby ≤ 4.9.0

Published
24 April 2026
Modified
27 April 2026
Patch / advisory
CVSS Score v4 7.6
Click a component to see what it means
Raw vectorCVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
EPSS Score 0.0033 26th percentile
Risk Priority 36 floored blend · peak EPSS

Summary

CVE-2026-34587 is a high-severity Improper Neutralization of Special Elements Used in a Template Engine (CWE-1336) vulnerability in Getkirby Kirby. Its CVSS base score is 7.6 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Template Injection (T1221); ranked at the 26th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-34587 is a high-severity authorization vulnerability (CVSS 3.1 score of 8.1; AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) affecting Kirby, an open-source content management system. In versions prior to 4.9.0 and 5.4.0, Kirby's user permissions for actions like `pages.create` and `pages.changeStatus` are defined in user and model blueprints and checked independently. However, the `pages.changeStatus` permission does not apply during page creation via the REST API, which allows overriding the default `isDraft` flag.

Authenticated attackers with the `pages.create` permission can exploit this by creating new pages directly as published via the REST API, bypassing the standard editorial workflow that requires drafts to be published separately through the Kirby Panel. This enables unauthorized publication of content, potentially leading to high confidentiality and integrity impacts, such as exposing or altering sensitive pages without proper review. The issue is linked to CWE-1336 (incorrect authorization).

Mitigation is available in Kirby 4.9.0 and 5.4.0, where the permissions logic has been updated to enforce `changeStatus` checks during API-based page creation. The Kirby security advisory (GHSA-jcjw-58rv-c452) and release notes for versions 4.9.0 and 5.4.0 detail the patch, which also refines the `Options` logic to prevent double-resolving queries from `OptionsQuery` or `OptionsApi` sources, ensuring only directly configured blueprint queries are resolved. Administrators should upgrade immediately and review user roles with `pages.create` permissions.

EU & UK References

Vulnerability Data

Kirby is an open-source content management system. Prior to versions 4.9.0 and 5.4.0, Kirby's user permissions control which user role is allowed to perform specific actions to content models in the CMS. These permissions are defined for each role in…

more

the user blueprint (`site/blueprints/users/...`). It is also possible to customize the permissions for each target model in the model blueprints (such as in `site/blueprints/pages/...`) using the `options` feature. The permissions and options together control the authorization of user actions. For pages, Kirby provides the `pages.create` and `pages.changeStatus` permissions (among others). In affected releases, Kirby checked these permissions independently and only for the respective action. However the `changeStatus` permission didn't take effect on page creation. New pages are created as drafts by default and need to be published by changing the page status of an existing page draft. This is ensured when the page is created via the Kirby Panel. However the REST API allows to override the `isDraft` flag when creating a new page. This allowed authenticated attackers with the `pages.create` permission to immediately create published pages, bypassing the normal editorial workflow. The problem has been patched in Kirby 4.9.0 and Kirby 5.4.0. Kirby has updated the `Options` logic to no longer double-resolve queries in option values coming from `OptionsQuery` or `OptionsApi` sources. Kirby now only resolves queries that are directly configured in the blueprints.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1221 Template Injection Stealth
Adversaries may create or modify references in user document templates to conceal malicious code or force authentication attempts.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2025-30207Same product: Getkirby Kirby
CVE-2026-42069Same product: Getkirby Kirby
CVE-2026-42137Same product: Getkirby Kirby
CVE-2025-65012Same product: Getkirby Kirby
CVE-2023-38489Same product: Getkirby Kirby
CVE-2026-32870Same product: Getkirby Kirby
CVE-2025-30159Same product: Getkirby Kirby
CVE-2026-42174Same product: Getkirby Kirby
CVE-2026-41325Same product: Getkirby Kirby
CVE-2026-29905Same product: Getkirby Kirby

Affected Assets

getkirby
kirby
≤ 4.9.0 · 5.0.0 — 5.4.0

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

Detect
Catch it (NIST detect / respond)

Harden
Shrink the surface (DISA STIG)

Validate
Prove the fix (OWASP ASVS)
  • V1.3.2
  • V1.3.7
  • V1.3.10

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and static analysis can discover missing neutralization of template directives.

Input validation rejects or sanitizes untrusted data before it reaches the template engine, stopping injection of special syntax.

Security engineering principles require use of safe templating APIs and proper escaping of external input.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly require proper input neutralization in template engines to prevent injection.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing can detect template-injection flaws but does not itself implement neutralization controls.

prevents

Secure development life cycle mandates input validation and sanitization that directly prevents template-injection weaknesses.

prevents

Application security requirements explicitly call for neutralizing special elements in template engines.

prevents

Secure architecture principles reduce the likelihood of unsafe template processing but do not prescribe specific neutralization techniques.

prevents

Secure coding standards require proper escaping or sandboxing of template directives, directly mitigating CWE-1336.

References