Retbleed: um novo ataque de execução especulativa que atinge Intel e AMD

Recentemente saiu a notícia de quee um grupo de pesquisadores da ETH Zurich identificou um novo ataque ao mecanismo de execução especulativa de saltos indiretos na CPU, que permite extrair informações da memória do kernel ou organizar um ataque ao sistema host a partir de máquinas virtuais.

As vulnerabilidades foram codinome Retbleed (já catalogado sob CVE-2022-29900, CVE-2022-29901) e são de natureza semelhante aos ataques Spectre-v2.

A diferença se resume a organizar a execução especulativa de código arbitrário processando a instrução "ret" (return), que recupera o endereço para pular da pilha, em vez de pular indiretamente usando a instrução "jmp", carregando o endereço da memória ou um registrador de CPU.

Sobre o novo ataque é mencionado que um invasor pode criar condições para uma previsão de bifurcação incorreto e organizar um salto especulativo intencional para um bloco de código que não é pretendido pela lógica de execução do programa.

Em última instância, o processador determinará que a previsão de desvio não foi justificada e reverterá a operação ao seu estado original, mas os dados processados Durante a execução especulativa eles vão sentar-se no cache e buffers de microarquitetura. Se um bloco executado erroneamente realizar um acesso à memória, sua execução especulativa levará à instalação no cache geral e à leitura dos dados da memória.

Para determinar os dados restantes no cache após a execução especulativa das operações, o invasor pode usar métodos para determinar os dados residuais por meio de canais de terceiros, por exemplo, analisando alterações no tempo de acesso aos dados armazenados em cache e não armazenados em cache.

Para extração intencional de informações de áreas em um nível de privilégio diferente (por exemplo, da memória do kernel), são usados ​​"dispositivos": scripts presentes no kernel, adequados para leitura especulativa de dados da memória, dependendo das condições externas, podem ser influenciados por um atacante.

Para proteger contra ataques clássicos da classe Spectre, que usam instruções de desvio indireto e condicional, a maioria dos sistemas operacionais usa a técnica "retpoline", que se baseia na substituição de operações de desvio indireto pela instrução "ret", para a qual é necessária uma previsão de estado de pilha separada unidade é usada em processadores, não usa um bloco de previsão de desvio.

Na introdução do retpoline em 2018, acreditava-se que a manipulação de endereços do tipo Spectre era impraticável para bifurcação especulativa com a instrução "ret".

Os pesquisadores que desenvolveram o método de ataque Retbleed demonstrou a possibilidade de criar condições de microarquitetura para iniciar uma transição especulativa usando a instrução "ret" e lançou um kit de ferramentas pronto para identificar sequências de instruções adequadas (gadgets) para explorar a vulnerabilidade no kernel Linux em que tais condições aparecem.

Ao longo do estudo, um exploit de trabalho foi preparado que permite, em sistemas com CPUs Intel, a partir de um processo sem privilégios no espaço do usuário extrair dados arbitrários da memória do kernel a uma taxa de 219 bytes por segundo e com 98% de precisão.

En os processadores AMD, a eficiência do exploit é muito maior, já que a taxa de vazamento é de 3,9 KB por segundo. Como exemplo prático, é mostrado como usar o exploit proposto para determinar o conteúdo do arquivo /etc/shadow. Em sistemas com CPUs Intel, um ataque para determinar o hash da senha de root foi realizado em 28 minutos, e em sistemas com CPUs AMD, em 6 minutos.

O ataque foi confirmado para 6-8 gerações de processadores Intel lançados antes do terceiro trimestre de 2019 (incluindo Skylake) e processadores AMD baseados nas microarquiteturas Zen 1, Zen 1+ e Zen 2 lançados antes do segundo trimestre de 2021. Em modelos de processador mais recentes, como AMD Zen3 e Intel Alder Lake, bem como processadores ARM, o problema é bloqueado pelos mecanismos de proteção existentes. Por exemplo, o uso de instruções IBRS (Indirect Branch Restricted Speculation) ajuda a proteger contra um ataque.

Preparou um conjunto de mudanças para o kernel Linux e o hypervisor Xen, que bloqueiam o problema programaticamente em CPUs mais antigas. O patch do kernel Linux proposto altera 68 arquivos, adiciona 1783 linhas e remove 387 linhas.

Infelizmente, a proteção incorre em custos indiretos significativos: em textos feitos em processadores AMD e Intel, a degradação do desempenho é estimada entre 14% e 39%. É preferível usar proteção baseada em instruções IBRS, disponíveis em gerações mais recentes de CPUs Intel e suportadas desde o kernel Linux 4.19.

Por fim, se você estiver interessado em saber mais sobre o assunto, pode consultar o detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.