Le mercredi 21 octobre 2026, le même jour que PHP2Shell, Node.js a publié une mise à jour de sécurité importante. Elle corrige une faille grave dans Brotli, un composant qui compresse et décompresse des données. La faille a vite reçu le surnom de Node2Shell. Le Centre national de cybersécurité néerlandais (NCSC) a lui aussi émis une alerte. Dans cet article, nous expliquons ce qui se passe, pour qui c'est dangereux et ce que nous avons fait.

Vous utilisez une application Node.js chez Theory7 ? Vous n'avez rien à faire vous-même. Nous avons mis à jour toutes les versions de Node.js que vous pouvez choisir chez nous et redémarré les applications en cours d'exécution, afin qu'elles utilisent réellement la nouvelle version. Les sites web classiques sans Node.js, comme la plupart des sites WordPress, n'utilisent pas Node.js et n'étaient pas concernés par cette faille de Node.js.

Node2Shell en bref

  • Quoi : une erreur dans Brotli, la fonction de décompression intégrée à Node.js. Référence officielle : CVE-2026-111497.
  • Gravité : élevée. Sans mot de passe, un attaquant peut lire la mémoire, faire planter une application et, dans le pire des cas, exécuter son propre code.
  • Qui : les applications qui décompressent des données Brotli venant de l'extérieur. Y compris lorsque cela passe par une bibliothèque à laquelle vous ne pensez pas.
  • Correctif : Node.js 22.23.4, 24.22.1 et 26.12.1, publiés le 21 octobre 2026.
  • Chez Theory7 : toutes les versions de Node.js mises à jour et applications redémarrées le vendredi 23 octobre, dès que des correctifs existaient pour chaque version que vous pouvez choisir chez nous.

Qu'est-ce que Node.js, au juste ?

Un site web ou une application web a une partie visible et un côté serveur. La partie visible s'affiche dans votre navigateur. Le côté serveur tourne sur un serveur et fait le travail : récupérer des données, traiter des formulaires, envoyer des messages. Node.js est une technologie très répandue pour construire ce côté serveur, avec le même langage de programmation que celui qui fait fonctionner la partie visible des sites : JavaScript.

Vous rencontrez Node.js dans les applications web, les fonctions de chat, les liaisons entre systèmes et les sites web modernes. Chez nous, vous pouvez lancer une application Node.js depuis votre offre d'hébergement. Pour savoir comment cela fonctionne, consultez notre article du centre d'aide sur les applications Node.js. Si vous voulez savoir à quoi faire attention pour choisir un hébergeur, lisez choisir un hébergement Node.js.

Qu'est-ce que Brotli, et qu'est-ce qui a mal tourné ?

Brotli est une méthode pour réduire la taille des données, un peu comme un fichier zip. C'est Google qui l'a conçue. Les sites web l'utilisent beaucoup, car des fichiers plus petits circulent plus vite sur internet. Votre navigateur le demande presque toujours. Node.js intègre sa propre copie de Brotli, afin que les applications puissent compresser et décompresser des données.

La faille se trouvait dans la décompression. Comparez cela à quelqu'un qui déballe des cartons de déménagement d'après une liste du contenu. Un attaquant envoie un carton avec une liste qui ne correspond pas. Au lieu de s'arrêter en disant « cette liste est fausse », la personne qui déballe pense qu'il reste des affaires en route. Elle continue à tout ranger dans un petit tiroir, même quand celui-ci est plein depuis longtemps. Ce qui ne rentre pas atterrit dans les tiroirs voisins. C'est exactement là qu'un attaquant peut déposer des choses qui n'ont rien à y faire.

En termes techniques, cela s'appelle un dépassement de tampon (buffer overflow). Les conséquences peuvent être graves :

  • Lecture de la mémoire. Un attaquant peut obtenir des fragments de la mémoire de l'application. Il peut s'y trouver des mots de passe ou des clés.
  • Plantage d'une application. L'application s'arrête et vos visiteurs voient un message d'erreur.
  • Exécution de code. Dans le pire des cas, l'application fait ce que l'attaquant lui dit. C'est de là que vient le nom Node2Shell.

Aucun mot de passe n'est nécessaire. Il suffit à un attaquant de faire en sorte que votre application décompresse un petit paquet Brotli falsifié. Par exemple parce que votre application récupère une adresse web choisie par l'attaquant.

Quelle est la gravité de Node2Shell ?

Node.js lui-même qualifie la faille d'« élevée ». Dans son avis, le NCSC juge la probabilité d'exploitation moyenne et les dégâts possibles importants. Il recommande d'installer les mises à jour dès que possible.

Pourquoi la probabilité est « moyenne » : toutes les applications ne décompressent pas des données Brotli venant de l'extérieur. Et même quand c'est le cas, une attaque ne fonctionne pas à chaque fois. Mais des chercheurs ont déjà montré le 22 octobre que c'est possible en pratique. Selon la société de sécurité Aikido, du code a pu être exécuté sur une version standard de Node.js, non modifiée. Un tel exemple permet aux personnes malveillantes de transformer plus facilement la faille en véritable attaque.

Qu'avons-nous fait contre Node2Shell ?

Chez nous, vous choisissez vous-même la version de Node.js que votre application utilise, y compris des versions plus anciennes. De nombreuses versions de Node.js tournent donc côte à côte sur nos serveurs, et toutes devaient être corrigées. Les versions de Node.js de votre offre d'hébergement proviennent de CloudLinux, le système d'exploitation de nos serveurs. CloudLinux fournit aussi des correctifs pour les anciennes versions de Node.js pour lesquelles Node.js lui-même ne publie plus de mises à jour.

