Pesquisadores do Centro Helmholtz de Segurança da Informação (CISPA) publicaram um novo método de ataque chamado CacheWarp, que permite comprometer o mecanismo de proteção AMD SEV (Secure Encrypted Virtualization), utilizado em sistemas de virtualização para proteger máquinas virtuais contra intervenções do hipervisor ou do administrador do sistema host. O método proposto possibilita que um invasor com acesso ao hipervisor execute código externo e eleve privilégios em uma máquina virtual protegida com AMD SEV.
O ataque baseia-se na exploração de uma vulnerabilidade (CVE-2023-20592) causada por um manuseio incorreto do cache durante a execução da instrução do processador INVD, que pode levar a um desvio de dados na memória e no cache, contornando os mecanismos de integridade da memória das máquinas virtuais implementados com as extensões SEV-ES e SEV-SNP. A vulnerabilidade afeta os processadores AMD EPYC da primeira à terceira geração.
Para os processadores AMD EPYC de terceira geração (Zen 3), o problema foi corrigido na atualização de microcódigo lançada ontem pela AMD (a correção não causa redução de desempenho). Para a primeira e segunda gerações dos AMD EPYC (Zen 1 e Zen 2), a proteção não está disponível, pois esses CPUs não suportam a extensão SEV-SNP, que garante controle de integridade. máquinas virtuais. A quarta geração dos processadores AMD EPYC "Genoa" com arquitetura de microprocessador "Zen 4" não é vulnerável a essa falha.
A tecnologia AMD SEV é aplicada para isolar máquinas virtuais por provedores de nuvem como Amazon Web Services (AWS), Google Cloud, Microsoft Azure e Oracle Compute Infrastructure (OCI). A proteção AMD SEV é implementada através de criptografia de hardware da memória das máquinas virtuais. Além disso, utilizando a extensão SEV-ES (Encrypted State), a proteção dos registradores da CPU é realizada. Apenas o sistema operacional convidado atual tem acesso aos dados descriptografados, enquanto os demais máquinas virtuais e o hipervisor, ao tentar acessar essa memória, recebem um conjunto de dados criptografados.
Na terceira geração dos processadores AMD EPYC, foi implementada uma extensão adicional SEV-SNP (Secure Nested Paging), que garante um funcionamento seguro com tabelas de páginas de memória aninhadas. Além da criptografia geral da memória e isolamento de registradores, o SEV-SNP incorpora mecanismos adicionais para proteger a integridade da memória, impedindo alterações na VM por parte do hypervisor. A gestão das chaves de criptografia é realizada por um processador PSP (Platform Security Processor) separado, embutido no chip e baseado na arquitetura ARM.
A essência do método de ataque proposto utiliza a instrução INVD para invalidar blocos (linhas) no cache de páginas sujas (dirty) sem descartar os dados acumulados no cache na memória (write-back). Assim, o método permite expulsar dados alterados do cache sem alterar o estado da memória. Para realizar o ataque, é sugerido o uso de exceções de software (fault injection) para interromper a operação da máquina virtual em dois pontos: no primeiro, o atacante chama a instrução "wbnoinvd" para descartar todas as operações de escrita acumuladas no cache para a memória, e no segundo ponto chama a instrução "invd" para retornar operações de escrita não refletidas na memória ao seu estado antigo.
Para verificar a vulnerabilidade de seus sistemas, foi publicado um protótipo de exploit que permite realizar a injeção de exceções em uma máquina virtual protegida através do AMD SEV, revertendo para um estado anterior as alterações não descartadas na memória na VM. A reversão de alterações pode ser utilizada para modificar o fluxo da execução do programa ao retornar um antigo endereço de retorno na pilha, ou para reutilizar parâmetros de uma antiga sessão que havia sido autenticada, através do retorno do valor do sinalizador de autenticação.
Por exemplo, pesquisadores demonstraram a viabilidade do método CacheWarp para realizar um ataque Bellcore na implementação do algoritmo RSA-CRT na biblioteca ipp-crypto, que permitiu a recuperação da chave privada através da inserção de erros durante o cálculo da assinatura digital. Também foi mostrado como é possível substituir os parâmetros de verificação da sessão do OpenSSH ao se conectar remotamente ao sistema hospedeiro, e depois alterar o estado da verificação ao executar o utilitário sudo para obter direitos de root no Ubuntu 20.04. O funcionamento do exploit foi testado em sistemas com processadores AMD EPYC 7252, 7313P e 7443.
Fonte: opennet.ru
