En bref

  • CVE-2026-111497 "Node2Shell" : out-of-bounds write dans Brotli 1.0.3–1.2.0 (CVSS 9.8), permet une exécution de code à distance sans authentification
  • Affecte Node.js 18/20/22 non patchés, Microsoft .NET, distributions Linux (Debian, RHEL, Amazon Linux) et tout produit décompressant des données Brotli non fiables
  • Exploitation active confirmée, inscrite au CISA KEV le 29 octobre 2026 ; PoC public sur GitHub depuis fin octobre 2026

Les faits

Le 21 octobre 2026, Node.js publie des mises à jour de sécurité pour CVE-2026-111497, surnommée "Node2Shell" par les chercheurs d'Akamai. La vulnérabilité réside dans le décodeur Brotli de Google — bibliothèque open-source de compression intégrée dans Node.js, .NET, et de nombreux autres runtimes. Le CVSS v3.1 est fixé à 9.8, l'un des scores les plus critiques du dernier trimestre 2026.

Techniquement, il s'agit d'un débordement d'écriture hors limites (out-of-bounds write) dans le décodeur Brotli versions 1.0.3 à 1.2.0. Un attaquant capable de fournir des données Brotli compressées malformées peut corrompre la mémoire du processus cible, entraînant au minimum un crash (déni de service), au pire une divulgation d'informations mémoire sensibles, et dans les conditions optimales une exécution de code à distance complète. Google a publié des correctifs dans les versions 1.0.10, 1.1.1 et 1.2.1 de la bibliothèque Brotli.

Le vecteur d'exploitation est particulièrement dangereux car Brotli est omniprésent dans les échanges HTTP modernes. HTTP/2 et HTTP/3 supportent Content-Encoding: br, permettant aux serveurs de transmettre des réponses compressées avec Brotli. Tout serveur Node.js consommant des réponses HTTP externes via fetch(), ou traitant des corps de requêtes encodés Brotli via Express 5+, est potentiellement vulnérable si le runtime n'a pas été mis à jour.

Microsoft .NET est également affecté via System.IO.Compression.BrotliDecoder. Des distributions Linux majeures — Debian, Red Hat Enterprise Linux, Amazon Linux — ont émis leurs propres bulletins de sécurité pour les paquets libbrotli1 et leurs dépendances. Amazon Linux a intégré la correction dans ses dépôts le 23 octobre 2026 selon les données Amazon ALAS.

Le 29 octobre 2026, la CISA inscrit CVE-2026-111497 au catalogue KEV (Known Exploited Vulnerabilities). Cette inscription confirme que des acteurs malveillants exploitent activement la faille. Des chercheurs de Sysdig ont documenté la chaîne d'exploitation complète sous le nom "Node2Shell" : un attaquant obtient un shell sur un serveur Node.js vulnérable en envoyant une requête HTTP avec un corps Brotli spécialement forgé. Un PoC public a été mis en ligne sur GitHub (compte dimasma0305), abaissant significativement le seuil d'accès à l'exploitation.

La CSA de Singapour publie le 31 octobre 2026 l'alerte AL-2026-154 enjoignant toutes les organisations à patcher immédiatement. La CSA précise que l'exploitation ne nécessite pas d'authentification préalable dans la plupart des configurations exposées, et que des produits commerciaux intégrant Brotli en interne sont affectés sans que tous leurs éditeurs aient publié leurs propres correctifs à cette date.

Red Hat confirme que RHEL 8 et RHEL 9 sont affectés via le paquet brotli. Les systèmes inférieurs à brotli-1.0.9-4.el8 (RHEL 8) et brotli-1.0.9-6.el9 (RHEL 9) restent vulnérables. Les administrateurs peuvent vérifier avec rpm -q brotli (RHEL/CentOS) ou dpkg -l libbrotli1 (Debian/Ubuntu).

L'ampleur de l'exposition est massive. Brotli est intégré dans tous les navigateurs modernes pour la décompression côté client (Chrome, Firefox, Safari), mais CVE-2026-111497 touche spécifiquement l'usage côté serveur dans les runtimes et applications décompressant des données Brotli issues de sources non contrôlées. Les applications serverless et microservices Node.js sur AWS Lambda, Azure Functions ou Google Cloud Run sont particulièrement à risque si les images de runtime n'ont pas été mises à jour avant déploiement.

Impact et exposition

Tout système exécutant Node.js 18.x avant 18.20.x, 20.x avant 20.18.x, ou 22.x avant 22.9.x est vulnérable. Les applications .NET consommant des streams Brotli depuis des sources non fiables sont exposées. Les environnements intégrant Brotli via npm (iltorb, compression-stream-br) peuvent être affectés selon leur implémentation. L'exposition est maximale pour les reverse proxies et API gateways décompressant le trafic entrant avant de le transmettre aux services internes.

Recommandations

  • Mettre à jour Node.js vers 18.20.x, 20.18.x ou 22.9.x minimum — correctif disponible depuis le 21 octobre 2026
  • Patcher les paquets libbrotli1 et libbrotli-dev sur toutes les distributions Linux (Debian, Ubuntu, RHEL, Amazon Linux)
  • Auditer les pipelines CI/CD et images Docker pour identifier les runtimes Node.js ou .NET obsolètes embarqués
  • Désactiver temporairement Content-Encoding: br sur les reverse proxies (nginx, HAProxy) si le patch immédiat est impossible
  • Surveiller les journaux applicatifs pour des tentatives de décompression anormales ou des crashs inattendus depuis début octobre 2026

Alerte critique

CVE-2026-111497 est inscrite au CISA KEV avec exploitation active confirmée. Un PoC public est disponible depuis fin octobre 2026. Toute infrastructure Node.js ou .NET exposée à des données Brotli non fiables doit être patchée en priorité absolue, avant toute autre maintenance planifiée.

Comment vérifier rapidement si mon serveur Node.js est vulnérable à CVE-2026-111497 ?

Exécutez node --version en production. Si la version est antérieure à 18.20.x, 20.18.x ou 22.9.x, le runtime est vulnérable. Pour l'exposition fonctionnelle : cherchez tout usage de fetch() consommant des réponses HTTP externes, de zlib.createBrotliDecompress(), ou de frameworks comme Express 5 traitant des requêtes avec Content-Encoding: br. Si l'un de ces patterns est présent avec des données source non entièrement maîtrisées, patchez immédiatement sans attendre la prochaine fenêtre de maintenance.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits de sécurité ciblés pour identifier et corriger vos vulnérabilités avant qu'elles ne soient exploitées.

Demander un audit