Descubre cómo la vulnerabilidad de la CPU GhostRace amenaza todas las arquitecturas principales según investigadores de IBM y VU Amsterdam. Este nuevo ataque de ejecución especulativa multiplataforma expone riesgos para contraseñas y datos sensibles. En un anuncio realizado el 12 de marzo en Twitter, investigadores de VUSec e IBM revelaron públicamente esta preocupante vulnerabilidad, vinculando al documento de divulgación alojado por VUSec.
Las condiciones de carrera surgen cuando múltiples hilos intentan acceder a un recurso compartido sin una sincronización adecuada, lo que a menudo conduce a vulnerabilidades como el uso después de liberar de forma concurrente. Para mitigar su ocurrencia, los sistemas operativos confían en primitivas de sincronización como mutex, spinlocks, etc.
En este trabajo, presentamos GhostRace, el primer análisis de seguridad de estas primitivas en rutas de código ejecutadas de manera especulativa.
Nuestro hallazgo clave es que todas las primitivas de sincronización comunes implementadas utilizando ramificaciones condicionales (Figura 1) pueden ser eludidas microarquitectónicamente en rutas especulativas mediante un ataque Spectre-v1, convirtiendo todas las regiones críticas libre de carreras arquitectónicamente en Condiciones de Carrera Especulativas (SRC), permitiendo a los atacantes filtrar información del software objetivo.
Primitivas de Sincronización Especulativa Nuestro análisis muestra que todas las otras primitivas comunes de sincronización del lado de escritura en el kernel de Linux se implementan en última instancia a través de una rama condicional y, por lo tanto, son vulnerables a condiciones de carrera especulativas.
Para confirmar experimentalmente esta intuición, probamos todas estas primitivas de sincronización bajo ejecución especulativa después de malentrenar la rama vulnerable. En todos los casos, confirmamos la ejecución transitoria de la región crítica protegida a pesar de que otro hilo víctima ya está ejecutando arquitectónicamente en la región. Para determinar el tamaño de la ventana transitoria, medimos el número máximo de instrucciones de carga especulativas que podríamos ejecutar especulativamente dentro de la región crítica (Figura 2)