CVE-2026-100721
vm2 avant 3.12.2 Contournement d'autorisation via un résolveur personnalisé
- Publié
- 27 sept. 2026
- Mise à jour
- 27 sept. 2026
- Attribution de CNA
- VulnCheck
- Preuve observée
- 3 oct. 2026
CVSS primaire
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XRésumé
vm2 avant 3.12.2 contient un contournement d'autorisation dans le résolveur de modules externes de NodeVM. Lorsqu'un intégrateur configure `require.external` avec un résolveur personnalisé (et `context: 'host'`), `LegacyResolver.customResolve` dans lib/resolver-compat.js enregistre le répertoire du module résolu dans `this.externals` sous la forme `new RegExp('^' + escapeRegExp(resolvedPath))`, sans exiger de séparateur de chemin ni de limite de fin de chaîne. Du code invité non fiable peut donc exiger le module autorisé (par exemple `foo`) puis exiger le chemin absolu d'un module frère non autorisé dont le chemin partage simplement le préfixe résolu (par exemple `.../node_modules/foo2/index.js`) ; le module frère passe `isPathAllowedForModule` et est chargé via `hostRequire`, de sorte que son code de premier niveau s'exécute dans le processus hôte avant que les exports ne soient encapsulés avec `vm.readonly`, ce qui entraîne une évasion de sandbox et une exécution de code arbitraire dans le contexte hôte.
Sources
PoC Python pour CVE-2026-100721 : détecte et exploite le contournement de la liste d'autorisation externe de NodeVM dans vm2 <3.12.2, permettant une évasion de sandbox et une RCE sur l'hôte via un lab local ou des cibles HTTP massives.
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.