LVI é uma nova classe de ataques ao mecanismo de execução especulativa na CPU

Publicados informações sobre uma nova classe de ataques LVI (Injeção de valor de carga, CVE-2020-0551) sobre o mecanismo de execução especulativa em CPUs Intel, que pode ser usado para vazar chaves e dados secretos de enclaves Intel SGX e outros processos.

Uma nova classe de ataques é baseada na manipulação das mesmas estruturas microarquiteturais usadas nos ataques MDS (Amostragem de dados microarquitetônicos), Espectro e colapso. Ao mesmo tempo, novos ataques não são bloqueados pelos métodos existentes de proteção contra Meltdown, Spectre, MDS e outros ataques semelhantes. A proteção LVI eficaz requer alterações de hardware na CPU. Ao organizar a proteção programaticamente, adicionando a instrução LFENCE pelo compilador após cada operação de carregamento da memória e substituindo a instrução RET por POP, LFENCE e JMP, muita sobrecarga é registrada - segundo os pesquisadores, a proteção completa do software levará a uma diminuição em desempenho de 2 a 19 vezes.

Parte da dificuldade em bloquear o problema é compensada pelo facto de o ataque ser actualmente mais teórico do que prático (o ataque é teoricamente possível, mas muito difícil de implementar e apenas reproduzível em testes sintéticos).
Intel apropriado o problema tem um nível de perigo moderado (5.6 em 10) e lançado atualizando o firmware e SDK para o ambiente SGX, no qual tentou bloquear o ataque usando uma solução alternativa. Os métodos de ataque propostos são atualmente aplicáveis ​​apenas aos processadores Intel, mas a possibilidade de adaptar o LVI para outros processadores aos quais os ataques da classe Meltdown são aplicáveis ​​não pode ser descartada.

O problema foi identificado em Abril passado pelo investigador Jo Van Bulck da Universidade de Leuven, após o que, com a participação de 9 investigadores de outras universidades, foram desenvolvidos cinco métodos básicos de ataque, cada um dos quais permite a existência de ataques mais específicos. opções. De forma independente, em fevereiro deste ano, pesquisadores da Bitdefender também encontrado uma das variantes de ataque LVI e relatou à Intel. As variantes de ataque se diferenciam pelo uso de diferentes estruturas microarquiteturais, como buffer de armazenamento (SB, Store Buffer), buffer de preenchimento (LFB, Line Fill Buffer), buffer de troca de contexto FPU e cache de primeiro nível (L1D), anteriormente utilizados. em ataques como ZombieLoad, RIDL, Fallout, PreguiçosoFP, Prenúncio и Fusão.

LVI é uma nova classe de ataques ao mecanismo de execução especulativa na CPU

O principal honras O LVI contra ataques MDS é que o MDS manipula a determinação do conteúdo das estruturas microarquiteturais restantes no cache após tratamento especulativo de falhas ou operações de carregamento e armazenamento, enquanto
Os ataques LVI permitem que os dados do invasor sejam inseridos em estruturas microarquiteturais para influenciar a execução especulativa subsequente do código da vítima. Usando essas manipulações, um invasor pode extrair o conteúdo de estruturas de dados privadas em outros processos ao executar determinado código no núcleo da CPU alvo.

LVI é uma nova classe de ataques ao mecanismo de execução especulativa na CPU

Para problema de exploração no código do processo da vítima deveria se encontrar sequências especiais de código (gadgets) nas quais um valor controlado pelo invasor é carregado, e carregar esse valor faz com que exceções (falha, aborto ou assistência) sejam lançadas, descartando o resultado e reexecutando a instrução. Quando uma exceção é processada, aparece uma janela especulativa durante a qual os dados processados ​​no gadget vazam. Em particular, o processador começa a executar um trecho de código (gadget) em modo especulativo, então determina que a previsão não foi justificada e reverte as operações ao seu estado original, mas os dados processados ​​​​durante a execução especulativa são depositados no cache L1D e buffers de microarquitetura e está disponível para recuperação deles usando métodos conhecidos para determinar dados residuais através de canais de terceiros.

A exceção de “assistência”, diferentemente da exceção de “falha”, é tratada internamente pelo processador sem chamar manipuladores de software. A assistência pode ocorrer, por exemplo, quando o bit A (Acessado) ou D (Sujo) na tabela de páginas de memória precisa ser atualizado. A principal dificuldade em realizar um ataque a outros processos é como iniciar a ocorrência de assistência manipulando o processo da vítima. Atualmente não existem maneiras confiáveis ​​de fazer isso, mas é possível que elas sejam encontradas no futuro. A possibilidade de realizar um ataque foi confirmada até agora apenas para enclaves Intel SGX, outros cenários são teóricos ou reproduzíveis em condições sintéticas (requer adição de certos gadgets ao código)

LVI é uma nova classe de ataques ao mecanismo de execução especulativa na CPU

LVI é uma nova classe de ataques ao mecanismo de execução especulativa na CPU

Possíveis vetores de ataque:

  • Vazamento de dados das estruturas do kernel para o processo no nível do usuário. A proteção do kernel Linux contra ataques Spectre 1, bem como o mecanismo de proteção SMAP (Supervisor Mode Access Prevention), reduzem significativamente a probabilidade de um ataque LVI. Adicionar proteção adicional ao kernel pode ser necessário se métodos de ataque LVI mais simples forem identificados no futuro.
  • Vazamento de dados entre diferentes processos. O ataque requer a presença de determinados trechos de código na aplicação e a definição de um método para lançar uma exceção no processo alvo.
  • Vazamento de dados do ambiente host para o sistema convidado. O ataque é classificado como muito complexo, exigindo várias etapas e previsões de atividade no sistema de difícil implementação.
  • Vazamento de dados entre processos em diferentes sistemas convidados. O vetor de ataque está próximo de organizar o vazamento de dados entre diferentes processos, mas também requer manipulações complexas para contornar o isolamento entre sistemas convidados.

Publicado por pesquisadores alguns protótipos com uma demonstração dos princípios de realização de um ataque, mas ainda não são adequados para a realização de ataques reais. O primeiro exemplo permite redirecionar a execução de código especulativo no processo da vítima, semelhante à programação orientada a retorno (ROP,Programação Orientada a Retorno). Neste exemplo, a vítima é um processo especialmente preparado contendo os gadgets necessários (é difícil aplicar um ataque a processos reais de terceiros). O segundo exemplo nos permite interferir nos cálculos durante a criptografia AES dentro do enclave Intel SGX e organizar um vazamento de dados durante a execução especulativa de instruções para restaurar o valor da chave usada para criptografia.


Fonte: opennet.ru

Adicionar um comentário