Le 21 octobre 2026, Node.js a publié les versions 22.23.4, 24.22.1 et 26.12.1, qui corrigent dix vulnérabilités. La plus grave, CVE-2026-111497, touche le décodeur Brotli intégré à Node.js : une donnée compressée malformée peut écrire au-delà d'un tampon interne, ce qui peut faire planter le processus, exposer de la mémoire ou mener à une exécution de code à distance. Qualys la note CVSS 4.0 9,2, et une preuve de concept a été publiée.
Ce qui se passe
Un changement de bloc invalide dans un flux Brotli était traité comme « j'ai besoin de plus de données » au lieu d'une erreur de format définitive. Le décodeur continuait donc d'ajouter des octets dans un tampon interne de huit octets, au-delà de sa fin. Un attaquant capable d'envoyer des données Brotli que votre application décompresse avec node:zlib peut s'en servir pour corrompre la mémoire du processus.
Vos applications sont-elles exposées ?
La faille demande des données Brotli contrôlées par l'attaquant et décompressées par votre processus. Cherchez :
- des serveurs ou proxys qui décompressent les corps de requête envoyés avec
Content-Encoding: br; - des clients HTTP qui vont chercher des URL choisies par un utilisateur (webhooks, aperçus de liens, proxys d'images) et décompressent les réponses
br; - des traitements d'upload qui décompressent des fichiers.
Une application classique qui n'appelle que sa propre API est bien moins exposée, mais la bonne réponse reste la mise à jour, car le décodage Brotli est facile à atteindre indirectement via des bibliothèques.
Versions corrigées
- Node.js 22 : 22.23.4 ou plus récent
- Node.js 24 : 24.22.1 ou plus récent
- Node.js 26 : 26.12.1 ou plus récent
Redémarrez chaque processus Node après la mise à jour (PM2, systemd, conteneurs). Reconstruisez les images Docker au lieu de réutiliser des images de base déjà en cache.
Encore en Node.js 20 ?
Node.js 20 et antérieurs sont en fin de vie et ne reçoivent aucun correctif. Le projet indique que les versions en fin de vie sont toujours concernées lors d'une mise à jour de sécurité. Si un serveur tourne encore en Node.js 20, la correction passe par une migration vers 22 ou 24, à tester avant la production.
Les autres correctifs de la même version
- Élevé : la vérification du nom d'hôte TLS pouvait être contournée avec des adresses IP en chiffres pleine chasse (CVE-2026-105483) et avec des IPv4 à zéro initial lues en octal (CVE-2026-106069) ;
dns.resolve*()tronquait les noms au premier octet NUL (CVE-2026-105482). - Moyen : une connexion keep-alive pouvait accepter une réponse envoyée avant la requête (CVE-2026-105481) ; des écritures IPv4 non canoniques pouvaient correspondre au nom DNS d'un certificat (CVE-2026-106072) ;
randomUUID()etrandomInt()répétaient leurs valeurs dans les processus lancés depuis un snapshot ou une application exécutable unique (CVE-2026-106074). - Faible : trois problèmes dans le lecteur ZIP et le Permission Model.
En attendant la mise à jour
Node.js n'a publié aucun contournement officiel. Pour réduire la surface d'attaque en attendant : ne décompressez pas de Brotli venant de sources non fiables, et limitez la taille des corps compressés et le taux de décompression au niveau du reverse proxy ou du WAF. Ces mesures réduisent l'exposition sans rendre sûr un runtime non corrigé.
Sources
Besoin d'aide pour mettre Node.js à jour en production ?
Nous mettons à jour, testons et redéployons des applications Node.js et Next.js sans interruption.
Contacter Elaitech