Chronologie de Node2Shell (heure des Pays-Bas)
QuandCe qui s'est passé
Mercredi 21 octobreNode.js publie la mise à jour pour les versions 22, 24 et 26.
Jeudi 22 octobreDes chercheurs présentent un premier exemple d'attaque fonctionnel. CloudLinux fournit des versions mises à jour de Node.js 22, 24 et 26.
Dans la nuit de jeudi à vendredi 23 octobreCloudLinux fournit aussi des correctifs pour les anciennes versions de Node.js.
Vendredi 23 octobre, en journéeLe NCSC publie son avis. Nous recensons les versions de Node.js et les applications qui tournent sur l'ensemble de nos serveurs.
Vendredi 23 octobre, en soiréeNous mettons à jour toutes les versions de Node.js : d'abord sur un serveur à titre de test, puis sur tous les autres. Les applications en cours d'exécution sont redémarrées et nous vérifions qu'elles fonctionnent ensuite exactement comme avant.

Ce redémarrage est important. Une application déjà en cours d'exécution garde l'ancienne version en mémoire, même quand la nouvelle est déjà installée. Ce n'est qu'après un redémarrage qu'elle est réellement protégée. Nous l'avons fait pour toutes les applications, et nous avons vérifié pour chacune qu'elle donne ensuite la même réponse qu'avant.

Quelques versions très anciennes de Node.js ne contiennent pas du tout le composant vulnérable. Pour une ancienne version, aucun correctif n'est sorti. Personne ne l'utilisait et nous l'avons supprimée.

La même faille existe-t-elle dans d'autres logiciels ?

Oui. Brotli est utilisé par énormément de logiciels, pas seulement par Node.js. Des chercheurs ont depuis trouvé la même faille dans d'autres programmes et bibliothèques qui utilisent Brotli, par exemple pour Python. Pour une partie d'entre eux, les mises à jour de leurs éditeurs ne sont pas encore prêtes.

Nous suivons cela chaque jour. Dès qu'une mise à jour existe pour un logiciel présent sur nos serveurs, nous l'installons de la même manière que pour Node.js : d'abord des tests, puis une mise à jour partout, avec vérification.

Devez-vous faire quelque chose après Node2Shell ?

Pas pour votre application Node.js chez nous. Voici tout de même quelques conseils :

  • Vous utilisez une ancienne version de Node.js, comme la 18 ou la 20 ? Nous les avons aussi mises à jour, mais le numéro de version reste alors le même. Ne vous inquiétez donc pas si node -v affiche le même numéro. Node.js ne publie plus de mises à jour pour ces versions. Passez donc à Node.js 22 ou 24 si votre application le permet.
  • Avez-vous lancé vous-même un processus Node.js, en dehors du menu Node.js de votre offre d'hébergement ? Redémarrez-le alors, afin qu'il utilise la nouvelle version.
  • Tenez votre propre code et vos packages à jour. Nous nous occupons de Node.js sur le serveur. Les packages npm de votre application, c'est à vous de les mettre à jour. Si vous utilisez Python avec les packages Brotli ou brotlicffi, ou si vous faites tourner Bun, mettez-les aussi à jour dès qu'une mise à jour existe.
  • Avez-vous ailleurs votre propre serveur ou VPS avec Node.js ? Mettez alors Node.js à jour vers la version 22.23.4, 24.22.1 ou 26.12.1, ou plus récente, et redémarrez vos applications.

Vous trouverez toujours l'état actuel des incidents et de la maintenance sur status.theory7.net. Si vous avez un doute sur votre propre application, ouvrez un ticket en indiquant votre nom de domaine. Nous la vérifierons volontiers pour vous.

Questions fréquentes

Qu'est-ce que Node2Shell ?

Node2Shell est le surnom d'une faille grave dans Brotli, la fonction de décompression intégrée à Node.js (CVE-2026-111497). Avec des données Brotli falsifiées, un attaquant peut, sans mot de passe, lire la mémoire, faire planter une application et, dans le pire des cas, exécuter du code. Node.js l'a corrigée dans les versions 22.23.4, 24.22.1 et 26.12.1.

Mon site web chez Theory7 était-il vulnérable ?

La faille de Node.js ne touchait que les applications Node.js. Les sites web classiques, comme la plupart des sites WordPress, n'utilisent pas Node.js. Nous avons mis à jour, le vendredi 23 octobre, toutes les versions de Node.js que vous pouvez choisir chez nous, et nous avons redémarré les applications en cours d'exécution. La même faille Brotli existe aussi dans d'autres logiciels. Nous les mettons à jour dès que leurs éditeurs publient un correctif.

Dois-je faire quelque chose moi-même ?

Pas pour Node.js lui-même, nous l'avons mis à jour. Si vous avez lancé vous-même un processus Node.js en dehors du menu Node.js, redémarrez-le. Si vous utilisez Node.js 18 ou 20, nous vous conseillons de passer à la version 22 ou 24.

Pourquoi le numéro de version de mon Node.js n'a-t-il pas changé ?

Pour les versions plus anciennes comme Node.js 18 et 20, CloudLinux applique le correctif sans changer le numéro de version. La mise à jour y est donc bien incluse. Pour Node.js 22, 24 et 26, vous voyez bien le nouveau numéro : 22.23.4, 24.22.1 ou 26.12.1.

Node2Shell est-il la même chose que PHP2Shell ?

Non. Elles ont fait l'actualité la même semaine et portent un nom semblable, mais ce sont deux failles différentes. PHP2Shell se trouvait dans PHP, Node2Shell se trouve dans Brotli, dans Node.js. Pour en savoir plus sur PHP2Shell, lisez PHP2Shell expliqué.

Sources