NIS2 & DORA van kracht. EU AI Act volgt — boek een demo

Penetratietest Node.js / Express: Prototype Pollution, Supply-Chain npm en Backend JavaScript Beveiliging

Node.js domineert moderne JavaScript backend, maar zijn dynamische natuur en het enorme npm ecosysteem creëren unieke aanvalsoppervlakken: prototype pollution, RCE via deserialisatie, SSRF via HTTP clients (axios, node-fetch), supply-chain risico's voor transitive dependencies. Matproof Sentinel voert gerichte Node.js / Express pentests uit met proof-of-exploit en audit-klaar rapport vanaf €149.

Start gratis scan
MW
Geschreven door Malte Wagenbach
Oprichter van Matproof Security. Gespecialiseerd in AI-gestuurde penetratietests en EU-compliance (DORA, NIS2, BIO, ISO 27001).
Laatst beoordeeld: 17 mei 2026

Waarom Node.js specifieke pentest aandacht vereist

Het Node.js ecosysteem heeft recente incidenten doorgemaakt die structurele risico's illustreren. HTTP/2 Rapid Reset (CVE-2023-44487, CVSS 7.5) maakte massieve DDoS attacks tegen blootgestelde Node.js servers mogelijk — Cloudflare detecteerde aanvallen van 398M req/sec. De jsonwebtoken bug (CVE-2022-23529) heeft virtually alle Node applicaties die de meest gebruikte library voor JWT validation gebruikten gecompromitteerd. CVE-2024-39338 in axios stelt honderdduizenden applicaties bloot aan SSRF via verkeerd geformatteerde relatieve URLs. Naast CVE's creëren Node.js patronen zoals dynamische property manipulatie via JSON.parse en uitgebreid gebruik van spread operator unieke vectors voor prototype pollution met potentiële escalation naar RCE. Voor Nederlandse bedrijven met Node.js (fintech, SaaS, e-commerce) is gedocumenteerde Node.js pentest essentieel voor DORA / NIS2 / AVG compliance.

  • CVE-2023-44487 (HTTP/2 Rapid Reset, CVSS 7.5): massieve DDoS tegen Node.js HTTP/2 servers — Cloudflare/Google/AWS detecteerden 398M req/sec attacks in 2023.
  • CVE-2022-23529 (jsonwebtoken): JWT signature validation bypass in de meest gebruikte authenticatie library — treft ≈ 9M npm downloads/week.
  • CVE-2024-39338 (axios SSRF): verkeerd geformatteerde relatieve URLs staan SSRF toe tegen interne endpoints (AWS metadata, interne services) via de meest gebruikte HTTP client library van Node.js (60M+ downloads/week).
  • Prototype pollution: Node.js-specifiek attack pattern uitgebuit in populaire libraries (lodash, jQuery, async) voor escalation naar RCE — gedetecteerd in 13% van gescannde Node.js applicaties door Snyk in 2024.
  • npm supply-chain risico's: 1.2M npm packages, ~75% met transitive dependencies; notable incidents: event-stream (2018), ua-parser-js (2021), color.js/faker.js (2022).
  • Express.js, het meest geïmplementeerde Node framework, includeert geen default beschermingen tegen CSRF, XSS of injection — verantwoordelijkheid voor elke security middleware ligt bij de developer.
  • Voor Nederlandse fintechs onder DORA Art. 24 of SaaS onder NIS2/Cbw, is gedocumenteerde Node.js pentest standaard compliance.

Wat we specifiek testen in een Node.js / Express applicatie

  • Prototype pollution: property injection in Object.prototype via JSON.parse, body-parser, qs.parse, Object.assign — escalation chains naar RCE via gadget chains (lodash.template).
  • jsonwebtoken vulnerabilities: « none » algoritme geaccepteerd, HS256/RS256 confusion, jwt-decode gebruikt voor verificatie (anti-pattern), geen exp/iat validation.
  • npm supply chain: volledige dependencies audit (npm audit --production), packages met verdachte post-install scripts, dependencies met niet-gepatchte CVE's in package-lock.json.
  • SSRF via HTTP clients: axios (CVE-2024-39338), node-fetch, got, request — URL validation bypass via relatieve URLs, IPv6, Unicode encoding, DNS rebinding.
  • Header injection (CRLF): newline injection in HTTP headers via gebruikersinvoer — Express < 4.18.3 kwetsbaar.
  • HTTP/2 configuratie: exposure aan CVE-2023-44487 (Rapid Reset) als HTTP/2 ingeschakeld zonder stream-level rate limiting.
  • NoSQL injection (mongoose/mongodb): $ne, $gt, $where operators in user queries; auth bypass via $or/$and; arbitrary $set operators.
  • Insecure deserialization: gebruik van node-serialize (notoir kwetsbaar), eval() met user data, vm.runInNewContext zonder sandbox, child_process.exec met user input.
  • Express configuration: middleware auth in verkeerde volgorde, ontbrekende helmet (security headers), niet-geconfigureerde express-rate-limit, cookie-parser zonder secret.
  • Sensitive data logging: Winston/Pino geconfigureerd om volledige Authorization headers te loggen, request bodies met passwords, query params met tokens.

Voorbeeldbevinding

Kritiek

Exploitable prototype pollution naar RCE in body-parser met lodash gadget chain

