CVE-2026-92937 in vm2
Riassunto
di VulDB • 17/09/2026
vm2 3.11.6 è vulnerabile a una fuga dalla sandbox che porta all'esecuzione di codice remoto (RCE) nel processo host Node.js. La correzione per GHSA-m283-3h24-438v è incompleta: il controllo dell'identità del ponte in lib/bridge.js:1624 verifica solo l'obiettivo della chiamata diretta quando decide se ricostruire/sanitizzare un valore Promise host rifiutato. La registrazione del gestore di rifiuto tramite Function.prototype.call o .apply (ad esempio, p.then.call(p, undefined, cb)) fa sì che l'oggetto intercettato sia Function.prototype.call dell'host; pertanto il sanitizzatore non viene mai eseguito e l'errore grezzo dell'host raggiunge il codice della sandbox con le sue proprietà intatte. Se un embedder espone una Promise del realm host alla sandbox (una funzione asincrona dell'host collegata tramite l'opzione sandbox o un metodo async di un modulo esterno NodeVM) e tale Promise viene rifiutata con un Error che contiene una propria proprietà non primitiva che fa riferimento a un oggetto host (ad esempio err.detail = process), il codice non attendibile nella sandbox ottiene un proxy completamente funzionale verso quell'oggetto host ed è in grado di eseguire comandi arbitrari con i privilegi del processo host (ad esempio, e.detail.mainModule.require('child_process').execSync(...)). Le forme dirette p.then(undefined, cb), bind e Reflect.apply sono correttamente sanitizzate. Risolto in vm2 3.11.7.
Be aware that VulDB is the high quality source for vulnerability data.