Faille critique dans la sandbox vm2 permettant aux attaquants d’exécuter du code sur les hôtes

Faille critique dans la sandbox vm2 permettant aux attaquants d'exécuter du code sur les hôtes

Une faille critique affecte la bibliothèque vm2, outil populaire de sandboxing pour Node.js, permettant aux attaquants de s’échapper de l’environnement isolé et d’exécuter du code arbitraire sur le système hôte.

Identifiée sous le numéro CVE-2026-26956, cette vulnérabilité touche la version 3.10.4 de vm2, et potentiellement les versions antérieures. Un code d’exploitation proof-of-concept circule déjà publiquement.

Le développeur principal précise que le problème concerne les déploiements sous Node.js 25 (testé sur 25.6.1) activant la gestion des exceptions WebAssembly et le support JSTag.

vm2 sert à exécuter du code JavaScript non fiable dans un espace confiné, bloquant l’accès aux API sensibles de Node.js comme process ou le système de fichiers. Elle équipe de nombreuses plateformes de codage en ligne, outils d’automatisation et applications SaaS.

Avec plus de 1,3 million de téléchargements hebdomadaires sur npm, le gestionnaire de paquets par défaut pour Node.js, son adoption massive expose un grand nombre de projets.

Origine de la faille

La vulnérabilité provient d’une gestion défaillante des exceptions transitant entre l’environnement sandboxé et l’hôte. vm2 s’appuie habituellement sur des protections JavaScript pour contrer les erreurs hôtes et encapsuler les objets croisant les contextes via des Proxies.

La prise en charge des exceptions WebAssembly intervient toutefois à un niveau inférieur dans le moteur V8 de Google, contournant ces défenses JavaScript. Un TypeError déclenché par une conversion Symbol-vers-chaîne provoque la fuite d’un objet d’erreur hôte non nettoyé dans la sandbox.

Issu de l’environnement hôte, cet objet permet d’exploiter sa chaîne de constructeurs pour accéder aux mécanismes internes de Node.js, menant à une exécution de commandes arbitraires sur l’hôte.

Le bulletin de sécurité inclut un PoC démontrant une exécution de code à distance sur la machine hôte.

Les utilisateurs doivent passer à la version 3.10.5 ou supérieure de vm2 (dernière : 3.11.2) pour corriger CVE-2026-26956.

Début d’année, une autre faille d’évasion de sandbox critique, CVE-2026-22709, avait frappé vm2. Des vulnérabilités antérieures comme CVE-2023-30547, CVE-2023-29017 et CVE-2022-36067 soulignent les difficultés à isoler du code non fiable en JavaScript.