Kasper, un escáner para problemas de execución de código especulativo no núcleo de Linux, xa está dispoñible

Un equipo de investigadores da Universidade Libre de Ámsterdam publicou un kit de ferramentas Kasper deseñado para identificar fragmentos de código no núcleo de Linux que se poden usar para explotar vulnerabilidades da clase Spectre causadas pola execución de código especulativo no procesador. O código fonte do kit de ferramentas distribúese baixo a licenza Apache 2.0.

Lembremos que para levar a cabo ataques como Spectre v1, que permiten determinar o contido da memoria, é necesaria a presenza no código privilexiado dunha determinada secuencia de comandos (gadgets), que conduce á execución especulativa de instrucións. . Para fins de optimización, o procesador comeza a executar tales gadgets en modo especulativo, despois determina que a predición da rama non estaba xustificada e volva as operacións ao seu estado orixinal, pero os datos procesados ​​durante a execución especulativa acaban na memoria caché e no búfer microarquitectónico e está dispoñible para a súa recuperación mediante varios métodos para determinar os datos residuais a través de canles de terceiros.

As ferramentas dispoñíbeis anteriormente para escanear aparellos para detectar a vulnerabilidade Spectre, baseadas na busca de patróns típicos, mostraban un nivel moi alto de falsos positivos, mentres que faltaban moitos gadgets reais (os experimentos demostraron que o 99% dos aparellos identificados por tales ferramentas non se podían utilizar para ataques). , e o 33% dos aparellos funcionando que poderían provocar un ataque non se notaron).

Para mellorar a calidade da identificación de aparellos problemáticos, Kasper modela as vulnerabilidades que un atacante pode explotar en cada paso da realización de ataques de clase Spectre; os problemas que permiten o control dos datos son modelados (por exemplo, substituíndo os datos do atacante en estruturas microarquitectónicas para influír na execución especulativa posterior mediante ataques de clase LVI), obtén acceso a información confidencial (por exemplo, cando vai máis aló dos límites do búfer ou se usa a memoria despois de liberarse) e filtra información confidencial (por exemplo, analizando o estado da caché do procesador ou usando o método MDS).

Kasper, un escáner para problemas de execución de código especulativo no núcleo de Linux, xa está dispoñible

Durante a proba, o núcleo está ligado coas bibliotecas de tempo de execución de Kasper e as comprobacións que se executan a nivel LLVM. O proceso de comprobación emula a execución de código especulativo, implementado mediante o mecanismo de restauración do punto de control, que executa especificamente unha rama de código predita incorrectamente e, a continuación, volve ao estado orixinal antes de que comezase a rama. Kasper tamén tenta simular varias vulnerabilidades de software e hardware, analiza o impacto dos efectos arquitectónicos e microarquitectónicos e realiza probas de fuzz das posibles accións dos atacantes. Para analizar os fluxos de execución, utilízase o porto DataFlowSanitizer para o núcleo de Linux e, para as probas fuzzing, utilízase unha versión modificada do paquete syzkaller.

Kasper, un escáner para problemas de execución de código especulativo no núcleo de Linux, xa está dispoñible

Unha exploración do núcleo de Linux mediante Kasper identificou 1379 aparellos previamente descoñecidos que poderían levar a fuga de datos durante a execución especulativa de instrucións. Nótase que quizais só algúns deles poidan supoñer problemas reais, pero para demostrar que existe un perigo real, e non só teórico, desenvolveuse un prototipo de funcionamento dun exploit para un dos fragmentos de código problemáticos, que leva a información. fuga da memoria do núcleo.

Fonte: opennet.ru

Engadir un comentario