In Q1 2026, the Node.js project released two major security batches — January and March — patching a total of 16 CVEs across all active release lines. Two of those vulnerabilities allow a single malformed HTTP request to crash your entire Node.js process. At the same time, the Express team shipped two security releases addressing path-to-regexp ReDoS and Multer DoS vulnerabilities. And on April 30, 2026, Node.js 20 officially reached end-of-life, leaving millions of production applications without security patches.

Au T1 2026, le projet Node.js a publié deux grandes vagues de correctifs — janvier et mars — corrigeant un total de 16 CVE sur toutes les branches actives. Deux de ces vulnérabilités permettent à une seule requête HTTP mal formée de faire crasher tout votre processus Node.js. Simultanément, l'équipe Express a publié deux correctifs de sécurité pour des vulnérabilités ReDoS dans path-to-regexp et DoS dans Multer. Et le 30 avril 2026, Node.js 20 a officiellement atteint sa fin de vie, laissant des millions d'applications de production sans correctifs de sécurité.

This article covers every high-severity CVE from the 2026 Node.js and Express security releases, the concrete risk of running Node 20 after EOL, and a step-by-step hardening guide using helmet.js, express-rate-limit, and automated dependency scanning.

Cet article couvre chaque CVE haute sévérité des releases de sécurité Node.js et Express 2026, le risque concret de faire tourner Node 20 après sa fin de vie, et un guide de durcissement étape par étape avec helmet.js, express-rate-limit et le scan automatisé des dépendances.

16
CVEs patched in Node.js Q1 2026 (Jan + Mar releases)
CVE corrigées dans Node.js au T1 2026 (janv. + mars)
Source: nodejs.org/en/blog/vulnerability, 2026
48.7%
Of professional developers use Node.js (Stack Overflow 2025)
Des développeurs professionnels utilisent Node.js (Stack Overflow 2025)
Source: Stack Overflow Developer Survey 2025
325K+
Companies using Node.js in production worldwide
Entreprises utilisant Node.js en production dans le monde
Source: 6sense / codeless.co, 2026
Apr 30
Node.js 20 end-of-life date — no more security patches
Date de fin de vie Node.js 20 — plus aucun patch de sécurité
Source: nodejs.org/en/about/eol, 2026

Node.js 20 Reached End-of-Life on April 30, 2026

Node.js 20 a Atteint Sa Fin de Vie le 30 Avril 2026

Node.js 20 was the most widely adopted LTS release in Node.js history. On April 30, 2026, it officially entered end-of-life, meaning no new security patches will ever be released for it. Any CVE discovered from May 1 onward — including ones that affect Node.js 20 code paths — will remain unpatched on that runtime.

Node.js 20 était la release LTS la plus adoptée de l'histoire de Node.js. Le 30 avril 2026, elle est officiellement entrée en fin de vie, ce qui signifie que plus aucun patch de sécurité ne sera jamais publié pour elle. Toute CVE découverte à partir du 1er mai — y compris celles affectant les chemins de code Node.js 20 — restera sans correctif sur ce runtime.

The risk is compounded by deployment inertia. HeroDevs reports that Node.js 20 is still running in a significant portion of production environments as of May 2026, because teams underestimate the migration effort or are blocked by upstream dependencies that don't yet support Node.js 22 or 24. AWS Lambda deprecated the Node.js 20 runtime and is warning developers about the impending EOL impact.

Le risque est amplifié par l'inertie des déploiements. HeroDevs rapporte que Node.js 20 tourne encore dans une partie significative des environnements de production en mai 2026, car les équipes sous-estiment l'effort de migration ou sont bloquées par des dépendances amont qui ne supportent pas encore Node.js 22 ou 24. AWS Lambda a déprécié le runtime Node.js 20 et avertit les développeurs de l'impact imminent.

⚠ Node.js Version Support Status (May 2026)

⚠ État du Support des Versions Node.js (mai 2026)

Version Status EOL Date Version Statut Fin de vie
Node.js 20 EOLFin de vie 2026-04-30
Node.js 22 LTS 2027-04-30
Node.js 24 CurrentActuelle 2028-04-30

January 2026 Node.js Security Release: 8 CVEs Explained

Release de Sécurité Node.js Janvier 2026 : 8 CVE Expliquées

