
Boîte à outils d'avis et de preuve de concept pour CVE-2026-111497 (Node2Shell), un débordement de tas Brotli dans Node.js, avec des scripts de déclenchement, un vérificateur de version et des recommandations de remédiation.
Node2Shell
Avis de sécurité complet, analyse technique et guide de remédiation pour CVE-2026-111497
Divulguée en octobre 2026, Node2Shell (CVE-2026-111497) est une vulnérabilité de sécurité critique affectant le composant natif de décompression Brotli intégré directement dans le binaire du runtime Node.js.
La faille permet à des attaquants distants d'exécuter du code arbitraire ou de faire planter l'application en soumettant des flux d'octets compressés Brotli spécialement conçus et malformés à toute application Node.js qui traite des entrées compressées (par exemple, les analyseurs de corps de requêtes HTTP, les appels natifs fetch() ou les flux WebSocket).
⚠️ REMARQUE CRITIQUE : Étant donné que le code vulnérable réside dans
deps/brotli, compilé directement dans l'exécutable Node.js, la mise à jour des dépendancesnpmde l'espace utilisateur n'atténuera pas cette vulnérabilité. Le runtime binaire Node.js doit être mis à jour.
deps/brotli).Content-Encoding: br).fetch() natif traitant des réponses automatisées provenant de points de terminaison tiers non fiables servant du contenu compressé.zlib.createBrotliDecompress().| Ligne de version Node.js | Statut | Version corrigée | Action requise |
|---|---|---|---|
| Node.js 26.x | ⚠️ Vulnérable | >= 26.12.1 | Mettre à niveau immédiatement |
| Node.js 24.x | ⚠️ Vulnérable | >= 24.22.1 | Mettre à niveau immédiatement |
| Node.js 22.x (LTS) | ⚠️ Vulnérable | >= 22.23.4 | Mettre à niveau immédiatement |
| Node.js 20.x & versions antérieures | ❌ EOL | Aucune | Migrer immédiatement vers une LTS prise en charge |
🚨 Alerte EOL : Node.js 20 a atteint sa fin de vie (EOL) en avril 2026. Les rétroportages de sécurité officiels ne sont pas disponibles pour les versions EOL.
$ node node2shell-check.js
=== Node2Shell (CVE-2026-111497) Safe Checker ===
Local version + constant probe only. No network, no payloads.
Current Node.js version : v24.22.1
Brotli constant present : yes (-17) → patched decoder
───────────────────────────────────────────────────────
Verdict: PATCHED
You are running a fixed release of the 24.x line.
Additional notes:
• The constant check is the most reliable signal when Node.js ships
its own (statically linked) Brotli. On some Linux distros Node may
use the system libbrotli – then you must also check the system package.
• Updating npm packages alone does NOT fix this issue.
• After upgrading, restart every Node.js process / container.
• Official fixed versions: 22.23.4 · 24.22.1 · 26.12.1
$ node node2shell-check.js
=== Node2Shell (CVE-2026-111497) Safe Checker ===
Local version + constant probe only. No network, no payloads.
Current Node.js version : v24.22.0
Brotli constant present : no / missing → likely vulnerable decoder
───────────────────────────────────────────────────────
Verdict: VULNERABLE
Upgrade to Node.js 24.22.1 or later in the 24.x line.
Additional notes:
• The constant check is the most reliable signal when Node.js ships
its own (statically linked) Brotli. On some Linux distros Node may
use the system libbrotli – then you must also check the system package.
• Updating npm packages alone does NOT fix this issue.
• After upgrading, restart every Node.js process / container.
• Official fixed versions: 22.23.4 · 24.22.1 · 26.12.1
Current Node.js version : v20.18.0
Brotli constant present : no / missing → likely vulnerable decoder
Verdict: VULNERABLE (EOL / UNSUPPORTED)
This release line is end-of-life or never received the security fix.
Migrate to a supported LTS line (22.x, 24.x or 26.x) and use a patched version.
Vous pouvez également exécuter cette commande en une ligne :
node -p "require('zlib').constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH ?? 'missing'"
-17 → corrigémissing → vulnérableC'est la même vérification que celle utilisée par le script.
# Python dependencies
pip install requests brotli
# Node server (webhook injection + eval paths)
npm install
node server-stock.js # port 3000