Kasper, un escáner para problemas de ejecución de código especulativo en el kernel de Linux, ya está disponible

Un equipo de investigadores de la Universidad Libre de Amsterdam ha publicado un kit de herramientas de Kasper diseñado para identificar fragmentos de código en el kernel de Linux que pueden usarse para explotar vulnerabilidades de clase Spectre causadas por la ejecución de código especulativo en el procesador. El código fuente del kit de herramientas se distribuye bajo la licencia Apache 2.0.

Recordemos que para llevar a cabo ataques como Spectre v1, que permiten determinar el contenido de la memoria, se requiere la presencia en el código privilegiado de una determinada secuencia de comandos (gadgets), que conducen a la ejecución especulativa de instrucciones. . Para fines de optimización, el procesador comienza a ejecutar dichos dispositivos en modo especulativo, luego determina que la predicción de la rama no estaba justificada y revierte las operaciones a su estado original, pero los datos procesados ​​durante la ejecución especulativa terminan en el caché y en los buffers de microarquitectura y está disponible para su recuperación mediante varios métodos que determinan los datos residuales a través de canales de terceros.

Las herramientas disponibles anteriormente para escanear dispositivos en busca de la vulnerabilidad Spectre, basadas en la búsqueda de patrones típicos, mostraron un nivel muy alto de falsos positivos, mientras que faltaban muchos dispositivos reales (los experimentos mostraron que el 99% de los dispositivos identificados por dichas herramientas no podían usarse para ataques). , y el 33% de los dispositivos en funcionamiento que podrían provocar un ataque no fueron detectados).

Para mejorar la calidad de la identificación de dispositivos problemáticos, Kasper modela las vulnerabilidades que un atacante puede explotar en cada paso de la ejecución de ataques de clase Spectre; se modelan problemas que permiten el control de datos (por ejemplo, sustituyendo los datos del atacante en estructuras de microarquitectura para influir en la ejecución especulativa posterior utilizando Ataques de clase LVI), obtener acceso a información confidencial (por ejemplo, al ir más allá de los límites del búfer o usar la memoria después de liberarla) y filtrar información confidencial (por ejemplo, analizando el estado de la caché del procesador o usando el método MDS).

Kasper, un escáner para problemas de ejecución de código especulativo en el kernel de Linux, ya está disponible

Durante las pruebas, el kernel se vincula con las bibliotecas de tiempo de ejecución de Kasper y verifica la ejecución en el nivel LLVM. El proceso de verificación emula la ejecución de código especulativo, implementada mediante el mecanismo de restauración de punto de control, que ejecuta específicamente una rama de código predicha incorrectamente y luego regresa al estado original antes de que comenzara la rama. Kasper también intenta simular diversas vulnerabilidades de software y hardware, analiza el impacto de los efectos arquitectónicos y microarquitectónicos y realiza pruebas aproximadas de posibles acciones de los atacantes. Para analizar los flujos de ejecución, se utiliza el puerto DataFlowSanitizer para el kernel de Linux y para las pruebas de fuzzing, se utiliza una versión modificada del paquete syzkaller.

Kasper, un escáner para problemas de ejecución de código especulativo en el kernel de Linux, ya está disponible

Un análisis del kernel de Linux utilizando Kasper identificó 1379 dispositivos previamente desconocidos que potencialmente conducen a la fuga de datos durante la ejecución especulativa de instrucciones. Se observa que quizás sólo algunos de ellos puedan plantear problemas reales, pero para demostrar que existe un peligro real, y no sólo teórico, se desarrolló un prototipo funcional de un exploit para uno de los fragmentos de código problemáticos, que conduce a información fuga de la memoria del kernel.

Fuente: opennet.ru

Añadir un comentario