CVE-2026-100721
vm2 antes da 3.12.2 Bypass de Autorização via Resolver Personalizado
- Publicado
- 27 de set. de 2026
- Atualizado
- 27 de set. de 2026
- Atribuindo CNA
- VulnCheck
- Evidência observada
- 3 de out. de 2026
vm2 antes da 3.12.2 Bypass de Autorização via Resolver Personalizado
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:Xvm2 antes da versão 3.12.2 contém um bypass de autorização no resolvedor de módulos externos do NodeVM. Quando um embedder configura `require.external` com um resolvedor personalizado (e `context: 'host'`), `LegacyResolver.customResolve` em lib/resolver-compat.js registra o diretório do módulo resolvido em `this.externals` como `new RegExp('^' + escapeRegExp(resolvedPath))`, sem exigir um separador de caminho ou limite de fim de string. Código convidado não confiável pode, portanto, requerer o módulo da lista de permissões (por exemplo, `foo`) e então requerer o caminho absoluto de um irmão não permitido cujo caminho apenas compartilha o prefixo resolvido (por exemplo, `.../node_modules/foo2/index.js`); o irmão passa por `isPathAllowedForModule` e é carregado através de `hostRequire`, então seu código de nível superior é executado no processo host antes que as exportações sejam envolvidas com `vm.readonly`, resultando em um escape do sandbox e execução de código arbitrário no contexto do host.
PoC em Python para CVE-2026-100721: detecta e explora o bypass da allowlist externa do NodeVM no vm2 <3.12.2, alcançando escape do sandbox e RCE no host via laboratório local ou alvos HTTP em massa.
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.