## En bref

- CVE-2026-111497 (CVSS 9.2) : écriture hors limites (OOB write) dans le décodeur Brotli intégré à Node.js, permettant une exécution de code à distance (RCE).

- Systèmes affectés : Node.js avant 22.23.4 / 24.22.1 / 26.12.1, et par extension Bun, Envoy, Istio, .NET, Python (brotli package) et Mitel OpenScape SBC.

- Action urgente : mettre à jour Node.js avant le 10 novembre 2026 (deadline CISA KEV pour les agences fédérales américaines).

## Les faits

CVE-2026-111497, surnommée Node2Shell ou HTTP2Shell par les chercheurs en sécurité, est une vulnérabilité critique d'exécution de code à distance affectant le décodeur Brotli intégré à l'environnement d'exécution Node.js. Évaluée à 9.2 selon le barème CVSS 4.0 (score établi par Google pour la bibliothèque Brotli sous-jacente), la faille a été corrigée par Node.js le 21 octobre 2026 dans des versions de maintenance urgentes. La CISA (Cybersecurity and Infrastructure Security Agency) l'a ajoutée à son catalogue des vulnérabilités exploitées connues (KEV) le 27 octobre 2026, avec une deadline de remédiation fixée au 10 novembre 2026 pour toutes les agences civiles fédérales américaines — soit dans deux jours au moment de la publication de cet article.

La vulnérabilité est une écriture hors limites (out-of-bounds write, CWE-787) dans le décodeur Brotli que Node.js embarque nativement via son module node:zlib. Brotli est un algorithme de compression moderne développé par Google, largement utilisé pour compresser le contenu HTTP/2 et HTTP/3. Lorsqu'une application Node.js décompresse des données Brotli malformées ou spécialement construites par un attaquant, le décodeur peut écrire des données au-delà des limites du tampon alloué, corrompant ainsi la mémoire du processus. Cette corruption peut aboutir à un crash de l'application, à une divulgation de mémoire de processus, ou — dans les conditions d'exploitation les plus favorables — à une exécution de code arbitraire avec les privilèges du processus Node.js.

Un élément particulièrement alarmant de cette vulnérabilité est son caractère transparent du point de vue des développeurs d'applications. Comme le soulignent les analyses techniques publiées par Classmethod et Rapid7, le module node:zlib peut décompresser automatiquement le contenu Brotli reçu via HTTP, même si l'application ne contient aucun appel explicite à une fonction de décompression. Les applications qui reçoivent des requêtes HTTP/2 avec Content-Encoding: br peuvent donc être vulnérables sans que leurs développeurs en aient conscience, ce qui élargit considérablement la surface d'attaque réelle au-delà des seules applications qui traitent explicitement des archives Brotli.

L'attaquant doit pouvoir acheminer des données Brotli malformées vers une application cible. Dans un contexte HTTP, cela signifie soit envoyer une requête HTTP avec un corps compressé en Brotli malveillant (si le serveur accepte des requêtes compressées), soit, pour un client Node.js, forcer ce client à décompresser une réponse malveillante provenant d'un serveur hostile ou compromis (attaque man-in-the-middle ou supply chain). Les déploiements Node.js exposés directement sur Internet, les proxys inverses écrits en Node.js, et les pipelines de traitement de données téléchargées depuis Internet sont les plus exposés.

La portée de CVE-2026-111497 dépasse Node.js. La bibliothèque Brotli de Google (google/brotli), utilisée par de nombreux runtimes et frameworks, est à l'origine de la faille. Trend Micro a publié une alerte de sécurité sous le nom HTTP2Shell listant les environnements affectés : Bun (runtime JavaScript), Envoy Proxy (plan de données Kubernetes), Istio (service mesh), .NET (via le package NuGet System.IO.Compression.Brotli), et divers packages Python intégrant le décodeur Brotli. L'ANSSI a par ailleurs relayé une alerte du [CERT-FR](/glossaire/cert-fr) signalant l'impact spécifique sur Mitel OpenScape SBC (Session Border Controller), les versions antérieures à 11R3.4.5 étant vulnérables — avec disponibilité de correctif non confirmée au moment de la publication de l'avis CERT-FR du 6 novembre 2026.

L'exploitation concrète de CVE-2026-111497 a été documentée. La CISA a classifié cette vulnérabilité dans le catalogue KEV, confirmant ainsi l'existence d'exploitations dans la nature. L'EPSS (Exploit Prediction Scoring System) attribue à cette faille un score extrêmement élevé, reflétant la probabilité quasi certaine d'exploitation active. Des preuves de concept ont circulé rapidement après la divulgation le 21 octobre 2026. Des analyses de Qualys et Rescana documentent des méthodes pour identifier les instances Node.js vulnérables à l'échelle d'un réseau avant que les équipes de défense aient eu le temps de patcher.