On January 13, 2026, the Node.js project published a security release patching 8 CVEs across Node.js 20.x, 22.x, 24.x, and 25.x. The most severe was a malformed HTTP/2 HEADERS frame attack that could trigger an unhandled TLSSocket error (ECONNRESET), crashing the Node.js process remotely via denial of service. Updated versions: v20.20.0, v22.22.0, v24.13.0, v25.3.0.

Le 13 janvier 2026, le projet Node.js a publié une release de sécurité corrigeant 8 CVE sur Node.js 20.x, 22.x, 24.x et 25.x. La plus sévère était une attaque par frame HTTP/2 HEADERS mal formée capable de déclencher une erreur TLSSocket non gérée (ECONNRESET), faisant crasher le processus Node.js à distance. Versions corrigées : v20.20.0, v22.22.0, v24.13.0, v25.3.0.

March 2026 Node.js Security Release: The Two Process-Crash CVEs

Release de Sécurité Node.js Mars 2026 : Les Deux CVE de Crash de Processus

On March 24, 2026, the Node.js team patched another 8 CVEs, including two high-severity vulnerabilities that allow unauthenticated remote attackers to crash a Node.js process with a single HTTP request. Red Hat subsequently issued RHSA-2026:7670 and RHSA-2026:7675 confirming the impact on enterprise distributions. Updated versions: v20.20.2, v22.22.2, v24.14.1, v25.8.2.

Le 24 mars 2026, l'équipe Node.js a corrigé 8 CVE supplémentaires, dont deux vulnérabilités haute sévérité permettant à des attaquants distants non authentifiés de faire crasher un processus Node.js avec une seule requête HTTP. Red Hat a ensuite publié RHSA-2026:7670 et RHSA-2026:7675 confirmant l'impact sur les distributions entreprise. Versions corrigées : v20.20.2, v22.22.2, v24.14.1, v25.8.2.

CVE Severity Vector Fixed in CVE Sévérité Vecteur Corrigé dans
CVE-2026-21637 High TLS SNICallback uncaught exception → process crash 20.20.2, 22.22.2
CVE-2026-21710 High __proto__ header → TypeError crash via req.headersDistinct 20.20.2, 22.22.2
CVE-2026-21711 Medium Permission Model bypass via Unix Domain Sockets 22.22.2, 24.14.1
CVE-2026-21717 Medium V8 HashDoS via integer-like strings in untrusted JSON 20.20.2, 22.22.2

CVE-2026-21637: One TLS Packet Kills Your Server

CVE-2026-21637 : Un Seul Paquet TLS Tue Votre Serveur

The vulnerability lives in Node.js's TLS layer (_tls_wrap.js). When a TLS client sends an unexpected servername value, the SNICallback fires. Before the March 2026 patch, the loadSNI() function was not wrapped in a try/catch block. If the callback threw a synchronous exception — for example because the hostname was malformed or contained null bytes — the exception propagated as an uncaught exception and crashed the entire Node.js process.

La vulnérabilité se trouve dans la couche TLS de Node.js (_tls_wrap.js). Lorsqu'un client TLS envoie une valeur servername inattendue, le SNICallback se déclenche. Avant le correctif de mars 2026, la fonction loadSNI() n'était pas encadrée par un bloc try/catch. Si le callback lançait une exception synchrone — par exemple parce que le nom d'hôte était mal formé ou contenait des octets nuls — l'exception se propageait comme exception non attrapée et faisait crasher tout le processus Node.js.

Any HTTPS server that uses custom SNI routing — which includes most multi-domain Node.js applications, API gateways, and reverse proxies — was exposed to remote denial of service. No authentication required. No special payload. A single malformed TLS ClientHello with an unexpected servername was sufficient.

Tout serveur HTTPS utilisant le routage SNI personnalisé — ce qui inclut la plupart des applications Node.js multi-domaines, passerelles API et reverse proxies — était exposé à un déni de service distant. Aucune authentification requise. Aucun payload spécial. Un seul TLS ClientHello mal formé avec un servername inattendu suffisait.

CVE-2026-21710: The __proto__ Header That Crashes HTTP Servers

CVE-2026-21710 : Le Header __proto__ Qui Crashe les Serveurs HTTP

