Gemeente Cyber Dreigingsradar
Kritiek
Terug naar het overzicht
MiddenDDoSGitHub Security Advisories

HAX CMS: Denial of Service using Malicious Import Request

HAX CMS: Denial of Service using Malicious Import Request

Prioriteit & onderbouwing

34 / 100

Prioriteit: Laag

Monitoren

Laag (34/100): monitoren. Zwaarst wegend: technische ernst en betrouwbaarheid van het signaal.

Threat Score42 / 100

midden

  • Technische ernst (severity): Genormaliseerde ernst 'medium'; geen CVSS-score beschikbaar.
Exploit Score10 / 100

laag

  • Geen exploit bekend: Er is geen exploit of actief misbruik bekend.
Municipal Relevance Score15 / 100

laag

  • Gemeentelijke relevantie: Relevantiescore 15/100 uit de relevantie-engine (module 5).
Action Urgency Score34 / 100

midden

  • Technische ernst: Threat Score 42/100 x gewicht 25%.
  • Exploitatie: Exploit Score 10/100 x gewicht 25%.
  • Gemeentelijke relevantie: Relevantiescore 15/100 x gewicht 22%.
  • Betrouwbaarheid van het signaal: Confidence 'likely' x gewicht 12%.
  • Blootstellingskans: Geschatte blootstelling 30% x gewicht 10%.
  • Betrouwbaarheid van de bron: Bronbetrouwbaarheid 88% x gewicht 6%.

De priority_score is de Action Urgency Score: een gewogen combinatie van de technische ernst, de exploitatie en de gemeentelijke relevantie.

Toelichting

### 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) ``` 2. 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) ``` 3. 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\" } } }" ``` 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. ### 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.

Onderbouwing van de classificatie

Categorie 'ddos' op basis van trefwoord 'denial of service'. Severity 'medium' bepaald op basis van: bronlabel 'medium'. Confidence 'likely': gerenommeerd securityonderzoek (GitHub Security Advisories). Geen bekende leveranciers of producten herkend.

Kwetsbaarheden

CVE-2026-46357Prioriteitsscore 0.0 / 100
CVSS
EPSS
KEV
Nee
npm

Gemeentelijke relevantie

15

Deze dreiging scoort 15/100 voor de gemeentelijke relevantie. Meegewogen: een leveranciers- of ketenrisico. Geraakte processen: Website en publiekscommunicatie, Netwerk en infrastructuur, Leveranciersketen, Back-up en herstel, Telefonie en klantcontactcentrum.

Bestuurlijke duiding

Deze dreiging heeft een beperkte gemeentelijke relevantie. Een aanval op de bereikbaarheid raakt direct de online dienstverlening aan inwoners en ondernemers. Reguliere opvolging door ICT-beheer en de ISO volstaat; bestuurlijke betrokkenheid is op dit moment niet nodig.

Geraakte processen

Website en publiekscommunicatieNetwerk en infrastructuurLeveranciersketenBack-up en herstelTelefonie en klantcontactcentrum

Geraakte technologie

@haxtheweb/haxcms-nodejsnpm

Betrokken rollen

CISO · ISO · SOC · ICT beheer · Leveranciersmanager · Proceseigenaar

Operationele acties

  • Schakel de scrubbing- of anti-DDoS-dienst in en toets de drempelwaarden.
  • Monitor de capaciteit van de internetkoppeling en kritieke publieksdiensten.
  • Houd een statuspagina en alternatief contactkanaal gereed.

Concrete stappen voor ICT-beheer en het securityteam.

Aanbevolen acties

  • Activeer of toets de anti-DDoS-maatregelen.
  • Maak afspraken met de hosting- en netwerkleveranciers.
  • Bereid een communicatiescenario voor bij uitval.

Dit zijn algemene handelingsperspectieven. Stem de opvolging af op de eigen omgeving en het ISMS van uw gemeente.

Kenmerken

Ernst
Midden
Categorie
DDoS
Zekerheid
Waarschijnlijk
Status
Verrijkt
CVE's
CVE-2026-46357
Prioriteitsscore
34 / 100 · Laag
Bron
GitHub Security Advisories
Gepubliceerd
19 mei 2026

Labels

Supply chainOpensourceDDoS
Originele publicatie