Vulnerabilidad crítica en vm2 de Node.js permite ejecución de código arbitrario
Publicado el
Vulnerabilidad en vm2 de Node.js
Una vulnerabilidad crítica ha sido identificada en la biblioteca vm2 de Node.js, que podría permitir a los atacantes ejecutar código arbitrario en el sistema operativo si se explota correctamente. Este fallo, registrado como CVE-2026-22709, presenta un CVSS de 9.8, lo que indica su alta severidad.
El mantenedor de vm2, Patrik Simek, explicó que la vulnerabilidad se origina en la versión 3.10.0, donde la sanitización de los callbacks de `Promise.prototype.then` y `Promise.prototype.catch` puede ser eludida. Esto permite a los atacantes escapar del entorno de sandbox y ejecutar código sin restricciones.
La biblioteca vm2 se utiliza para ejecutar código no confiable dentro de un entorno seguro, interceptando y proxyando objetos de JavaScript para evitar que el código sandboxed acceda al entorno host. La vulnerabilidad se debe a una insuficiente sanitización de los manejadores de Promise, creando un vector de escape que permite la ejecución de código fuera de los límites de la sandbox.
Investigadores de Endor Labs, Peyton Kennedy y Cris Staicu, señalaron que las funciones asíncronas en JavaScript devuelven objetos `globalPromise`, no `localPromise`. Dado que `globalPromise.prototype.then` y `globalPromise.prototype.catch` no están debidamente sanitizados, esto abre la puerta a la explotación.
Aunque este fallo ha sido abordado en la versión 3.10.2 de vm2, se suma a una serie de vulnerabilidades de escape de sandbox que han afectado a la biblioteca en los últimos años. Otras vulnerabilidades significativas incluyen CVE-2022-36067, CVE-2023-29017, CVE-2023-29199, CVE-2023-30547, CVE-2023-32314, CVE-2023-37466 y CVE-2023-37903. La última, CVE-2023-37903, descubierta en julio de 2023, llevó a Simek a anunciar la posible discontinuación del proyecto. Sin embargo, este anuncio fue posteriormente eliminado del README más reciente en su repositorio de GitHub tras la reactivación del proyecto a finales del año pasado.
La página de seguridad se actualizó en octubre de 2025, mencionando que las versiones 3.x de vm2 están siendo activamente mantenidas. A pesar de esto, el mantenedor ha reconocido que es probable que se descubran nuevos métodos de bypass en el futuro, instando a los usuarios a mantener la biblioteca actualizada y a considerar alternativas más robustas como isolated-vm para una mayor garantía de aislamiento. Semgrep destacó que, a diferencia del modelo vm problemático, isolated-vm se basa en la interfaz nativa Isolate de V8, ofreciendo una base más sólida. No obstante, los mantenedores de vm2 subrayan la importancia del aislamiento y recomiendan el uso de Docker con separación lógica entre componentes.
Dada la gravedad de la vulnerabilidad, se recomienda a los usuarios que actualicen a la versión más reciente (3.10.3), que incorpora correcciones para otros escapes de sandbox adicionales. La situación subraya la necesidad de atención continua en el ámbito de la ciberseguridad y la importancia de mantener actualizadas las herramientas utilizadas en el desarrollo.