Kasper, un escáner de dispositivos de código especulativo en el kernel de Linux
Un grupo de investigadores de la Universidad Libre de Amsterdam dieron a conocer mediante una publicación de blog una herramienta llamada «Kasper» la cual destacan que está diseñada para identificar fragmentos de código en el kernel de Linux que pueden usarse para explotar las vulnerabilidades de la clase Spectre causadas por la ejecución especulativa de código por parte del procesador.
Para quienes desconocen de este tipo de ataques, deben saber que vulnerabilidades de la clase como Spectre v1 permiten determinar el contenido de la memoria, se requiere una determinada secuencia de comandos (gadgets) en el código privilegiado, lo que lleva a la ejecución especulativa de instrucciones.
Para optimizar, el procesador comienza a ejecutar dichos dispositivos en un modo especulativo, luego determina que la predicción de la bifurcación no se ha justificado y revierte las operaciones a su estado original, pero los datos procesados durante la ejecución especulativa se asientan en el caché y la microarquitectura búferes y está disponible para su extracción utilizando varios métodos de determinación de datos residuales a través de canales de terceros.
Las herramientas de escaneo de gadgets basadas en patrones disponibles anteriormente para la vulnerabilidad de Spectre mostraron una tasa muy alta de falsos positivos, mientras que se perdieron muchos gadgets reales (los experimentos demostraron que el 99 % de los gadgets detectados por tales herramientas no se podían usar para ataques, y el 33 % de los que funcionaban no se observaron dispositivos capaces de conducir a un ataque).
Presentamos Kasper, un escáner de dispositivos de ejecución transitoria (o especulativa). Utiliza políticas de análisis de corrupción para modelar un atacante capaz de explotar vulnerabilidades arbitrarias de software/hardware en una ruta transitoria.
Sobre Kasper
Para mejorar la calidad de la identificación de dispositivos problemáticos, Kasper modela las vulnerabilidades que un atacante puede usar en cada paso de los ataques de la clase Spectre: los problemas se modelan para permitir el control de los datos (por ejemplo, la sustitución de los datos del atacante en estructuras de microarquitectura para influir en la ejecución especulativa posterior) usando ataques de clase LVI, obtener acceso a información confidencial (por ejemplo, cuando el búfer está fuera de los límites o la memoria se usa después de haber sido liberada) y filtrar información confidencial (por ejemplo, al analizar el estado del caché del procesador o usar el método MDS ).
Modela un atacante capaz de controlar datos (p. ej., a través de masaje de memoria o inyección de valor a la LVI), acceder a secretos (p. ej., a través de accesos fuera de los límites o uso después de libre) y filtrar estos secretos (p. ej. , a través de canales encubiertos basados en caché, basados en MDS o basados en contención de puertos).
Al realizar la prueba, el kernel se pone en contacto con las bibliotecas de tiempo de ejecución de Kasper y verifica que funcionen en el nivel de LLVM. Durante la verificación, la ejecución de código especulativo se emula mediante el mecanismo de restauración de punto de control, que ejecuta específicamente una bifurcación de código predicha incorrectamente, después de lo cual vuelve a su estado original antes de que comenzara la bifurcación.
Kasper también intenta modelar varias vulnerabilidades de software y hardware, analiza la influencia de los efectos arquitectónicos y microarquitectónicos y realiza pruebas de fuzzing de posibles acciones de atacantes. Para el análisis de los flujos de ejecución se utiliza el puerto DataFlowSanitizer para el kernel de Linux, y para las pruebas de fuzzing, una versión modificada del paquete syzkaller.
Como resultado, Kasper descubrió 1.379 dispositivos previamente desconocidos en el kernel de Linux fuertemente reforzado. Confirmamos nuestros hallazgos al demostrar un exploit de prueba de concepto de extremo a extremo para uno de los dispositivos encontrados.
Mientras se escaneaba el kernel de Linux con Kasper, se identificaron 1379 dispositivos previamente desconocidos, lo que podría provocar una fuga de datos durante la ejecución especulativa de instrucciones.
Se observa que quizás solo algunos de ellos pueden presentar problemas reales, pero para demostrar que existe un peligro real, y no solo teórico, se desarrolló un prototipo funcional de un exploit para uno de los fragmentos de código problemáticos, lo que provocó una fuga de información de la memoria del kernel.
Finalmente si estás interesado en poder conocer más al respecto sobre Kasper, debes saber que el código fuente se distribuye bajo la licencia Apache 2.0.
Fuente: https://www.vusec.net