This vulnerability exploits a JavaScript prototype chain quirk in Node.js's HTTP parsing. When a client sends an HTTP request with a header literally named __proto__, and the application code accesses req.headersDistinct, Node.js throws an uncaught TypeError that brings down the process. The root cause: headersDistinct was built using a regular JavaScript object, allowing the __proto__ key to pollute the prototype chain.

Cette vulnérabilité exploite une particularité de la chaîne de prototypes JavaScript dans l'analyse HTTP de Node.js. Lorsqu'un client envoie une requête HTTP avec un header littéralement nommé __proto__, et que le code applicatif accède à req.headersDistinct, Node.js lève un TypeError non attrapé qui fait tomber le processus. La cause racine : headersDistinct était construit avec un objet JavaScript ordinaire, permettant à la clé __proto__

# Minimal reproduction — sends __proto__ header to crash unpatched Node.js
curl -H "__proto__: crash" http://your-node-server/api/anything
# Result on unpatched: [process exits with uncaught TypeError]
# Result on patched: normal 200 response

The fix in Node.js 20.20.2+ creates headersDistinct and trailersDistinct using Object.create(null), a null-prototype object that has no prototype chain and therefore cannot be polluted via __proto__. If your application never accesses req.headersDistinct directly, you were not exposed — but frameworks like Express may access it internally.

Le correctif dans Node.js 20.20.2+ crée headersDistinct et trailersDistinct via Object.create(null), un objet sans prototype qui ne peut donc pas être pollué via __proto__. Si votre application n'accède jamais directement à req.headersDistinct, vous n'êtiez pas exposé — mais des frameworks comme Express peuvent y accéder en interne.

Express March 2026 Security Release: path-to-regexp ReDoS Returns

Release de Sécurité Express Mars 2026 : Le ReDoS de path-to-regexp Est de Retour

On March 30, 2026, the Express team published a security release addressing three regular expression denial of service vulnerabilities in path-to-regexp — the routing library used by every Express.js application. This is the third time in 18 months that path-to-regexp has been hit by ReDoS. The two new CVEs affect different version branches of the library.

Le 30 mars 2026, l'équipe Express a publié une release de sécurité corrigeant trois vulnérabilités de déni de service par expression régulière dans path-to-regexp — la bibliothèque de routage utilisée par toutes les applications Express.js. C'est la troisième fois en 18 mois que path-to-regexp est touché par un ReDoS. Les deux nouveaux CVE affectent différentes branches de la bibliothèque.

CVE-2026-4867: 3+ Route Parameters Trigger Catastrophic Backtracking

CVE-2026-4867 : 3 Paramètres de Route ou Plus Déclenchent un Backtracking Catastrophique

This vulnerability affects path-to-regexp 0.1.x (the legacy branch shipped with Express 4). When a route has three or more parameters within a single segment separated by something other than a period — for example /:a-:b-:c — the generated regex is vulnerable to catastrophic backtracking. The backtrack protection introduced in v0.1.12 only handled two-parameter patterns; adding a third parameter breaks the lookahead assertions.

Cette vulnérabilité affecte path-to-regexp 0.1.x (la branche legacy livrée avec Express 4). Lorsqu'une route a trois paramètres ou plus dans un seul segment séparés par autre chose qu'un point — par exemple /:a-:b-:c — la regex générée est vulnérable à un backtracking catastrophique. La protection introduite dans la v0.1.12 ne gérait que les patterns à deux paramètres ; l'ajout d'un troisième rompt les assertions lookahead.

// CVE-2026-4867 — Vulnerable route pattern (Express 4 + path-to-regexp 0.1.x < 0.1.13)
app.get('/:year-:month-:day', (req, res) => { /* ... */ });

// An attacker can send: GET /2026-01-AAAAAAAAAA...AAAAAAAAAA!
// The regex engine will backtrack catastrophically, freezing the event loop
// Fix: upgrade path-to-regexp to 0.1.13+
// In Express 4: npm install path-to-regexp@0.1.13

CVE-2026-4923: Wildcard + Parameter Combinations Block the Event Loop

CVE-2026-4923 : Combinaisons Wildcard + Paramètre Bloquent la Boucle d'Événements

