Aller au contenu
DecodeVoxDecodeVox
CyberFlash· 27 octobre 2026

Node2Shell : huit octets de trop dans le décodeur

Le décodeur Brotli, embarqué dans Node.js, .NET, PowerShell et Python, écrit au-delà de son tampon quand il lit un flux compressé piégé. Les correctifs sont sortis en urgence, sans aucune exploitation observée.

Actualité du 27 octobre 2026 · 1 min 38 · 6 sources · 12 affirmations sourcées

En 30 secondes

L'essentiel

  • Un flux compressé piégé suffit : le décodeur écrit hors de son tampon de huit octets et corrompt la mémoire du processus.
  • La faille est dans une bibliothèque recopiée partout : Node.js, .NET, PowerShell, Python, Bun, Envoy, Istio.
  • Patcher ne suffit pas sans redémarrer les processus et reconstruire les images de conteneurs.

Les faits

Ce qui est établi, et ce qui ne l'est pas

Chaque affirmation de l'épisode, son statut et ses sources.

  • ÉtabliÉcriture hors limites dans le décodeur Brotli de Google, versions 1.0.3 à 1.2.0, corrigée en 1.0.10, 1.1.1 et 1.2.1 ; score CVSS 4.0 de 9,2, critique[1]
  • ÉtabliUn attaquant distant non authentifié peut corrompre la mémoire du processus, en divulguer le contenu, provoquer un arrêt ou exécuter du code, avec un flux Brotli piégé[1]
  • ÉtabliDans Node.js, un changement de bloc invalide est traité comme un besoin d'entrée supplémentaire : le décodeur empile les octets dans un tampon interne de huit octets et écrit hors limites[2]
  • ÉtabliNode.js corrige le 21 octobre 2026 en 22.23.4, 24.22.1 et 26.12.1 ; lignes 22, 24 et 26 affectées[2]
  • RapportéSelon OpenAI, la correction était dans le code source de Brotli depuis février, sans nouvelle version publiée avant octobre[5]
  • ÉtabliMicrosoft publie des correctifs le 25 octobre 2026 pour .NET, Visual Studio et PowerShell ; CVSS 3.1 de 8,1, exploitation jugée plus probable, aucune exploitation observée[3][5]
  • ÉtabliImperva démontre l'exécution de code sur l'image officielle Node.js 24.22.0 pour Linux arm64, par une réponse HTTP récupérée ou un corps de requête Express 5 et body-parser 2 ; les mêmes flux sont rejetés en 24.22.1, et le succès n'est pas systématique[4]
  • ÉtabliAucune exploitation malveillante dans la nature n'a été rapportée ; un proof of concept public n'aboutit que sur une compilation volontairement affaiblie[5][6][3]
  • ÉtabliLa faille touche aussi les paquets Python Brotli 1.2.1 et brotlicffi 1.2.1.0, ainsi que Bun, Envoy et Istio ; certains projets restent listés non corrigés, liste déclarée incomplète[5][6]
  • ÉtabliBrotli n'est pas activé par défaut dans .NET : il faut activer explicitement la décompression des requêtes ou des réponses, ou appeler les API[3]
  • ÉtabliAprès mise à jour, redémarrer les processus et reconstruire les images de conteneurs ; mettre à jour la bibliothèque système ne couvre pas les copies embarquées, et bloquer le Brotli entrant ne protège pas la voie de la réponse HTTP[6][5][3]
  • InconnuNombre de serveurs encore vulnérables inconnu, fiabilité de l'exploit variable selon les configurations, liste exacte des projets non corrigés inconnue[4][5][3]
Transcription

Un serveur va chercher une page, et la réponse arrive compressée. Il la décompresse dans un tampon interne de huit octets, qui déborde. Personne n'a rien installé : l'attaque arrive à distance, portée par les données.

CyberFlash, c'est l'émission cybersécurité de DecodeVox. Ici, on ne s'arrête pas aux gros titres : on décrypte les attaques, on révèle leurs mécanismes et on explique ce qu'elles changent concrètement.

Comment un fichier compressé peut-il exécuter du code ?

Le décodeur Brotli est une brique de code C, embarquée dans Node.js comme dans beaucoup d'autres logiciels. Une application qui récupère une réponse compressée sur Internet, ou qui accepte une requête compressée, lui donne des données qu'elle ne contrôle pas. Le décodeur lit un changement de bloc impossible, le prend pour une demande d'entrée, et écrit au-delà de son tampon de huit octets.

Ce qui est établi : le correctif est publié depuis le 21 octobre, et aucune exploitation réelle n'a été observée. Ce qu'on ignore : combien de serveurs restent vulnérables, si l'exploit tient sur toutes les configurations, et la liste exacte des projets encore à corriger.

Trois réflexes. Un : corriger aussi les copies embarquées, dans Node.js, .NET ou Python, pas seulement la bibliothèque du système. Deux : redémarrer les processus et reconstruire les conteneurs, sinon le code vulnérable tourne encore. Trois : filtrer le Brotli entrant ne suffit pas, une réponse compressée piégée passe aussi.

La faille n'était pas dans l'application, mais dans la brique qu'elle utilise tous les jours. Et cette brique, presque personne ne la regarde.

Pour aller plus loin, retrouvez l'édition complète du jour sur notre plateforme en ligne, le lien en description. Abonnez-vous à DecodeVox pour ne rien manquer de nos prochains décryptages. Et dites-nous en commentaire : vous saviez que vos serveurs décompressent des données venues d'ailleurs ?