CVE-2026-111497 : Flaw critique Node2Shell dans le décodeur Brotli de Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Node2Shell est une vulnérabilité critique (CVE-2026-111497) affectant le décodeur Brotli inclus avec Node.js et causée par une écriture hors limites. Les attaquants peuvent exploiter la faille en fournissant des flux compressés malformés aux services qui traitent les données Brotli, ce qui peut potentiellement entraîner un déni de service, une divulgation de mémoire ou une exécution de code à distance. La vulnérabilité pose un risque particulier pour les services utilisant Express 5 ou un middleware qui effectue automatiquement la décompression Brotli.
Enquête
L’équipe de recherche sur les menaces de Sysdig a analysé la vulnérabilité et a signalé qu’un PoC public a émergé quelques heures après la publication du correctif. Des recherches menées par Imperva et Vercel ont démontré que l’exécution de code est possible sur des architectures spécifiques, y compris Linux arm64. L’enquête a montré que l’exploitabilité dépend de la capacité d’une application ou de ses bibliothèques, telles que body-parser, à traiter des flux Brotli contrôlés par des attaquants.
Atténuation
La principale mesure d’atténuation consiste à mettre à jour Node.js vers les versions 22.23.4, 24.22.1 ou 26.12.1, et à mettre à jour Bun vers la version 1.4.4 ou ultérieure. Les organisations devraient également désactiver la décompression des requêtes lorsque cela est pratique, y compris en configurant inflate: false dans body-parser. Déployer des règles WAF pour rejeter les requêtes Content-Encoding: br non approuvées et exécuter les services sous des comptes non privilégiés offre des couches de défense supplémentaires.
Réponse
Si une chaîne d’exploitation potentielle est détectée, telle qu’un crash de processus Node.js suivi d’une exécution de programme inattendue, les équipes de sécurité devraient immédiatement isoler la charge de travail affectée. Surveillez les activités post-exploitation, y compris les shells interactifs, les téléchargements de logiciels malveillants non autorisés, le cryptominage ou le vol de secrets et de jetons cloud. La correction de tous les services vulnérables accessibles devrait rester la priorité absolue.
Flux d’attaque
Nous mettons encore à jour cette partie.
Détections
Processus enfants NodeJS suspects [Windows] (via cmdline)
Shell suspect via serveur Web [Linux] (via process_creation)
Processus enfants NodeJS suspects [Linux] (via cmdline)
Détection d’un crash de processus Node.js suivi par une exécution de programme en place – Exploitation Node2Shell [Création de processus Linux]
Exécution de simulation
-
Narration de l’attaque & Commandes : L’adversaire cible une application Web exécutant Node.js. Il envoie une charge utile compressée en Brotli malveillante qui déclenche une erreur de corruption de mémoire, provoquant le crash du
processus node. Immédiatement après le crash, l’attaquant utilise le flux d’exécution détourné pour lancer un/bin/bashshell pour établir la persistance et commencer la reconnaissance locale. Cette séquence d’unprocessus nodeévénement suivi par/bin/bashl’exécution est conçue pour correspondre à lalogique de crash sélectionandlogique d'exécution suspecte sélectionde la règle de détection. -
Script de test de régression :
#!/bin/bash # Simulation du schéma d'exploitation de type Node2Shell echo "[+] Démarrage de la simulation Node2Shell..." # 1. Simuler un processus Node.js qui 'crashe' ou est arrêté brusquement # Dans un scénario réel, c'est un crash. Ici nous simulons la télémétrie # d'un processus node étant invoqué/traité. node -e "process.exit(1)" echo "[+] Processus Node.js 'crashé' (Code de sortie 1)." # 2. Simuler l'exécution immédiate d'un shell suspect # Cela imite la charge utile déclenchant le shell après le crash. /bin/bash -c "echo 'Exploitation réussie : Shell lancé'" echo "[+] Simulation terminée. Vérifiez SIEM pour la détection." -
Commandes de nettoyage :
# Aucun fichier persistant n'a été créé par cette simulation. # Assurez-vous simplement qu'aucun processus bash malveillant ne s'exécute. pkill -f "Exploitation réussie"