Investigadores de VUSec, perteneciente al Systems and Network Security Group de la Universidad VU de Ámsterdam, y de Scuola Superiore Sant’Anna descubrieron una nueva variante de los ataques Spectre v2, a la que llamaron Branch Target Reuse o BTR. El ataque aprovecha información antigua que el predictor de ramas del procesador conserva después de reutilizar memoria para ejecutar código nuevo, lo que permite ejecutar instrucciones especulativamente y filtrar datos sensibles.
En pruebas sobre Linux, los investigadores lograron recuperar el hash de la contraseña del usuario root desde la memoria de un proceso su a una velocidad de ocho bytes por segundo. La extracción completa del hash tardó, en promedio, unos tres minutos en procesadores Raptor Cove y cinco minutos en procesadores Lion Cove, según los resultados de los investigadores.
¿Cómo funciona Branch Target Reuse?
El ataque se basa en una brecha entre el código generado por los motores de ejecución inmediata JIT y el estado que el predictor de ramas del procesador conserva en su memoria. Cuando los motores JIT liberan código y colocan otro código en la misma dirección, el procesador puede conservar una predicción antigua del destino de un salto indirecto. Al ejecutar un salto posterior, el procesador puede ejecutar temporalmente instrucciones del destino antiguo, aunque la ruta correcta de ejecución sea diferente.
Los investigadores aprovecharon este mecanismo mediante programas classic BPF sin privilegios para entrenar el predictor; después liberaron el programa original y colocaron otro programa en la memoria reutilizada. La ejecución especulativa en un desplazamiento no alineado creó rastros medibles en la memoria caché, lo que permitió a los investigadores deducir los datos byte a byte.
Alcance de la exposición y resultados prácticos
El equipo probó el ataque contra Linux cBPF en dos configuraciones: la predeterminada y otra que incluía la opción de protección constant blinding. Incluso con la protección, el exploit se modificó para codificar las instrucciones controladas por el atacante dentro de desplazamientos de salto, manteniendo la capacidad de recuperar el hash en unos cinco minutos.
Los investigadores también estudiaron la exposición de Firefox SpiderMonkey y Oracle GraalVM. El modelo de prueba de concepto en SpiderMonkey mostró que las predicciones antiguas permanecían después de reutilizar el código, pero no se convirtió en un exploit completo del navegador. En GraalVM, los investigadores encontraron una forma de eludir especulativamente la comprobación del sandbox; sin embargo, la actividad del motor borró las predicciones antes de que el ataque pudiera completarse en sus experimentos.
Los investigadores confirmaron el comportamiento en todos los procesadores que probaron, incluidos Intel, AMD y Arm, y señalaron que la mayoría del hardware moderno podría estar expuesto. Esto se debe a la ausencia de un mecanismo actual que garantice la sincronización del predictor de ramas con el estado real del código.
¿Qué deben hacer los administradores de sistemas?
Los investigadores notificaron a las partes afectadas, y los problemas recibieron los identificadores CVE-2026-64507 y CVE-2026-64508. Se han integrado correcciones en el kernel de Linux, por lo que el paso inmediato para los usuarios de Linux es actualizar a la versión más reciente disponible del kernel, además de aplicar las actualizaciones del sistema operativo y del firmware.
El robo del hash no implica recuperar directamente la contraseña en texto plano; el éxito de su descifrado sin conexión o mediante recursos de computación en la nube depende del algoritmo de hash y de la solidez de la contraseña. Sin embargo, el resultado sigue siendo importante desde el punto de vista de la seguridad, porque demuestra que los ataques de ejecución especulativa basados en la reutilización de código no son necesariamente teóricos y que las actualizaciones de software por sí solas podrían no abordar el origen del problema antes de disponer de mecanismos de hardware que garanticen la coherencia de las predicciones de ramas con el código actual.