Fecha de publicación: Jue, 29/01/2026 - 09:04

Alerta de seguridad

Nivel de peligrosidad: Crítico

Descripción

Vulnerabilidad crítica de escape de sandbox que afecta a vm2, un entorno de aislamiento popular para Node.js. Esta vulnerabilidad cuenta con una puntuación CVSS de 9.8 (Crítica). Permite a los atacantes evadir la sanitización de los callbacks de promesas (promise callbacks) de vm2, logrando romper el aislamiento del sandbox y ejecutando código arbitrario en el sistema host.

Vm2 intenta mantener el entorno restringido mediante la sanitización de las funciones de retrollamada (callback functions), especialmente aquellas vinculadas a promesas. Sin embargo, no lo logra del todo. Específicamente, el archivo lib/setup-sandbox.js sanitiza los callbacks para localPromise.prototype.then.

Sin embargo omite por completo a globalPromise.prototype.then y globalPromise.prototype.catch. Y esa es una supervisión significativa. Las funciones asíncronas (async functions), por ejemplo, devuelven objetos globalPromise. Esto significa que cualquier callback adjunto al método then o catch de dicha promesa simplemente logrará eludir las defensas de vm2.

Recursos afectados

  • Producto: vm2 (paquete npm para Node.js).
  • Versiones vulnerables identificadas: todas anteriores a 3.10.2 (p. ej., ≤ 3.10.0 y 3.10.1).
  • Corrección / ajuste: algunos reportes iniciales confundían la vulnerabilidad con versiones concretas como 3.10.0; fuentes confiables indican que todas las versiones previas a 3.10.2 son vulnerables.

Solución/Mitigación

Actualizar todas las instancias de vm2 a versión 3.10.2 o superior y verificar que estas actualizaciones se hayan propagado a todos los entornos. Para dependencias transitivas que arrastren versiones vulnerables, aplicar npm audit, actualizar el lockfile y reconstruir artefactos para forzar la resolución a la versión parcheada.

Mitigación temporal.

  • Dejar de ejecutar código no confiable en instancias que usen vm2 hasta actualizar la librería.
  • Aislar las aplicaciones que usan vm2: contenedores con capacidades mínimas, usuarios no root, perfiles de seguridad, y límites de recursos.
  • Restringir salida de red y acceso al sistema de archivos desde procesos vm2 hasta que se aplique el parche.

Indicadores de compromiso

  • Ejecuciones inesperadas de procesos Node.js invocando child_process.exec* o spawn desde contextos que normalmente no lo hacen.
  • Registros de procesos hijos lanzados por Node.js relacionados con la aplicación afectada (sh, bash, utilidades del sistema).
  • Eventos de ejecución de comandos inusuales capturados por auditorías del sistema.
  • Cargas útiles que se asemejen a técnicas de bypass de sanitización de promesas.

Posibles señales de explotación.

  • Aparición de nuevos archivos o binarios sospechosos.
  • Procesos de Node que ejecutan comandos del sistema fuera de lo esperado.
  • Conexiones salientes no justificadas desde hosts con vm2 vulnerable.
  • Elevación de privilegios en procesos Node.js.
  • Eventos de integridad de archivos que indiquen cambios inesperados.

Recomendaciones

  • Priorizar la aplicación del parche oficial (vm2 ≥ 3.10.2).
  • Aislar temporalmente servicios sospechosos si se sospecha compromiso.
  • Revisar cuentas administrativas y rotar credenciales si se detecta acceso no autorizado.
  • Activar monitoreo y alertas específicas de ejecución anómala.
  • Incluir esta vulnerabilidad en gestión de riesgos y monitoreo continuo de la infraestructura.
  • Realizar un análisis post-parcheo para confirmar que no hay persistencia o puertas traseras.

Referencias