Pesquisadores de segurança da Google publicaram informações sobre uma vulnerabilidade (CVE-2024-56161) nos processadores AMD, que afeta o carregador de microcódigo e permite contornar o mecanismo de verificação de assinatura digital durante as atualizações de microcódigo. O carregamento de microcódigo modificado permite comprometer o mecanismo 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.
A vulnerabilidade é causada pelo uso de uma função hash insegura no código que realiza a verificação da assinatura digital após o carregamento do microcódigo na CPU. Para realizar o ataque, é necessário ter privilégios de administrador no sistema local (com a capacidade de executar código no nível zero de proteção (ring0), estando fora de uma máquina virtual).
Durante o ataque, é possível interferir no funcionamento de sistemas convidados protegidos por meio das extensões AMD SEV (Secure Encrypted Virtualization) e SEV-SNP (Secure Nested Paging), que oferecem garantias de integridade da memória. máquinas virtuais, isolando os registradores do processador e garantindo funcionamento seguro com tabelas de páginas de memória aninhadas. O mecanismo AMD SEV foi criado para que o pessoal dos datacenters e provedores de nuvem não conseguisse alterar ou analisar o conteúdo da memória de sistemas convidados protegidos, bem como distorcer cálculos.
Os pesquisadores prepararam um protótipo de exploit que permite carregar microcódigo arbitrário na CPU, não assinado digitalmente. Para demonstrar o perigo da vulnerabilidade, foi proposta uma atualização de microcódigo que altera a lógica da instrução RDRAND, usada como uma das fontes de entropia em geradores de números aleatórios pseudo-aleatórios, utilizados no processo de formação de chaves, na execução de operações criptográficas e para a geração de identificadores aleatórios.
A alteração leva ao retorno do comando RDRAND apenas com o número 4, em vez de uma sequência aleatória. Para prevenir ataques reais a sistemas de computação confidencial, o microcódigo modificado zera o sinal CF (carry flag), ou seja, marca o valor emitido como errado. Detalhes adicionais e ferramentas para gerar o microcódigo alterado estão previstas para serem publicadas em 5 de março, para dar aos usuários tempo para instalar a correção em seus sistemas. Um exemplo bem-sucedido de ataque foi demonstrado para servidores com os processadores AMD EPYC 7B13 (Milan) e AMD Ryzen 9 7940HS (Phoenix).
No relatório da AMD, é apontado que a vulnerabilidade se manifesta nos processadores AMD baseados nas gerações 1-4 da microarquitetura Zen. A atualização do microcódigo que corrige a vulnerabilidade foi lançada em 13 de dezembro de 2024 para os processadores das séries AMD EPYC 7001, 7002 e 7003 (Naples, Rome, Milan e Milan-X), e em 16 de dezembro para os processadores da série AMD EPYC 9004 (Genoa, Genoa-X e Bergamo/Siena). Para corrigir a vulnerabilidade em sistemas que utilizam a certificação SEV-SNP, uma atualização adicional do firmware AMD SEV (fornecida junto com as atualizações de BIOS dos fabricantes de hardware) é necessária.
Além disso, foi relatada outra vulnerabilidade em processadores AMD que permite a execução de um ataque por canal lateral para extrair informações sobre cálculos em sistemas virtuais protegidos usando o mecanismo AMD SEV. O problema afeta as gerações 1-4 dos processadores AMD EPYC e está relacionado à possibilidade de extrair dados do cache do processador que se acumulam durante a operação de sistemas virtuais protegidos. O método Prime+Probe pode ser usado para analisar o conteúdo do cache, que envolve preencher o cache com um conjunto de valores de referência e determinar alterações medindo o tempo de acesso a esses valores ao serem preenchidos novamente. Nota-se que métodos previamente sugeridos para proteger contra ataques do tipo Spectre são adequados para bloquear esse ataque.
Fonte: opennet.ru
