CVE-2026-111497 (Node2Shell) : écriture hors limites CVSS 9.2 dans le décodeur Brotli de Node.js — RCE sans auth, PoC en cours. Patch Node.js 22.23.4/24.22.1/26.12.1 urgent.
En bref
- CVE-2026-111497 : écriture hors limites (out-of-bounds write) critique dans le décodeur Brotli de Node.js (CVSS 9.2), permettant une exécution de code arbitraire à distance — baptisée Node2Shell par les chercheurs
- Affecte Node.js 22.x avant 22.23.4, Node.js 24.x avant 24.22.1, Node.js 26.x avant 26.12.1 — la bibliothèque Brotli Google sous-jacente versions 1.0.3 à 1.2.0 est également affectée
- Action urgente : mettre à jour Node.js immédiatement vers 22.23.4, 24.22.1 ou 26.12.1 ; mettre à jour le package npm brotli si utilisé séparément
Les faits
Le 21 octobre 2026, le projet Node.js a publié des mises à jour de sécurité d'urgence corrigeant dix vulnérabilités, dont CVE-2026-111497, la plus critique du lot. Surnommée Node2Shell par les chercheurs en sécurité d'Aikido Security et de Brandefense, cette vulnérabilité permet à un attaquant distant non authentifié d'exécuter du code arbitraire sur n'importe quel système faisant tourner une version non patchée de Node.js exposant des fonctionnalités de décompression Brotli.
CVE-2026-111497 est une vulnérabilité d'écriture hors limites (CWE-787 : Out-of-Bounds Write) dans le décodeur Brotli intégré au moteur Node.js. La faille réside dans le fichier source c/dec/decode.c de la bibliothèque Brotli de Google (versions 1.0.3 à 1.2.0), exposée via le module node:zlib de Node.js. Lors du décodage d'un flux Brotli malformé, le décodeur peut écrire au-delà des limites du tampon alloué, corrompant la mémoire adjacente et permettant potentiellement à un attaquant de contrôler le pointeur d'instruction et d'exécuter du code arbitraire.
En termes de scoring, le CVE record de Google attribue à CVE-2026-111497 un score CVSS v4.0 de 9.2. Certains agrégateurs mentionnent également un score CVSS v3 de 9.8, bien que ce score ne provienne pas directement du projet Node.js ou du NVD. Le projet Node.js qualifie la faille de haute sévérité dans son advisory. Le vecteur d'attaque est réseau (AV:N), la complexité est faible (AC:L), aucun privilège ni interaction utilisateur n'est requis, et l'impact en termes d'intégrité et de disponibilité est élevé.
La surface d'attaque de CVE-2026-111497 est particulièrement large car le décodage Brotli est activé par défaut dans l'API fetch() native de Node.js depuis Node.js 18. Concrètement, toute application Node.js qui effectue des requêtes HTTP vers des ressources externes décode automatiquement les réponses Brotli sans que le développeur n'ait à activer explicitement cette fonctionnalité. Un attaquant contrôlant un serveur ou capable d'intercepter le trafic HTTP sortant (attaque man-in-the-middle) peut délivrer une réponse Brotli malformée à une application victime et déclencher l'exploitation.
Au-delà de l'API fetch(), les applications utilisant explicitement node:zlib.createBrotliDecompress() ou node:zlib.brotliDecompress() sont également exposées dès lors qu'elles traitent des données Brotli contrôlées par un attaquant. Les applications de proxy inverse, de cache, d'agrégation de flux et de traitement de données provenant de sources tierces sont donc particulièrement à risque.
La faille a été divulguée de manière coordonnée le 21 octobre 2026 par le projet Node.js en collaboration avec Google, qui a simultanément publié des correctifs pour la bibliothèque Brotli elle-même (versions 1.0.10, 1.1.1 et 1.2.1). Cyberkendra a signalé le développement d'un proof-of-concept (PoC) pour CVE-2026-111497 peu après la divulgation, sans confirmation d'exploitation in-the-wild à ce stade. Toutefois, la disponibilité imminente de PoC publics rend la fenêtre de patching extrêmement courte.
L'écosystème Node.js étant omniprésent dans les backends web modernes, les microservices, les pipelines de données et les applications serverless, l'impact potentiel de CVE-2026-111497 est comparable à celui de Log4Shell en termes d'étendue de la surface d'attaque. Les applications Node.js déployées en conteneurs Docker doivent être reconstruites à partir d'images base mises à jour. Les environnements serverless (AWS Lambda, Vercel, Netlify Functions) utilisant des runtimes Node.js non patchés sont également exposés jusqu'à ce que les fournisseurs de cloud mettent à jour leurs runtimes.
Le lot de sécurité d'octobre 2026 de Node.js corrige en tout dix vulnérabilités, dont plusieurs failles de sévérité haute affectant les composantes TLS et DNS. CVE-2026-111497 est toutefois la seule à permettre l'exécution de code à distance sans authentification, ce qui en fait la priorité absolue de ce cycle de patching selon les analyses de Threat Intelligence RedEye Security et d'Atlas Security.
Impact et exposition
Node.js est l'environnement d'exécution JavaScript côté serveur dominant, utilisé par des millions d'applications web, d'APIs REST, de microservices et de pipelines DevOps dans le monde entier. La prévalence du décodage Brotli par défaut dans fetch() signifie que la grande majorité des applications Node.js effectuant des requêtes sortantes est potentiellement exposée.
Les conditions d'exploitation dépendent fortement de l'architecture applicative. Une application qui reçoit des données Brotli de sources contrôlées par l'attaquant (formulaires, uploads, proxies) et les décompresse avec node:zlib est directement exploitable. Une application qui ne fait que des appels sortants vers des API de confiance est exposée uniquement si ces API sont compromises ou si le trafic peut être intercepté (MITM). Les applications utilisant HTTPS avec une validation stricte des certificats réduisent, mais n'éliminent pas, ce risque résiduel.
Les environnements de build et de CI/CD utilisant des versions Node.js non patchées pour exécuter des scripts de build traitant des artefacts provenant de dépôts tiers représentent un vecteur d'attaque sous-estimé. Une attaque de chaîne d'approvisionnement combinée à CVE-2026-111497 pourrait permettre de compromettre des pipelines de déploiement entiers.
Recommandations immédiates
- Mettre à jour Node.js vers la version 22.23.4, 24.22.1 ou 26.12.1 selon la branche utilisée — advisory : Node.js Security Releases du 21 octobre 2026 (sans lien externe)
- Mettre à jour la bibliothèque Google Brotli si elle est utilisée directement : vers la version 1.0.10 (branche 1.0.x), 1.1.1 (branche 1.1.x) ou 1.2.1 (branche 1.2.x)
- Reconstruire les images Docker utilisant des images base node:* ou node:alpine non patchées
- Mettre à jour les fonctions serverless (AWS Lambda, Vercel, Netlify) si elles utilisent un runtime Node.js géré par le développeur
- Mitigation temporaire si le patching immédiat est impossible : désactiver la décompression Brotli dans les appels fetch() via des headers personnalisés (Accept-Encoding sans br) et éviter de traiter des données Brotli provenant de sources non maîtrisées
- Indicateurs de compromission : surveiller les comportements anormaux des processus Node.js (connexions sortantes inattendues, nouveaux fichiers créés, élévation de privilèges), analyser les logs d'application pour des erreurs de décompression Brotli inhabituelles
⚠️ Urgence
PoC en développement actif depuis la divulgation du 21 octobre. La surface d'attaque est massive : toute application Node.js utilisant fetch() ou node:zlib avec décompression Brotli est exposée. Patcher immédiatement — la fenêtre avant exploitation généralisée est très courte.
Comment savoir si je suis vulnérable ?
Vérifiez votre version Node.js avec la commande : node -v. Si vous êtes en Node.js 22.x avant 22.23.4, 24.x avant 24.22.1, ou 26.x avant 26.12.1, vous êtes vulnérable. Pour les versions plus anciennes (18.x, 20.x), vérifiez si un backport a été publié via l'advisory officiel Node.js. Pour vérifier l'usage de Brotli dans votre code : grep -r "brotli|BrotliDecompress|createBrotliDecompress" ./src. L'API fetch() native décode le Brotli automatiquement dans toutes les versions Node.js 18+.
Votre infrastructure est-elle exposée ?
Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.
Demander un auditÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
ayi@ayinedjimi-consultants.fr
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
CVE-2026-109619 PHP2Shell : use-after-free RCE CVSS 9.2 — exploitation active
CVE-2026-109619 (PHP2Shell) : use-after-free RCE CVSS 9.2 dans PHP exploitée depuis le 17 octobre, avant divulgation. Alerte CERT-FR CERTFR-2026-ALE-014.
CVE-2026-114625 : Arista VeloCloud zero-day SQL injection CVSS 9.9 exploité
CVE-2026-114625 : injection SQL CVSS 9.9 zero-day dans Arista VeloCloud Orchestrator, exploitation active confirmée. Patch immédiat requis pour les déploiements On-Prem.
CVE-2026-110264 : GitLab RCE CVSS 10 sans auth depuis 2014
CVE-2026-110264 : integer overflow dans le moteur regex de GitLab permettant un RCE sans authentification, CVSS 10.0. Affecte toutes les versions CE/EE depuis 7.0 (2014). Patch disponible depuis le 21 octobre 2026.
Un projet cybersécurité ? Parlons-en.
Pentest, conformité NIS 2, ISO 27001, audit IA, RSSI externalisé… nos experts répondent sous 24h pour évaluer votre besoin et vous proposer un accompagnement sur mesure.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire