Kasper, um scanner para problemas especulativos de execução de código no kernel Linux, já está disponível

Uma equipe de pesquisadores da Universidade Livre de Amsterdã publicou um kit de ferramentas Kasper projetado para identificar trechos de código no kernel Linux que podem ser usados ​​para explorar vulnerabilidades da classe Spectre causadas pela execução especulativa de código no processador. O código-fonte do kit de ferramentas é distribuído sob a licença Apache 2.0.

Lembremos que para realizar ataques como o Spectre v1, que permite determinar o conteúdo da memória, é necessária a presença no código privilegiado de uma determinada sequência de comandos (gadgets), levando à execução especulativa de instruções . Para fins de otimização, o processador começa a executar tais gadgets no modo especulativo, então determina que a previsão do desvio não foi justificada e reverte as operações ao seu estado original, mas os dados processados ​​​​durante a execução especulativa acabam no cache e nos buffers microarquiteturais e está disponível para recuperação usando vários métodos para determinar dados residuais por meio de canais de terceiros.

As ferramentas disponíveis anteriormente para verificar a vulnerabilidade Spectre em gadgets, com base na busca por padrões típicos, mostraram um nível muito alto de falsos positivos, enquanto faltavam muitos gadgets reais (experimentos mostraram que 99% dos gadgets identificados por essas ferramentas não podiam ser usados ​​para ataques , e 33% dos gadgets em funcionamento que poderiam levar a um ataque não foram percebidos).

Para melhorar a qualidade da identificação de gadgets problemáticos, Kasper modela vulnerabilidades que um invasor pode explorar em cada etapa da execução de ataques da classe Spectre - problemas que permitem o controle de dados são modelados (por exemplo, substituindo dados do invasor em estruturas microarquitetônicas para influenciar a execução especulativa subsequente usando ataques de classe LVI), obter acesso a informações confidenciais (por exemplo, ao ultrapassar os limites do buffer ou usar memória depois de liberada) e vazar informações confidenciais (por exemplo, analisando o estado do cache do processador ou usando o método MDS).

Kasper, um scanner para problemas especulativos de execução de código no kernel Linux, já está disponível

Ao testar, o kernel é vinculado às bibliotecas de tempo de execução Kasper e verifica a execução no nível LLVM. O processo de verificação emula a execução especulativa de código, implementada usando o mecanismo de restauração de ponto de verificação, que executa especificamente uma ramificação de código prevista incorretamente e, em seguida, reverte para o estado original antes do início da ramificação. Kasper também tenta simular diversas vulnerabilidades de software e hardware, analisa o impacto dos efeitos arquitetônicos e microarquiteturais e realiza testes fuzz de possíveis ações do invasor. Para analisar os fluxos de execução, é usada a porta DataFlowSanitizer para o kernel Linux e, para testes de difusão, é usada uma versão modificada do pacote syzkaller.

Kasper, um scanner para problemas especulativos de execução de código no kernel Linux, já está disponível

Uma varredura do kernel do Linux usando Kasper identificou 1379 gadgets até então desconhecidos que potencialmente levam ao vazamento de dados durante a execução especulativa de instruções. Observa-se que talvez apenas alguns deles possam representar problemas reais, mas para demonstrar que existe um perigo real, e não apenas teórico, foi desenvolvido um protótipo funcional de uma exploração para um dos fragmentos de código problemáticos, levando a informações vazamento da memória do kernel.

Fonte: opennet.ru

Adicionar um comentário