Vulnerabilidad Crítica de TOCTOU en ‘isolate-vm’ Permite Evasión de Sandbox

Investigadores de seguridad han identificado una vulnerabilidad de severidad crítica (rastreada como GHSA-864f-rcv7-6rh4, con identificador CVE en proceso) en la popular biblioteca de aislamiento de procesos isolate-vm para Node.js. Este componente es fundamental para separar entornos de ejecución JavaScript, asignando a cada uno su propio heap y restricciones de memoria.

El fallo descubierto permite que código JavaScript no confiable logre escapar de su entorno aislado (sandbox) V8, lo que facilita ataques que van desde la caída del servicio de confianza (Denegación de Servicio) hasta el secuestro total del flujo de control para lograr Ejecución Remota de Código (RCE).


Mecánica de la Amenaza: Confusión de Tipos y TOCTOU

El problema de seguridad no reside en el motor V8, sino en la capa de código de enlace nativo en C++, específicamente en la función ExternalCopy (utilizada para transferir datos a través del límite del aislamiento). El fallo explota la opción transferList, la cual recorre la lista de transferencias de memoria en dos tiempos:

  • Iteración de validación: El sistema verifica que la entrada proporcionada sea un objeto ArrayBuffer válido.
  • Iteración de transferencia: El sistema procesa la entrada sin volver a validar su tipo.

Un atacante posicionado dentro del entorno aislado puede aprovechar esta ventana (condición de carrera conocida como Time-of-Check to Time-of-Use o TOCTOU) diseñando un método getter en JavaScript. En la primera lectura, el getter devuelve un ArrayBuffer legítimo, superando la validación. Durante la segunda lectura, altera el valor a un número entero o cadena. El código C++ fuerza la conversión sin protección, creando una confusión de tipos que obliga al proceso anfitrión a desreferenciar memoria controlada por el atacante.


Impacto y Plan de Mitigación Operativa

El perfil de riesgo es extremadamente alto para plataformas de agentes de IA, herramientas de automatización de flujos de trabajo (pipelines) y arquitecturas multiusuario (multi-tenant) que ejecuten rutinas de JavaScript suministradas por clientes externos.

Las células de DevSecOps e infraestructura deben ejecutar las siguientes acciones:

  • Actualización Prioritaria de Dependencias: Actualizar inmediatamente isolate-vm a las versiones 7.0.1 o 6.2.0. El parche soluciona el fallo bloqueando por completo la ejecución de JavaScript de fondo mientras ExternalCopy realiza la operación de copiado.
  • Auditoría de Referencias Expuestas: Revisar el código de la aplicación anfitriona para reducir estrictamente las capacidades compartidas (como ivm.Reference) expuestas hacia los scripts aislados, ya que el ataque solo requiere de una referencia expuesta para iniciar la construcción de la lista maliciosa.
  • Análisis de Enlaces Nativos: Auditar cualquier otra capa de enlace personalizada en C++ que interactúe con el entorno, recordando que un sandbox robusto pierde efectividad si su código de conexión perimetral es inseguro.

Related Post