Un equipo de investigadores ha presentado Branch Target Reuse (BTR), una nueva variante del ataque Spectre-v2 diseñada específicamente para los compiladores just-in-time (JIT) utilizados en navegadores web, entornos de ejecución de lenguajes y el núcleo del sistema operativo. A diferencia de las variantes anteriores, BTR explota una falla en la gestión de entradas de predicción de ramas indirectas en CPUs modernas, permitiendo a los atacantes robar datos confidenciales incluso cuando las mitigaciones de software están activadas.
El mecanismo de ataque se basa en la reutilización de objetivos de rama obsoletos. Cuando un compilador JIT genera código, las entradas de predicción de ramas pueden sobrevivir a la liberación de la memoria original y ser reutilizadas para ejecutar código especulativo en direcciones desalineadas. Los autores desarrollaron exploits end-to-end contra el kernel de Linux, logrando fugar datos arbitrarios en CPUs Intel modernas. En una demostración práctica, lograron extraer la contraseña de root del proceso 'su' mediante la explotación de la opción de endurecimiento de cBPF, un mecanismo de mitigación que, aunque activado por defecto en muchas configuraciones, fue elogiado por su capacidad de ser eludido mediante técnicas de codificación de saltos.
El estudio también analizó SpiderMonkey (motor de JavaScript de Firefox) y GraalVM (runtime de Oracle). En SpiderMonkey, se demostró la viabilidad del ataque, aunque se requiere más trabajo para crear un exploit de navegador completo. En GraalVM, el ataque fue limitado por la actividad de recolección de basura que borraba las entradas de predicción antes de que pudieran usarse. Finalmente, se han desplegado mitigaciones: el kernel de Linux ha implementado un nuevo mecanismo que emite IBPB al reutilizar regiones de cBPF, y Oracle ha aleatorizado las ubicaciones de la caché JIT en GraalVM.
