<?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>Haxcms — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/haxcms/</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>Tue, 19 May 2026 14:48:29 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/haxcms/feed.xml" rel="self" type="application/rss+xml"/><item><title>HAXcms Cross-Tenant Account Takeover via Stored XSS and Token Exposure</title><link>https://feed.craftedsignal.io/briefs/2026-05-haxcms-token-exfil/</link><pubDate>Tue, 19 May 2026 14:48:29 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-haxcms-token-exfil/</guid><description>HAXcms is vulnerable to stored XSS and exposes authentication tokens in the `/system/api/connectionSettings` endpoint, allowing an attacker to perform cross-tenant account takeover by injecting malicious JavaScript to steal the `jwt`, `user_token`, `site_token`, and `appstore_token`.</description><content:encoded><![CDATA[<p>HAXcms is vulnerable to a critical account takeover vulnerability stemming from a combination of stored XSS and insecure token handling. The vulnerability, present in versions 25.0.0 and earlier, allows an authenticated attacker to inject malicious JavaScript code into a page that, when viewed by another user, exfiltrates that user&rsquo;s authentication tokens. The <code>/system/api/connectionSettings</code> endpoint dynamically leaks sensitive tokens into a global JavaScript variable (<code>window.appSettings</code>), which can be accessed and stolen via XSS. This vulnerability allows for complete cross-tenant account hijacking, enabling attackers to perform administrative actions without needing the victim&rsquo;s password.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the HAXcms application with valid credentials.</li>
<li>Attacker injects malicious JavaScript code via a stored XSS vulnerability, such as within an iframe&rsquo;s <code>srcdoc</code> or through a <code>&lt;video-player&gt;</code> tag, on a page they have write access to.</li>
<li>The victim user views the compromised page.</li>
<li>The injected JavaScript executes in the victim&rsquo;s browser context.</li>
<li>The JavaScript fetches the victim&rsquo;s connection settings via <code>fetch('/&lt;username&gt;/system/api/connectionSettings')</code>, which includes the victim&rsquo;s valid JWT and tokens.</li>
<li>The JavaScript parses the <code>jwt</code>, <code>user_token</code>, <code>site_token</code>, and <code>appstore_token</code> from the response.</li>
<li>The JavaScript encodes the stolen tokens (including <code>jwt</code>, <code>user_token</code>, <code>site_token</code>, and <code>appstore_token</code>) using Base64 encoding.</li>
<li>The JavaScript exfiltrates the encoded tokens to an attacker-controlled webhook using an image request to bypass CORS. The attacker now has the ability to impersonate the victim and perform administrative actions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability allows for complete account hijacking. An attacker who successfully exploits this vulnerability can impersonate a victim user without needing their password. This gives the attacker the ability to perform malicious administrative actions, such as creating or deleting sites, modifying user access, and uploading malicious content. The reliance on <code>window.appSettings</code> for storing long-lived administrative tokens creates a critical vulnerability when combined with XSS.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule <code>Detect HAXcms Connection Settings Request</code> to detect requests to the <code>/system/api/connectionSettings</code> endpoint from unusual sources, and tune for your environment.</li>
<li>Deploy the Sigma rule <code>Detect HAXcms Token Exfiltration via Webhook</code> to detect attempts to exfiltrate the tokens to external webhooks.</li>
<li>Ensure that all HAXcms instances are updated to a patched version that addresses this vulnerability to prevent CVE-2026-46511 exploitation.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>haxcms</category><category>xss</category><category>account-takeover</category></item><item><title>HAXcms Node.js Backend Private Key Disclosure via Broken HMAC Implementation</title><link>https://feed.craftedsignal.io/briefs/2026-05-haxcms-key-disclosure/</link><pubDate>Tue, 19 May 2026 14:46:30 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-haxcms-key-disclosure/</guid><description>The HAXcms Node.js backend contains two cryptographic implementation errors in the `hmacBase64()` function that allow an unauthenticated attacker to extract the system’s private signing key and forge arbitrary admin-level JSON Web Tokens (JWTs) allowing them to get full admin access with a single HTTP request.</description><content:encoded><![CDATA[<p>The <code>hmacBase64()</code> function in the HAXcms Node.js backend contains two critical cryptographic implementation errors. First, the function passes the literal string &ldquo;0&rdquo; as the HMAC signing key instead of the intended key parameter, resulting in identical HMACs across all HAXcms instances for the same input. Second, after computing the HMAC, the function concatenates the actual signing secret (<code>this.privateKey + this.salt</code>) directly onto the output. This design flaw allows any unauthenticated attacker to extract the system’s private signing key, forge arbitrary admin-level JSON Web Tokens (JWTs), and gain full admin access with a single HTTP request. The vulnerability affects <code>@haxtheweb/haxcms-nodejs</code> versions 25.0.0 and earlier. This vulnerability is tracked as CVE-2026-46395.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker sends an unauthenticated GET request to the <code>/system/api/connectionSettings</code> endpoint.</li>
<li>The server responds with JSON data containing multiple tokens generated by the flawed <code>hmacBase64()</code> function.</li>
<li>The attacker extracts one of these tokens from the response.</li>
<li>The attacker base64-decodes the token.</li>
<li>The attacker discards the first 32 bytes of the decoded token (the HMAC).</li>
<li>The attacker reads the remaining bytes as a UTF-8 string, which contains the <code>privateKey+salt</code> secret.</li>
<li>The attacker uses the extracted <code>privateKey+salt</code> to forge a JWT with admin privileges using <code>JWT.sign(payload, this.privateKey+this.salt)</code>. The forged JWT contains a payload specifying <code>id</code>, <code>user</code> (set to &ldquo;admin&rdquo;), <code>iat</code> (current timestamp), and <code>exp</code> (expiration timestamp).</li>
<li>The attacker uses the forged JWT to access authenticated endpoints, performing actions such as creating, modifying, or deleting sites, and uploading files.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows an unauthenticated attacker to gain full administrative control over a HAXcms instance. The attacker can create, modify, or delete sites, upload arbitrary files, and modify content without any login events being recorded. This attack bypasses any strong passwords set by the administrator. The vulnerability affects <code>@haxtheweb/haxcms-nodejs</code> versions 25.0.0 and earlier.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule to detect requests to the <code>/system/api/connectionSettings</code> endpoint as an early warning of exploitation attempts.</li>
<li>Apply patches or updates provided by HAXtheWeb for <code>@haxtheweb/haxcms-nodejs</code> to address CVE-2026-46395.</li>
<li>Monitor web server logs for abnormally long tokens which can indicate exploitation, correlate with the <code>HAXcms Node.js Token Length Anomaly</code> Sigma rule.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>cve-2026-46395</category><category>haxcms</category><category>key-disclosure</category><category>jwt</category><category>privilege-escalation</category></item><item><title>HAXcms createSite SSRF Enables Arbitrary File Read</title><link>https://feed.craftedsignal.io/briefs/2026-05-haxcms-ssrf/</link><pubDate>Tue, 19 May 2026 14:44:52 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-haxcms-ssrf/</guid><description>HAXcms is vulnerable to Server-Side Request Forgery (SSRF) via the createSite endpoint, allowing an authenticated user to supply arbitrary URLs or local file paths, which are fetched server-side without validation and written to a web-accessible directory, enabling arbitrary file read, internal network access, and cloud credential exposure; this vulnerability is tracked as CVE-2026-46393.</description><content:encoded><![CDATA[<p>HAXcms (v11.0.6) is vulnerable to Server-Side Request Forgery (SSRF) via the <code>createSite</code> endpoint due to insufficient validation of the <code>build.files</code> parameter. An authenticated user can supply arbitrary URLs or local file paths, which are then fetched server-side using <code>file_get_contents()</code> without validation. This allows for reading arbitrary files, accessing internal network services, and potentially exposing cloud credentials through metadata endpoints. This vulnerability was disclosed in GHSA-q862-gcgq-5m6g and is tracked as CVE-2026-46393. Exploitation requires an authenticated session, but default credentials are often present on fresh installs, lowering the barrier to entry.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the HAXcms application using credentials (default <code>admin/admin</code> may work on fresh installs).</li>
<li>The attacker obtains a valid JWT and CSRF token from the authenticated session.</li>
<li>The attacker crafts a POST request to the <code>/createSite</code> endpoint with a JSON payload.</li>
<li>The payload includes a <code>build.files</code> parameter containing a filename (e.g., <code>poc.txt</code>) as the key and a <code>tmp_name</code> value set to the target URL or file path (e.g., <code>http://169.254.169.254/latest/meta-data/iam/security-credentials/</code> or <code>/etc/passwd</code>).</li>
<li>The HAXcms server processes the <code>build.files</code> parameter, extracting the <code>tmp_name</code> value without validation.</li>
<li>The server uses <code>file_get_contents()</code> to fetch the content from the URL or file path specified in <code>tmp_name</code>.</li>
<li>The fetched content is saved to the <code>sites/&lt;sitename&gt;/files/&lt;filename&gt;</code> directory.</li>
<li>The attacker retrieves the content by sending a GET request to <code>sites/&lt;sitename&gt;/files/&lt;filename&gt;</code>, thus achieving arbitrary file read or access to internal resources.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This SSRF vulnerability can be exploited by any authenticated user to access sensitive information. Successful exploitation allows attackers to read arbitrary files from the server&rsquo;s file system (e.g., <code>/etc/passwd</code>, application configuration files), access internal network services, and potentially expose cloud credentials through metadata endpoints like <code>http://169.254.169.254</code>. This could lead to complete compromise of the server and potentially the associated cloud environment. The affected package <code>npm/@haxtheweb/haxcms-nodejs</code> (vulnerable: &lt;= 25.0.0) means that many instances of HAXcms may be affected.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply available patches or updates to HAXcms to address CVE-2026-46393.</li>
<li>Monitor web server logs for POST requests to <code>/createSite</code> with suspicious URLs or file paths in the <code>build.files</code> parameter, using the Sigma rule <code>Detect HAXcms createSite SSRF Attempt</code>.</li>
<li>Inspect network connections originating from the HAXcms server for connections to internal IP addresses or cloud metadata endpoints like 169.254.169.254, as highlighted in the IOC section.</li>
<li>Implement strict input validation on the <code>build.files</code> parameter of the <code>/createSite</code> endpoint to prevent arbitrary URL and file path injection.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>ssrf</category><category>haxcms</category><category>cve-2026-46393</category><category>vulnerability</category></item></channel></rss>