Contexte et portée
Le module isolated‑vm, largement utilisé pour exécuter du code JavaScript dans un environnement sandboxé, a été identifié comme vulnérable aux versions antérieures à 7.0.1 et 6.2.0. Cette bibliothèque alimente des plateformes d’automatisation comme n8n, Activepieces, Mastra, Budibase, Directus et Rocket.Chat. La faille repose sur une confusion de type dans la gestion du ExternalCopy et de son paramètre transferList, permettant à un attaquant de contourner les contrôles d’isolation.
Mécanisme de la vulnérabilité
Le cœur du problème se situe dans un getter qui renvoie des valeurs différentes selon le parcours de validation. Lors du premier passage, le getter retourne un pointeur valide ; lors du second, il renvoie une valeur falsifiée. Cette incohérence autorise le code malveillant à injecter un pointeur invalide dans un cast non vérifié, créant ainsi une type confusion. Le ExternalCopy construit alors un objet avec un transferList contenant ce pointeur, ce qui conduit à un SIGSEGV contrôlé sur l’hôte.
Exploitation et impact
En exploitant le SIGSEGV, l’attaquant peut récupérer la base d’ASLR du processus hôte, forger une table de fonctions virtuelles (vtable) et rediriger un appel indirect vers une fonction libc arbitraire. Le scénario complet décrit par les chercheurs montre la capacité à exécuter du code natif avec les privilèges du processus hôte, brisant ainsi l’isolation promise par isolated‑vm. Les produits cités, qui intègrent la bibliothèque sans validation supplémentaire, deviennent alors des vecteurs d’escalade de privilèges à grande échelle.
Recommandations et mitigation
Les développeurs doivent immédiatement mettre à jour isolated‑vm vers la version 7.0.1 ou supérieure, ou au moins 6.2.1 si la branche 6 est maintenue. Au-delà de la mise à jour, il est conseillé d’auditer chaque appel à ExternalCopy et de restreindre les objets passés dans transferList aux types strictement nécessaires. L’ajout de vérifications explicites du type avant tout cast réduit le risque de confusion. Enfin, les plateformes utilisant la bibliothèque devraient surveiller les journaux d’erreurs pour détecter d’éventuels SIGSEGV inhabituels, indicateurs précoces d’une tentative d’exploitation.