CVE-2026-100721
vm2 precedente alla 3.12.2 Bypass di Autorizzazione tramite Resolver Personalizzato
- Pubblicato
- 27 set 2026
- Aggiornato
- 27 set 2026
- Assegnazione CNA
- VulnCheck
- Evidenza osservata
- 3 ott 2026
CVSS primario
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:XRiepilogo
vm2 prima della 3.12.2 contiene un bypass dell'autorizzazione nel resolver dei moduli esterni di NodeVM. Quando un embedder configura `require.external` con un resolver personalizzato (e `context: 'host'`), `LegacyResolver.customResolve` in lib/resolver-compat.js registra la directory del modulo risolto in `this.externals` come `new RegExp('^' + escapeRegExp(resolvedPath))`, senza richiedere un separatore di percorso o un confine di fine stringa. Il codice guest non attendibile può quindi richiedere il modulo in allowlist (ad esempio `foo`) e poi richiedere il percorso assoluto di un modulo sibling non in allowlist il cui percorso condivide semplicemente il prefisso risolto (ad esempio `.../node_modules/foo2/index.js`); il sibling supera `isPathAllowedForModule` e viene caricato tramite `hostRequire`, quindi il suo codice di primo livello viene eseguito nel processo host prima che gli export vengano avvolti con `vm.readonly`, con conseguente sandbox escape ed esecuzione di codice arbitrario nel contesto host.
Fonti
PoC Python per CVE-2026-100721: rileva e sfrutta il bypass dell'allowlist esterna di NodeVM in vm2 <3.12.2, ottenendo l'evasione dalla sandbox e RCE sull'host tramite lab locale o target HTTP di massa.
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.