Node.js a publié le 21 octobre 2026 une série de correctifs de sécurité couvrant simultanément les trois branches maintenues du runtime : 22.x, 24.x et 26.x. La faille la plus sérieuse touche le décodeur Brotli et permet une exécution de code à distance. La publication corrige aussi plusieurs contournements de validation TLS, ce qui en fait l’une des mises à jour les plus denses de l’année pour les équipes qui exploitent Node.js en production.
Une exécution de code à distance via le décodeur Brotli
La vulnérabilité principale, référencée CVE-2026-111497 et classée en sévérité haute, provient d’une erreur dans le décodeur Brotli intégré à Node.js. Une entrée Brotli spécialement construite peut provoquer une écriture hors limites, un défaut classique qui ouvre la voie à une exécution de code arbitraire côté serveur. Le correctif a été signalé par l’équipe sécurité d’OpenAI Codex ainsi que par les chercheurs Khai Tran et Sylvie Mayer, puis traité par les mainteneurs Matteo Collina et Antoine du Hamel.
Tout service qui décompresse du contenu Brotli non fiabilisé doit considérer cette faille comme prioritaire. La fonction zlib.brotliDecompress et ses équivalents synchrones sont directement concernés.
TLS : plusieurs contournements corrigés dans la même publication
La même publication referme trois défauts de validation TLS. Deux d’entre eux permettent de faire passer un nom d’hôte invalide pour valide, l’un via des chiffres pleine chasse dans un certificat, l’autre lorsqu’un hôte se résout de façon laxiste vers une adresse IP. Un troisième correctif concerne la validation des certificats portant une adresse IPv4 non canonique. Ces défauts touchent directement la chaîne de confiance TLS que Node.js avait déjà retravaillée en septembre, avec le renouvellement de ses racines NSS et d’OpenSSL. D’autres correctifs, de sévérité moyenne à basse, portent sur la réutilisation de sockets keep-alive, la génération répétée de valeurs via crypto.randomUUID(), et deux contournements du modèle de permissions propre à la branche 26.x.
| Branche | Version corrigée | Statut | Faille Brotli |
|---|---|---|---|
| 22.x | 22.23.4 | LTS | Concernée |
| 24.x | 24.22.1 | LTS (dernière) | Concernée |
| 26.x | 26.12.1 | Current (dernière) | Concernée |
Versions concernées et mise à jour
Les trois branches maintenues sont affectées, ce qui écarte toute stratégie de contournement par changement de version mineure. Une application qui tourne encore sur une branche arrivée en fin de vie reste vulnérable sans recevoir de correctif, ce qui vaut aussi pour la faille Brotli. La vérification de version et la mise à niveau restent la seule réponse recommandée par l’équipe Node.js.
# Vérifier la version active
node --version
# Avec nvm, installer et activer la version corrigée de la branche utilisée
nvm install 24.22.1
nvm alias default 24.22.1
# Sur un déploiement systemd, reconstruire puis recharger le service
npm ci --omit=dev
sudo systemctl restart mon-app.serviceUne entrée Brotli peut provoquer une écriture hors limites capable de conduire à une exécution de code à distance, sur les trois branches actuellement maintenues de Node.js.
Les versions de Node.js arrivées en fin de vie restent exposées à la faille Brotli : elles ne recevront aucun correctif. Un audit rapide des environnements de production permet de repérer les instances encore sur une branche non maintenue avant qu’elles ne deviennent la cible la plus simple.
Ce que cela change pour les équipes qui déploient Node.js
La densité de cette publication, six CVE en une seule fois dont une RCE haute sévérité, rappelle que la surface d’attaque d’un runtime ne se limite pas au code applicatif. Les équipes qui gèrent un déploiement Node.js en production derrière systemd et un reverse proxy ont intérêt à automatiser la bascule de version plutôt qu’à la traiter manuellement à chaque annonce. Les correctifs TLS de cette publication font par ailleurs écho au rafraîchissement de la chaîne TLS de Node.js engagé en septembre, preuve que ce chantier reste actif.
Ce qu’il faut retenir
Node.js 22.23.4, 24.22.1 et 26.12.1 corrigent une faille RCE critique dans le décodeur Brotli ainsi que plusieurs contournements TLS. La mise à jour concerne toute installation active, y compris celles qui tournent sur des versions LTS récentes publiées il y a quelques jours à peine, comme la 24.22.0 sortie la semaine précédente. Les versions en fin de vie restent vulnérables sans espoir de correctif.
Ce genre de publication groupée pose toujours la même question aux équipes techniques : qui surveille réellement les annonces de sécurité d’un runtime une fois le projet en production depuis plusieurs mois ? La réponse, trop souvent, est personne, jusqu’à ce qu’un audit ou un incident la pose à la place de l’équipe. Automatiser la veille sur les releases de sécurité de Node.js, avec une alerte qui déclenche une mise à jour testée sous 48 heures, coûte largement moins cher qu’un service compromis via une dépendance aussi commune que le décodage Brotli — Simon Janvier.
Pour aller plus loin : l’avis de sécurité complet, avec la liste détaillée des CVE corrigées par branche, est disponible sur le blog officiel de Node.js.
