vm2 - CVE-2026-26956
Date de publication :
Il s'agit d'une vulnérabilité d'échappement de sandbox dans la bibliothèque vm2 pour Node.js, spécifique aux environnements Node.js v25 avec support des exceptions WebAssembly et de WebAssembly.JSTag.
vm2 est une bibliothèque open source pour Node.js, disponible sur npm, conçue pour exécuter du code JavaScript non fiable dans un environnement sandbox isolé. Elle repose sur la transformation de code source et des objets Proxy JavaScript pour intercepter les accès aux ressources du système hôte. La bibliothèque est officiellement dépréciée depuis 2023, mais toujours activement utilisée avec plus de 1,3 million de téléchargements hebdomadaires.
L'instruction WASM try_table intercepte les exceptions JavaScript au niveau C++ du moteur V8, en dessous des filtres JavaScript de vm2. Un objet TypeError hôte non assaini peut ainsi atteindre le contexte attaquant via un retour de valeur WASM. La chaîne de prototypes de cet objet permet d'accéder au constructeur Function hôte, puis à l'objet process.
Elle permet à un attaquant dont le code est exécuté dans VM.run() d'échapper au sandbox et d'exécuter des commandes arbitraires sur le système hôte.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Oui
• Exécution de code arbitraire (à distance)
• Contournement de la politique de sécurité
Exploitation
CWE-693 : Protection Mechanism Failure
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Faible
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui
Preuve de concept
Une preuve de concept est disponible en sources ouvertes.
Systèmes ou composants affectés
• vm2 version 3.10.4 (en combinaison avec Node.js v25 ou supérieur avec support WebAssembly exception handling)
• Versions antérieures (bibliothèque dépréciée, sans correctif sur les branches EOL)