veilletech.fr
24 oct. Feed du jour
#01 SÉCURITÉ Faille

Node2Shell : le bug Brotli donne bien un RCE

Une image Docker garde son Node jusqu'à sa reconstruction.

Imperva a fait exécuter du code à l'image officielle Node.js 24.22.0 (Linux arm64) en lui envoyant des données Brotli forgées, par la faille CVE-2026-111497 que la fiche du 22 octobre rangeait parmi les failles hautes. Les services qui décodent du Brotli non fiable (fetch, parseurs d'Express 5) sont exposés ; aucune exploitation dans la nature n'était signalée le 22 octobre.

3 min de lectureintermédiairevidéo 1:16
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Comment le bug fonctionne
  3. Qui est exposé
  4. Ce qu'il ne faut pas en conclure
  5. Comment s'y prendre
  6. À retenir

Ce qui se passe

La fiche du 22 octobre rangeait CVE-2026-111497, dans le décodeur Brotli embarqué par Node.js, parmi les cinq failles hautes de la publication de sécurité du 21 octobre, sans exploitation décrite. Les chercheurs d'Imperva viennent de montrer qu'elle mène à une exécution de code. Leur démonstration, baptisée Node2Shell, a lancé du code sur l'image officielle Node.js 24.22.0 pour Linux arm64, sans débogueur ni build modifié, en envoyant des données Brotli forgées au décodeur.

Ce n'est pas la première démonstration publique, mais la précédente ne fonctionnait que sur une version de test volontairement affaiblie. Sur une version standard, son auteur n'obtenait qu'un plantage et une lecture limitée de la mémoire du processus.

Comment le bug fonctionne

Un flux Brotli annonce, au fil du décodage, les types de blocs qu'il va utiliser. Les données d'Imperva atteignent un changement de bloc que la structure du flux rend impossible. Le décodeur vulnérable prend ce cas pour une demande de données supplémentaires et continue dans un état invalide. Avec un détecteur d'erreurs mémoire, Imperva constate alors une écriture au-delà du tampon prévu : c'est l'écriture hors limites de la CVE.

Node.js a repris un correctif du projet amont google/brotli : le décodeur s'arrête désormais sur une erreur de format à cet endroit. Sur la version corrigée, 24.22.1, les mêmes données sont rejetées et aucun code ne s'exécute.

Qui est exposé

Le décodeur est celui que Node embarque, donc les lignes 22.x, 24.x et 26.x sont concernées, pas seulement la version testée. Il faut qu'une donnée Brotli non fiable l'atteigne, par deux chemins :

Imperva a reproduit l'exécution de code par les deux chemins sur Express 5.0.0 à 5.3.0 et body-parser 2.0.0 à 2.3.0, versions épinglées, sans tester chaque version intermédiaire.

Ce qu'il ne faut pas en conclure

Comment s'y prendre

  1. Installer 24.22.1, 22.23.4 ou 26.12.1, publiées le 21 octobre 2026.
  2. Reconstruire les images Docker et tout artefact qui embarque un binaire Node : un inventaire de paquets ne le voit pas.
  3. Quitter les lignes en fin de vie : la 20.x et les précédentes ne recevront pas de correctif.
  4. Compter sur la mise à jour, pas sur un contournement : l'avis n'en liste aucun. Imperva conseille de limiter le trafic Brotli non fiable sur les chemins exposés quand c'est possible, et précise que seule la mise à jour supprime la faille. Vercel a ajouté le 21 octobre des règles qui bloquent l'attaque dans les requêtes entrantes ; elles ne couvrent pas les réponses Brotli que l'application va chercher ailleurs.

Source : The Hacker News, 23 octobre 2026. Source en anglais. Compléments cités par l'article : Imperva, avis Node.js, bulletin Vercel.