Les versions corrigées de Node.js sont les suivantes : 22.23.4 (LTS Hydrogen), 24.22.1 (LTS Jod), et 26.12.1 (Current). Ces versions ont été publiées en urgence le 21 octobre 2026, soit six jours avant l'ajout au KEV CISA. Les versions 20.x et antérieures de Node.js sont en fin de vie (EOL) et ne recevront pas de correctif officiel — les organisations fonctionnant encore sur ces branches doivent migrer vers une branche LTS supportée. Pour Envoy et Istio, des versions corrigées ont été publiées par leurs projets respectifs et par les distributions cloud (Amazon EKS, Google GKE, Azure AKS) sous forme de mises à jour de composants.

La deadline du 10 novembre 2026 imposée par la CISA aux agences fédérales américaines constitue un signal fort pour l'ensemble de l'écosystème. Bien que contraignante uniquement pour le secteur public américain, cette échéance reflète la gravité de la menace et la recommandation implicite d'agir immédiatement pour toute organisation utilisant Node.js, Bun, Envoy, Istio ou tout autre runtime embarquant la bibliothèque Brotli de Google. La France, au travers de l'ANSSI et du CERT-FR, a également émis des alertes en direction des opérateurs d'importance vitale (OIV) et des entreprises utilisatrices de systèmes de téléphonie Mitel.

## Impact et exposition

L'exposition à CVE-2026-111497 est massive compte tenu de l'omniprésence de Node.js dans les architectures modernes. Les applications web backend (APIs REST, GraphQL), les microservices, les proxys HTTP, les workers de traitement de données et les outils en ligne de commande basés sur Node.js sont potentiellement affectés. La décompression automatique Brotli rend l'exposition indépendante du code applicatif : c'est Node.js lui-même qui est vulnérable, pas uniquement les applications qui décompressent explicitement.

Pour Envoy et Istio — déployés massivement dans les architectures Kubernetes et les service meshes [cloud-native](/glossaire/cloud-native) — l'impact potentiel est critique : un attaquant en mesure d'injecter du contenu Brotli malformé dans le trafic réseau intercept par un proxy Envoy pourrait compromettre l'ensemble du plan de données d'un cluster Kubernetes. Les déploiements multi-tenant ([SaaS](/glossaire/saas), cloud) où un seul Envoy gère le trafic de nombreux clients sont particulièrement concernés.

Les systèmes de téléphonie d'entreprise Mitel OpenScape SBC, utilisés dans de nombreuses organisations françaises pour la gestion des appels VoIP, constituent une cible spécifique identifiée par l'ANSSI. La compromission d'un SBC peut permettre l'interception des communications, l'injection d'appels frauduleux et l'accès aux équipements téléphoniques du réseau interne.

## Recommandations immédiates

- Mettre à jour Node.js vers 22.23.4, 24.22.1 ou 26.12.1 — Node.js Security Release October 2026 (priorité absolue, deadline CISA KEV le 10 novembre 2026)

- Inventorier tous les runtimes Brotli dans l'infrastructure : Bun, Envoy, Istio, .NET, Python (packages brotli, Brotli) et Mitel OpenScape SBC (patcher vers 11R3.4.5 si disponible)

- Si mise à jour impossible : désactiver la décompression Brotli au niveau du reverse proxy frontal (Nginx : proxy_set_header Accept-Encoding "gzip, deflate";)

- Pour Envoy/Istio : appliquer les mises à jour de sécurité disponibles auprès des distributions respectives

- Scanner l'infrastructure avec l'outil Qualys QID 379892 ou l'agent Rescana pour identifier les instances Node.js vulnérables

- Vérifier et mettre à jour les images Docker de base utilisant Node.js dans vos Dockerfile et pipelines CI/CD

#### ⚠️ Deadline fédérale : 10 novembre 2026

La CISA impose aux agences fédérales américaines de patcher CVE-2026-111497 avant le 10 novembre 2026. L'exploitation active est confirmée dans le catalogue KEV. Toute organisation utilisant Node.js, Envoy, Bun, Istio ou .NET doit traiter ce patch en urgence — la décompression Brotli automatique signifie que des applications apparemment non concernées peuvent être vulnérables.

### Comment vérifier si mon déploiement Node.js est vulnérable ?

Exécutez node --version pour connaître votre version. Toute version dans les plages suivantes est vulnérable : v22.x avant 22.23.4, v24.x avant 24.22.1, v26.x avant 26.12.1, et toutes les versions v20.x et antérieures (EOL). Pour identifier les processus Node.js en cours : ps aux | grep node. Dans les environnements Docker/Kubernetes, inspectez le tag des images base utilisées. Pour vérifier si Brotli est activé : node -e "const z=require('zlib'); console.log(typeof z.createBrotliDecompress);" — si la réponse est "function", votre Node.js embarque le décodeur Brotli.

### Votre infrastructure Node.js est-elle à jour ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités sur les environnements Node.js, Kubernetes et cloud-native.
[Demander un audit](#)