Longinus: un único fallo en V8 rompe el heap sandbox y la sandbox de Chrome

Fuentes: Longinus: 2 Boundaries in One Bug, Piercing Chrome's Renderer and V8 Sandbox with a Single Vulnerability, CVE-2026-6307

Vega, investigadora de seguridad de Nebuléc, ha descubierto una vulnerabilidad en el compilador JIT TurboFan del motor V8 de Chrome, registrada como CVE-2026-6307 y bautizada Longinus, que permite obtener lectura y escritura arbitraria de memoria dentro de la heap sandbox y, además, escapar de ella para escribir fuera, todo a partir de un único fallo. El bug estuvo presente en Chrome 106 durante cuatro años.

La vulnerabilidad reside en cómo TurboFan representa y optimiza el grafo intermedio conocido como Sea of Nodes. Cuando el compilador inlinea llamadas de JavaScript a WebAssembly, inserta en el grafo del llamante los FrameState, nodos de metadatos que indican cómo reconstruir el estado en una deoptización perezosa. Dos FrameState correspondientes a funciones Wasm con distinta firma —una que devuelve un entero i64 expuesto a JavaScript como BigInt y otra que devuelve un externref, un valor ya etiquetado— resultan equivalentes para las optimizaciones de la fase Turboshaft, por lo que el compilador puede mezclarlas o sustituir una por otra.

En la práctica, esto provoca que V8 trate los 64 bits del valor de retorno como un puntero etiquetado en lugar de como un entero crudo, lo que abre la puerta a lecturas y escrituras controladas dentro de la heap sandbox. Como el propio sandbox reside en una región protegida de la memoria, ese acceso arbitrario basta para escapar y lograr ejecución remota de código sin necesidad de combinarlo con otro fallo. Según Nebuléc, el ataque se reproduce con una tasa de éxito del 100 % y no requiere técnicas de spraying.

El análisis describe además el papel del canonicalizado de firmas, la diferencia entre los tipos de retorno i64 y externref, y por qué las optimizaciones de grafos como el common subexpression elimination y el value numbering global no distinguen los dos FrameState en cuestión.