De Express applicatie gebruikt body-parser om JSON requests te verwerken zonder restrictieve configuratie. De test wijst uit dat een aanvaller een JSON payload kan sturen met de « __proto__ » sleutel die Object.prototype globaal vervuilt. Bijvoorbeeld, POST /api/profile met body {"__proto__": {"polluted": true}} resulteert erin dat alle JavaScript objects de 'polluted' property erven. De applicatie gebruikt lodash.template met een template gedeeltelijk gecontroleerd door de gebruiker in de report generation functie, wat een klassieke exploitation chain creëert: prototype pollution → lodash.template → RCE. De test demonstreert arbitrary code execution met privileges van het Node.js proces.

Oplossing: Onmiddellijke update naar gepatchte versies: body-parser ≥ 1.20.3, lodash ≥ 4.17.21. Configureer body-parser met reviver optie om sensitive keys te blokkeren. Vervang lodash.template door sandboxed templating libraries. Implementeer Object.freeze(Object.prototype) bij applicatie startup om pollution op root level te blokkeren. Configureer strict CSP met 'unsafe-eval' uitgeschakeld.

Referentie: CVE-2022-24999 · CWE-1321 · OWASP A08:2021 · Snyk Research: Prototype Pollution Attacks in Node.js

Pentest Node.js: opties vergeleken

Gratis scanMatproof SentinelTraditionele consultancy
Geautomatiseerde scan-engine✓ (3-min preview)✓ Volledige scan✗ Alleen handmatig
OWASP Top 10 dekkingGedeeltelijk✓ Volledig✓ Volledig
Proof-of-exploit bewijs✓ Per bevinding✓ Per bevinding
Regulatorische mapping (DORA/NIS2/ISO 27001)✓ Geautomatiseerd✓ Handmatig
Audit-geschikt PDF-rapport✓ Direct✓ 2–4 weken levertijd
Continue / terugkerende scans✓ Per deploy✗ Jaarlijkse opdracht
Tijd tot eerste resultaat~3 min~30 min volledige scan2–4 weken
Prijs€0Vanaf €149€8.000–€25.000
Broncode-review (SAST)✓ Growth-plan✓ In scope
API-tests (REST/GraphQL)✓ Geautomatiseerd✓ Handmatig

Pentest Node.js pakketten

Losse scan
€149 eenmalig
  • 1 volledige penetratietest-scan
  • AI-geprioriteerde bevindingen met CVSS 3.1
  • Proof-of-exploit per bevinding
  • PDF-rapport (geschikt voor audit)
  • Regulatorische mapping (DORA, NIS2, ISO 27001)
Losse scan kopen
Aanbevolen
Starter
€299 / maand
  • Onbeperkt scannen (tot 3 domeinen)
  • Continue monitoring
  • CI/CD-integratie (GitHub, GitLab)
  • Alle regulatorische mappings
  • Prioriteitsondersteuning
Start met Starter
Growth
€799 / maand
  • Onbeperkt scannen + domeinen
  • Geauthenticeerde / White-Box tests
  • API- en cloud-infrastructuurtests
  • Dedicated security account manager
  • SLA responstijd 24u
Contact voor Growth

Veelgestelde vragen over Node.js / Express pentest

Verschil tussen Node.js pentest en standaard npm-audit?

npm audit identificeert bekende CVE's in geïnstalleerde dependencies via GitHub Advisory database. Node.js pentest gaat verder: wij testen runtime-specifieke patronen (prototype pollution, SSRF via HTTP clients, deserialization), Express middleware configuration, en demonstreren reële exploitability van elke finding met proof-of-exploit.

Hoe auditeert u de npm supply-chain?

Vier layers: (1) statische analyse van package-lock.json om alle transitive dependencies te identificeren (vaak 800-2000+ per project); (2) cross-reference met NVD, GitHub Advisory, Snyk Database; (3) detectie van verdachte packages (typosquatting, post-install scripts, recente packages met weinig downloads); (4) recommendations voor pinning en migration naar onderhouden alternatieven.

Mijn Node.js applicatie gebruikt NestJS / Fastify / Koa in plaats van Express. Is de pentest van toepassing?

Ja. Wij dekken het hele Node.js ecosysteem: NestJS, Fastify, Koa, Hapi, AdonisJS, RedwoodJS, en Next.js (API routes). Vulnerability classes zijn grotendeels gemeenschappelijk.

Kan de pentest GraphQL Node.js APIs (Apollo, GraphQL Yoga) testen?

Ja. GraphQL Node.js APIs vereisen specifieke tests boven OWASP API Top 10: query depth limiting, introspection in productie, batch query attacks, resolver-level authorization.

Hoe gaat u om met Node.js tests op serverless architecturen (Lambda, Vercel, Cloudflare Workers)?

Wij testen serverless Node.js functions als elke HTTP endpoint, met aandacht voor specifieke: cold-start side-channel timing, environment variables leak via stack traces, IAM role privilege escalation (Lambda), onbedoelde state sharing tussen invocations.

Hoe lang duurt een volledige Node.js pentest?

60 minuten voor typische Express applicatie. Voor microservices Node.js / GraphQL: 2-4 uur. Audit-klaar rapport binnen 24 uur.

Gerelateerde onderwerpen

Meer lezen — gerelateerde blogartikelen

Bescherm uw Node.js applicatie nu

Eerste scan in 3 minuten, volledige Node.js pentest in 60 minuten. Audit-klaar rapport DORA / NIS2 / ISO 27001 vanaf €149.

Start gratis scan