<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kirby CMS (&lt;= 4.9.3) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/kirby-cms--4.9.3/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 15:25:22 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/kirby-cms--4.9.3/feed.xml" rel="self" type="application/rss+xml"/><item><title>Kirby: Cross-site scripting (XSS) from incomplete HTML/XML sanitization in Dom::sanitize()</title><link>https://feed.craftedsignal.io/briefs/2026-06-kirby-xss-dom-sanitize/</link><pubDate>Thu, 18 Jun 2026 15:25:22 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-kirby-xss-dom-sanitize/</guid><description>A high-severity cross-site scripting (XSS) vulnerability, tracked as CVE-2026-54002, exists in Kirby CMS versions prior to 4.9.4 and between 5.0.0-alpha.1 and 5.4.3, allowing authenticated Panel users to inject malicious markup into `writer` or `list` fields or via `Sane` API-dependent custom code, leading to stored XSS and potential privilege escalation.</description><content:encoded><![CDATA[<p>A high-severity cross-site scripting (XSS) vulnerability, identified as CVE-2026-54002, affects Kirby CMS versions prior to 4.9.4 and between 5.0.0-alpha.1 and 5.4.3. This flaw stems from incomplete HTML/XML sanitization within the <code>Dom::sanitize()</code> method, which is integral to the platform's content processing, including <code>writer</code> and <code>list</code> fields, and <code>Sane</code> API functions. An authenticated Panel user can exploit this by injecting malicious markup as children of unknown HTML/XML tags. The <code>Dom::sanitize()</code> method fails to correctly sanitize these unwrapped child nodes, allowing the malicious content to be stored and subsequently executed as JavaScript in the browser of other users, including administrators, when they view the affected content in the Panel or on the site frontend. This creates a risk of privilege escalation and other client-side attacks.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An authenticated attacker logs into the Kirby CMS Panel with legitimate credentials.</li>
<li>The attacker navigates to an editable content field, such as a <code>writer</code> or <code>list</code> field, or interacts with a custom plugin using the <code>Sane</code> API functions (<code>$dom-&gt;sanitize()</code>, <code>Sane::sanitizeFile()</code>, etc.).</li>
<li>The attacker crafts and injects malicious markup, specifically including JavaScript code (e.g., <code>&lt;script&gt;alert('XSS')&lt;/script&gt;</code>) as children of an unknown HTML/XML tag (e.g., <code>&lt;foo&gt;&lt;script&gt;alert(1)&lt;/script&gt;&lt;/foo&gt;</code>).</li>
<li>The Kirby backend processes the submitted content, invoking the vulnerable <code>Dom::sanitize()</code> method.</li>
<li>Due to the flaw, <code>Dom::sanitize()</code> unwraps the unknown parent tag but fails to sanitize the malicious child nodes, allowing the JavaScript payload to be saved unsanitized into the content data.</li>
<li>Another user, potentially a higher-privileged administrator, accesses the Panel or frontend page where the maliciously injected content is displayed.</li>
<li>The victim's web browser renders the unsanitized content, leading to the execution of the injected JavaScript within their session context.</li>
<li>The executed script can steal session cookies, perform unauthorized actions via Kirby's API (e.g., privilege escalation), redirect the user, or deface the interface, compromising the victim's account and potentially the entire CMS.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The vulnerability poses a significant risk to affected Kirby CMS installations, particularly those with multiple authenticated users where some may be untrusted or malicious. Successful exploitation allows for stored XSS, meaning the injected JavaScript persists and executes each time the compromised content is viewed. This can lead to privilege escalation, enabling lower-privileged authenticated users to escalate their access by compromising higher-privileged user sessions (e.g., administrators). The impact can range from session hijacking, data exfiltration through unauthorized API calls to Kirby's backend, to defacement or other client-side attacks affecting any user viewing the malicious content. The advisory notes that content stored before patching may still contain malicious payloads, emphasizing the persistent nature of the threat.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch CVE-2026-54002</strong>: Immediately update Kirby CMS to version 4.9.4, 5.4.4, or a later release to remediate the sanitization flaw.</li>
<li><strong>Review and Re-sanitize Content</strong>: If untrusted authenticated users had access to the Kirby Panel on a security-critical site, review and re-sanitize all existing content that may have passed through affected fields (e.g., <code>writer</code>, <code>list</code> fields, or custom code using <code>Sane</code> API) for potential malicious payloads.</li>
<li><strong>Deploy Sigma Rule for XSS Attempts</strong>: Deploy the <code>Detect CVE-2026-54002 XSS Injection in Kirby Panel</code> Sigma rule to your webserver logs (category <code>webserver</code>) to identify attempts to inject XSS payloads into Kirby content fields.</li>
<li><strong>Implement WAF/API Security</strong>: Implement a Web Application Firewall (WAF) or API security gateway to block requests containing known XSS patterns targeting CMS editing endpoints, acting as an additional layer of defense.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">threat</category><category>xss</category><category>web-application</category><category>cms</category><category>kirby-cms</category></item><item><title>Critical Kirby CMS Vulnerability Allows Remote Admin Account Creation via Reverse Proxy Headers (CVE-2026-54003)</title><link>https://feed.craftedsignal.io/briefs/2026-06-kirby-external-panel-init/</link><pubDate>Thu, 18 Jun 2026 15:18:49 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-kirby-external-panel-init/</guid><description>A critical external initialization vulnerability (CVE-2026-54003) in Kirby CMS allows unauthenticated attackers to create an initial admin account on sites running behind a reverse proxy, specifically when the proxy utilizes `Forwarded: for=...`, `X-Client-IP`, or `X-Real-IP` headers, bypassing Kirby's `isLocal` check and enabling remote Panel installation with full administrative access.</description><content:encoded><![CDATA[<p>A critical vulnerability, tracked as CVE-2026-54003, affects Kirby CMS versions up to 4.9.3 and from 5.0.0-alpha.1 to 5.4.3. This flaw, dubbed &quot;External Initialization,&quot; enables unauthenticated remote attackers to create the initial administrative user account, effectively installing the Kirby Panel with full control over the CMS. The vulnerability arises in specific configurations where Kirby sites, without any configured user accounts, operate behind a reverse proxy that uses the <code>Forwarded: for=...</code>, <code>X-Client-IP</code>, or <code>X-Real-IP</code> HTTP headers. Kirby's <code>isLocal</code> check, designed to prevent remote installation, failed to properly account for these headers, leading it to incorrectly assume a remote connection was local. This misidentification grants an attacker the ability to bypass security controls and seize control of the Kirby instance.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li><strong>Reconnaissance</strong>: Attacker identifies a publicly accessible Kirby CMS instance lacking any configured user accounts, typically indicated by a redirect to the installation wizard upon accessing the Panel URL (<code>/panel</code>).</li>
<li><strong>Reverse Proxy Identification</strong>: Attacker determines that the target Kirby instance is fronted by a reverse proxy that uses <code>Forwarded: for=...</code>, <code>X-Client-IP</code>, or <code>X-Real-IP</code> headers for client IP forwarding.</li>
<li><strong>Craft Malicious Request</strong>: Attacker crafts an HTTP POST request to the Kirby Panel installation endpoint (e.g., <code>/api/system/install</code> or similar, depending on Kirby version and setup), including a forged <code>Forwarded</code>, <code>X-Client-IP</code>, or <code>X-Real-IP</code> header set to a local IP address (e.g., <code>127.0.0.1</code>).</li>
<li><strong>Bypass <code>isLocal</code> Check</strong>: The crafted request containing the local IP in the vulnerable header is forwarded by the reverse proxy to the Kirby backend. Kirby's <code>isLocal</code> check misinterprets the request as originating from a local source due to the forged header.</li>
<li><strong>Initial Admin Account Creation</strong>: The Kirby application proceeds with the installation process, allowing the attacker to provide desired credentials (username, password, email) for a new administrator account via the HTTP POST body.</li>
<li><strong>Administrator Access</strong>: Upon successful submission, the attacker-defined administrator account is created, granting full administrative control over the Kirby CMS instance.</li>
<li><strong>Post-Exploitation</strong>: The attacker can now perform any actions available to an administrator, including content modification, data exfiltration, plugin installation, or further system compromise.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-54003 grants unauthenticated attackers full administrative control over the affected Kirby CMS instance. This directly leads to complete compromise of the website, allowing for arbitrary content modification, defacement, data theft (including user information if stored), and potentially the injection of malicious code or backdoors into the web application. Given Kirby's use in various industries for content management, the potential victim scope includes any organization or individual utilizing unpatched Kirby versions behind specific reverse proxy configurations with no existing admin users. The vulnerability's criticality stems from the ease of exploitation and the immediate elevation to administrative privileges.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Patch CVE-2026-54003 immediately</strong>: Update Kirby CMS to version <code>4.9.4</code>, <code>5.4.4</code>, or a later patched version as detailed in the advisory.</li>
<li><strong>Deploy the provided Sigma rules</strong>: Implement the <code>Detects CVE-2026-54003 Exploitation - Kirby Remote Panel Init</code> rules to your SIEM to identify attempts to exploit this vulnerability.</li>
<li><strong>Configure Workarounds</strong>: If immediate patching is not feasible, perform the Panel installation yourself by creating an initial admin account. This disables the vulnerable installation code.</li>
<li><strong>Disable Panel API</strong>: As an alternative workaround, if the Panel is not needed, disable the REST API with the <code>'api' =&gt; false</code> option in <code>config.php</code> to prevent access to the installation endpoint.</li>
<li><strong>Review Reverse Proxy Configuration</strong>: Ensure your reverse proxy is configured to properly handle <code>X-Forwarded-For</code> or <code>Client-IP</code> headers if possible, or verify that <code>Forwarded: for=...</code>, <code>X-Client-IP</code>, and <code>X-Real-IP</code> are not inadvertently exposing internal IP addresses or being spoofed.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>web-vulnerability</category><category>cms</category><category>initial-access</category><category>privilege-escalation</category><category>kirby</category></item></channel></rss>