This vulnerability affects path-to-regexp 8.0.0 through 8.3.0 (the version used by Express 5). When a route combines multiple wildcards with at least one named parameter, and the second wildcard appears somewhere other than the end of the path — for example /*foo-*bar-:baz — a ReDoS-vulnerable regex is generated. A single crafted HTTP request freezes the Node.js event loop, making the entire application unresponsive until the process is restarted.

Cette vulnérabilité affecte path-to-regexp 8.0.0 à 8.3.0 (la version utilisée par Express 5). Lorsqu'une route combine plusieurs wildcards avec au moins un paramètre nommé, et que le second wildcard apparaît ailleurs qu'à la fin du chemin — par exemple /*foo-*bar-:baz — une regex vulnérable au ReDoS est générée. Une seule requête HTTP crafted fige la boucle d'événements Node.js, rendant l'application entièrement inréactive jusqu'au redémarrage du processus.

# Check your path-to-regexp versions
npm list path-to-regexp --all

# Express 4: should be >= 0.1.13
# Express 5: should be >= 8.4.0

# Update to patched versions
npm update path-to-regexp

Express February 2026 Security Release: Multer DoS Vulnerabilities

Release de Sécurité Express Février 2026 : Vulnérabilités DoS dans Multer

On February 27, 2026, the Express team published a security release for Multer — the most widely used file upload middleware for Express. Two high-severity DoS vulnerabilities were patched in version 2.1.0. Both allow attackers to exhaust server resources without authentication.

Le 27 février 2026, l'équipe Express a publié une release de sécurité pour Multer — le middleware de téléchargement de fichiers le plus utilisé pour Express. Deux vulnérabilités DoS haute sévérité ont été corrigées dans la version 2.1.0. Toutes deux permettent aux attaquants d'épuiser les ressources serveur sans authentification.

CVE-2026-2359 exploits connection dropout during file upload. When a client initiates an upload and then abruptly drops the connection, Multer fails to clean up file handles, memory buffers, and temporary disk files. Repeated dropouts exhaust file descriptors and memory. CVE-2026-3304 targets the fileFilter async callback: when a request triggers an error during multipart stream processing, files already written to disk during the asynchronous validation phase are never deleted, gradually consuming all available storage.

CVE-2026-2359 exploite l'abandon de connexion lors du téléchargement. Quand un client initie un upload puis coupe abruptement la connexion, Multer ne libère pas les file handles, tampons mémoire et fichiers temporaires. Des abandons répétés épuisent les descripteurs de fichiers et la mémoire. CVE-2026-3304 cible le callback async fileFilter : lorsqu'une requête déclenche une erreur durant le traitement du flux multipart, les fichiers déjà écrits sur disque lors de la validation asynchrone ne sont jamais supprimés, consommant progressivement tout le stockage disponible.

# Check your multer version
npm list multer

# Should be >= 2.1.0
npm install multer@^2.1.0

Express Hardening Guide for 2026: helmet.js, Rate Limiting & More

Guide de Durcissement Express pour 2026 : helmet.js, Rate Limiting & Plus

Beyond patching individual CVEs, securing an Express application in 2026 requires a defense-in-depth approach. The following practices address the most common attack vectors seen in Node.js/Express applications.

Au-delà du patch des CVE individuelles, sécuriser une application Express en 2026 nécessite une approche de défense en profondeur. Les pratiques suivantes adressent les vecteurs d'attaque les plus courants des applications Node.js/Express.

1. Install helmet.js — 13 Security Headers in One Line

1. Installer helmet.js — 13 En-têtes de Sécurité en Une Ligne

Helmet sets 13 security-related HTTP response headers that protect against XSS, clickjacking, MIME sniffing, and more. It's the single highest-ROI security addition you can make to an Express application.

Helmet définit 13 en-têtes de réponse HTTP liés à la sécurité qui protègent contre le XSS, le clickjacking, le MIME sniffing et plus encore. C'est l'ajout de sécurité au meilleur ROI que vous puissiez faire sur une application Express.

const express = require('express');
const helmet = require('helmet');

const app = express();

// Enable all 13 headers with sane defaults
app.use(helmet());

// Or configure Content-Security-Policy for production
app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        defaultSrc: ["'self'"],
        scriptSrc: ["'self'"],
        styleSrc: ["'self'", "'unsafe-inline'"],
        imgSrc: ["'self'", "data:", "https:"],
      },
    },
    // TLS 1.3 is standard in 2026 — enforce HSTS
    strictTransportSecurity: {
      maxAge: 31536000,
      includeSubDomains: true,
      preload: true,
    },
  })
);

2. Rate Limiting — Block Brute Force and DoS at the App Layer

2. Rate Limiting — Bloquer la Force Brute et le DoS au Niveau Applicatif

const rateLimit = require('express-rate-limit');

// Global limiter — protects all routes
const globalLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100,                   // max 100 requests per IP per window
  standardHeaders: 'draft-7',
  legacyHeaders: false,
  message: { error: 'Too many requests, please try again later.' },
});
app.use(globalLimiter);

// Strict limiter for sensitive endpoints
const authLimiter = rateLimit({
  windowMs: 60 * 60 * 1000,  // 1 hour
  max: 10,                    // max 10 login attempts per hour
  skipSuccessfulRequests: true,
});
app.use('/api/auth/', authLimiter);

3. Migrate to Express 5 — Path-to-Regexp ReDoS Protection Built-In

3. Migrer vers Express 5 — Protection ReDoS Path-to-Regexp Intégrée

Express 5 (released October 2024, now stable in 2026) ships with significant security improvements over Express 4: it uses path-to-regexp 8.x (with updated ReDoS protections), rejects invalid headers by default, and improves async error handling so unhandled promise rejections no longer silently fail. Express 4 remains supported but is on a maintenance path — new security features are only added to Express 5.

Express 5 (sorti en octobre 2024, maintenant stable en 2026) embarque des améliorations de sécurité significatives par rapport à Express 4 : il utilise path-to-regexp 8.x (avec des protections ReDoS mises à jour), rejette les headers invalides par défaut, et améliore la gestion des erreurs async pour que les rejets de promesses non gérés n'échouent plus silencieusement. Express 4 reste supporté mais est en mode maintenance — les nouvelles fonctionnalités de sécurité ne sont ajoutées qu'à Express 5.

# Migrate from Express 4 to Express 5
npm install express@^5.0.0

# Key breaking changes in Express 5:
# - Route parameters no longer accept regex — use named groups instead
# - app.del() removed — use app.delete()
# - req.param() removed — use req.params / req.query / req.body
# - Async errors in route handlers are now forwarded to error middleware

4. Dependency Auditing — Automate CVE Detection for All 16 Attack Surfaces

4. Audit des Dépendances — Automatiser la Détection CVE sur les 16 Surfaces d'Attaque

The 16 CVEs patched in Q1 2026 were spread across the Node.js core, Express routing, Express middleware (Multer), and transitive dependencies. A single npm audit run gives you a snapshot, but doesn't alert you when new CVEs are published after you deploy. Automated monitoring catches vulnerabilities like CVE-2026-4867 the day they're disclosed, not when you remember to run an audit.

Les 16 CVE corrigées au T1 2026 étaient réparties sur le core Node.js, le routage Express, les middlewares Express (Multer) et les dépendances transitives. Un seul npm audit donne un instantané, mais ne vous alerte pas quand de nouvelles CVE sont publiées après votre déploiement. Le monitoring automatisé détecte les vulnérabilités comme CVE-2026-4867 le jour de leur divulgation, pas quand vous pensez à lancer un audit.

# One-time audit (snapshot only)
npm audit

# Check specific packages
npm audit --package-lock-only

# Fix automatically (patch-level bumps)
npm audit fix

# For deeper inspection, use npx
npx better-npm-audit audit

Node.js/Express Security Checklist for 2026

Checklist de Sécurité Node.js/Express pour 2026

✅ Runtime & Dependencies

✅ Runtime & Dépendances

  • Upgrade from Node.js 20 (EOL April 30, 2026) to Node.js 22 LTS or 24
  • Migrer de Node.js 20 (EOL 30 avril 2026) vers Node.js 22 LTS ou 24
  • Run npm audit in CI — block builds on high/critical CVEs
  • Lancer npm audit en CI — bloquer les builds sur les CVE high/critical
  • Pin path-to-regexp: >=0.1.13 (Express 4) or >=8.4.0 (Express 5)
  • Fixer path-to-regexp : >=0.1.13 (Express 4) ou >=8.4.0 (Express 5)
  • Upgrade multer to >=2.1.0 to fix CVE-2026-2359 and CVE-2026-3304
  • Mettre à jour multer vers >=2.1.0 pour corriger CVE-2026-2359 et CVE-2026-3304

✅ HTTP Security Headers

✅ En-têtes de Sécurité HTTP

  • Install helmet — 13 security headers, 1 line of code
  • Installer helmet — 13 en-têtes de sécurité, 1 ligne de code
  • Configure HSTS with maxAge: 31536000 and includeSubDomains: true
  • Configurer HSTS avec maxAge: 31536000 et includeSubDomains: true
  • Set CSP in report-only mode first, then enforce
  • Définir CSP en mode report-only d'abord, puis appliquer

✅ Rate Limiting & Input Validation

✅ Rate Limiting & Validation des Entrées

  • Apply global rate limiting with express-rate-limit
  • Appliquer le rate limiting global avec express-rate-limit
  • Apply strict limits on /auth, /login, /register routes
  • Appliquer des limites strictes sur les routes /auth, /login, /register
  • Validate and sanitize all request inputs with joi or zod
  • Valider et assainir toutes les entrées avec joi ou zod
  • Avoid routes with 3+ parameters in the same segment (/:a-:b-:c)
  • Éviter les routes avec 3+ paramètres dans le même segment (/:a-:b-:c)

✅ Async Error Handling

✅ Gestion des Erreurs Async

  • Wrap all async route handlers in try/catch or use a wrapper like express-async-errors
  • Envelopper tous les handlers async dans try/catch ou utiliser un wrapper comme express-async-errors
  • Register a global error middleware: app.use((err, req, res, next) => { ... })
  • Enregistrer un middleware d'erreur global : app.use((err, req, res, next) => { ... })
  • Set process.on('uncaughtException', ...) and 'unhandledRejection' to log and restart gracefully
  • Définir process.on('uncaughtException', ...) et 'unhandledRejection' pour logger et redémarrer proprement

Frequently Asked Questions

Questions Fréquentes

Is Node.js 20 still safe to use after April 30, 2026?

Node.js 20 est-il encore sûr à utiliser après le 30 avril 2026 ?

No. After April 30, 2026, Node.js 20 receives no security patches from the Node.js project. Any new CVE discovered in Node.js code that runs on version 20 will remain unpatched. The recommended upgrade path is Node.js 22 LTS (supported until April 2027) or Node.js 24 (current). If you cannot migrate immediately, consider commercial extended support from vendors like HeroDevs while you plan the upgrade.

Non. Après le 30 avril 2026, Node.js 20 ne reçoit plus aucun patch de sécurité du projet Node.js. Toute nouvelle CVE découverte dans le code Node.js tournant sur la version 20 restera sans correctif. La mise à niveau recommandée est Node.js 22 LTS (supporté jusqu'en avril 2027) ou Node.js 24. Si vous ne pouvez pas migrer immédiatement, considérez un support étendu commercial de fournisseurs comme HeroDevs pendant que vous planifiez la migration.

Am I affected by CVE-2026-21637 if I don't use custom SNI routing?

Suis-je affecté par CVE-2026-21637 si je n'utilise pas de routage SNI personnalisé ?

If your application uses HTTPS via Node.js's built-in TLS/HTTPS module and you have any kind of SNICallback configured, you are exposed. Multi-domain setups, wildcard certificate handlers, and custom TLS contexts all use SNICallback. If you terminate TLS at a load balancer (NGINX, AWS ALB) before it reaches Node.js, your application is not directly exposed — but upgrading Node.js is still recommended to prevent any downstream exposure.

Si votre application utilise HTTPS via le module TLS/HTTPS intégré de Node.js et que vous avez un SNICallback configuré, vous êtes exposé. Les configurations multi-domaines, les gestionnaires de certificats wildcard et les contextes TLS personnalisés utilisent tous SNICallback. Si vous terminez TLS au niveau d'un load balancer (NGINX, AWS ALB) avant qu'il n'atteigne Node.js, votre application n'est pas directement exposée — mais la mise à niveau de Node.js reste recommandée.

How do I know if my Express routes are vulnerable to CVE-2026-4867?

Comment savoir si mes routes Express sont vulnérables à CVE-2026-4867 ?

Search your Express 4 codebase for route patterns with three or more parameters in the same segment separated by non-period characters. The pattern to grep for is /:param1-:param2-:param3 or similar. Run npm list path-to-regexp — if you see version 0.1.x below 0.1.13, upgrade immediately with npm install path-to-regexp@0.1.13. In Express 4, path-to-regexp 0.1.x is a direct dependency, so updating it directly takes effect.

Recherchez dans votre codebase Express 4 les patterns de route avec trois paramètres ou plus dans le même segment séparés par des caractères non-point. Le pattern à chercher est /:param1-:param2-:param3 ou similaire. Exécutez npm list path-to-regexp — si vous voyez une version 0.1.x inférieure à 0.1.13, mettez à jour immédiatement avec npm install path-to-regexp@0.1.13. Dans Express 4, path-to-regexp 0.1.x est une dépendance directe, donc la mettre à jour prend effet immédiatement.

Does migrating to Express 5 fix all these vulnerabilities?

La migration vers Express 5 corrige-t-elle toutes ces vulnérabilités ?

Migrating to Express 5 helps but is not a complete fix on its own. Express 5 uses path-to-regexp 8.x and ships with improved default security behaviors, but you still need to upgrade path-to-regexp to at least 8.4.0 (for CVE-2026-4923), upgrade Node.js itself to get the core runtime fixes (CVE-2026-21637, CVE-2026-21710), and upgrade Multer to 2.1.0+ if you handle file uploads. Security is layered — no single upgrade covers everything.

Migrer vers Express 5 aide mais n'est pas un correctif complet en soi. Express 5 utilise path-to-regexp 8.x et embarque des comportements de sécurité par défaut améliorés, mais vous devez quand même mettre à jour path-to-regexp vers au moins 8.4.0 (pour CVE-2026-4923), mettre à jour Node.js lui-même pour obtenir les correctifs du runtime core (CVE-2026-21637, CVE-2026-21710), et mettre à jour Multer vers 2.1.0+ si vous gérez des uploads de fichiers. La sécurité est multicouche — aucune mise à jour unique ne couvre tout.

How do I monitor for new Node.js/Express CVEs automatically?

Comment surveiller automatiquement les nouvelles CVE Node.js/Express ?

Running npm audit in your CI pipeline gives you a snapshot at build time but won't alert you when a new CVE is published against a package you already have deployed. Automated monitoring tools scan your package-lock.json daily against the OSV and NVD databases, and alert you the moment a new vulnerability is disclosed for any of your dependencies — including transitive ones like path-to-regexp that are nested two levels deep in your dependency tree.

Lancer npm audit dans votre pipeline CI vous donne un instantané au moment du build mais ne vous alertera pas quand une nouvelle CVE est publiée contre un package que vous avez déjà en production. Les outils de monitoring automatisés scannent votre package-lock.json quotidiennement contre les bases OSV et NVD, et vous alertent dès qu'une nouvelle vulnérabilité est divulguée pour l'une de vos dépendances — y compris les transitives comme path-to-regexp imbriquées à deux niveaux dans votre arbre de dépendances.

Never Miss a Node.js CVE Again

Ne Ratez Plus Jamais une CVE Node.js

CVE OptiBot scans your package-lock.json, yarn.lock, and pnpm-lock.yaml daily against OSV.dev and NVD. When a new vulnerability is disclosed for any of your dependencies — including transitive ones like path-to-regexp — you get an alert the same day, not when you remember to run npm audit. No code access required. Connect your lockfile, get CVE alerts.

CVE OptiBot scanne votre package-lock.json, yarn.lock et pnpm-lock.yaml quotidiennement contre OSV.dev et NVD. Quand une nouvelle vulnérabilité est divulguée pour l'une de vos dépendances — y compris les transitives comme path-to-regexp — vous recevez une alerte le jour même, pas quand vous pensez à lancer npm audit. Aucun accès au code requis. Connectez votre lockfile, recevez les alertes CVE.

Start free CVE monitoring Démarrer le monitoring CVE gratuit