Vladimir Kiriansky y Carl Waldspurger son dos investigadores de seguridad que acaban de develar dos nuevas vulnerabilidades en CPUs que explotan la ejecución especulativa y pueden modificar datos y eludir sandboxes.
De acuerdo al comunicado CVE-2018-3693 de la Base de Datos Nacional de Vulnerabilidades (NVD por sus siglas en inglés) del gobierno de Estados Unidos, son descritas como «los sistemas con microprocesadores que utilizan ejecución especulativa y predicción de bifurcación pueden permitir la divulgación no autorizada de información a un atacante con acceso de usuario local a través de un desbordamiento de búfer especulativo y un análisis de canal lateral«.
La buena noticia es que en la base de datos de vulnerabilidades, si bien el privilegio requerido para poder explotar las vulnerabilidades es bajo, la complejidad de un ataque es muy alta, por lo que fueron etiquetadas como de riesgo medio, no críticas.
Estas vulnerabilidades por su estrecha relación con la tristemente célebre vulnerabilidad Spectre, fueron apodadas como Spectre 1.1 y Spectre 1.2.
En el documento en que los dos investigadores develan su descubrimiento indican que en forma similar a los desbordamientos de búfer clásicos, el almacenamiento especulativo fuera de límites pueden modificar datos y punteros de código. Además agregan que «los ataques de valores de datos pueden eludir algunas mitigaciones de Spectre-v1, ya sea directamente o redirigiendo el flujo de control. Los ataques de control de flujo permiten la ejecución de código especulativo arbitrario, que puede eludir las instrucciones de vallas y todas las demás mitigaciones de software para ataques de ejecución especulativa previos. Es fácil construir gadgets orientados a la devolución (ROP) que se pueden usar para construir cargas de ataque alternativas«.
Con respecto a Spectre 1.2, los investigadores afirman que en aquellas CPUs que no hacen cumplir las protecciones de lectura/escritura, el almacenamiento especulativo puede sobrescribir los datos de solo lectura y los punteros de código para abrir brechas en sandboxes.