Os processadores AMD Zen 5 estão suscetíveis a vulnerabilidades que permitem a modificação do microcódigo e a violação da isolação SEV-SNP.

A AMD incluiu os processadores baseados na microarquitetura Zen 5 na lista de produtos vulneráveis à vulnerabilidade EntrySign, que permite contornar o mecanismo de verificação de assinatura digital durante a atualização do microcódigo. Inicialmente, supunha-se que a vulnerabilidade afetava apenas os CPUs AMD das gerações 1-4 da microarquitetura Zen. Assim, a vulnerabilidade se mostrou aplicável a processadores como Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) e Ryzen 9000HX (Fire Range).

Além da atualização do microcódigo, para eliminar a vulnerabilidade em sistemas que utilizam a certificação SEV-SNP, também é necessária a atualização do firmware AMD SEV, que é fornecido com as atualizações de BIOS. A AMD afirma que enviou aos fabricantes de hardware um firmware modificado (ComboAM5PI 1.2.0.3c AGESA), necessário para resolver o problema, mas as atualizações de BIOS finais disponíveis para os consumidores podem ser lançadas pelos fabricantes semanas ou meses depois.

Funcionários da AMD também propuseram a inclusão de um patch no kernel do Linux que bloqueia o carregamento de atualizações de microcódigo não oficiais (observa-se que atualizações corretas de microcódigo devem ser instaladas junto com o BIOS do fabricante do hardware, mas já surgiram tentativas de criadores não oficiais de corrigir problemas com base em fragmentos de microcódigo retirados do BIOS). Os usuários são aconselhados a aguardar as atualizações oficiais de BIOS.

A vulnerabilidade oferecida pelo EntrySign que permite a modificação do microcódigo pode comprometer o mecanismo AMD SEV (Secure Encrypted Virtualization), usado em sistemas de virtualização para proteção máquinas virtuais contra interferência por parte do hypervisor ou do administrador do sistema host. Durante um ataque, é possível intervir nas operações de sistemas convidados protegidos por meio de extensões AMD SEV (Secure Encrypted Virtualization) e SEV-SNP (Secure Nested Paging), que garantem a integridade da memória das máquinas virtuais, isolam os registradores do processador e asseguram um funcionamento seguro com tabelas de páginas de memória aninhadas.

A vulnerabilidade é causada pelo uso de um processo de verificação do microcódigo do algoritmo de inserção de mensagens CMAC em vez de uma função hash confiável. A empresa AMD utiliza uma chave RSA privada para certificar digitalmente o microcódigo carregado no processador, e, na atualização do microcódigo, distribui a chave pública. Para verificar se a chave pública corresponde ao par original de chaves RSA, o processador realiza a comparação do hash da chave pública AMD, embutido durante a produção do CPU, com o hash da chave pública indicada no patch.

A autenticação do microcódigo no patch é feita comparando o hash fornecido com o patch, assinado digitalmente (RSASSA-PKCS1-v1_5), e o hash calculado com base no microcódigo realmente fornecido no patch. Se os hashes de referência e calculado coincidirem, o patch é carregado na memória interna do CPU. O problema é que, em vez de usar funções hash criptograficamente seguras recomendadas, foi utilizado o algoritmo CMAC, que não é projetado para essas operações e não é protegido contra ataques de colisão.

CMAC não é uma função hash, mas implementa uma inserção de mensagem (Message Authentication Code), dependente da chave de criptografia. O funcionamento do AES-CMAC envolve o uso do algoritmo criptográfico AES e a combinação do resultado de sua aplicação com o próximo bloco de dados usando a operação XOR. Este esquema garante que a alteração dos dados de entrada resultará em uma mudança imprevisível nos dados de saída. No entanto, o uso do CMAC como uma função hash é inaceitável, pois qualquer um que conheça a chave de criptografia original pode descobrir estados intermediários de criptografia e calcular valores que possam compensar a alteração nos dados de entrada, de forma que o resultado da aplicação do CMAC permaneça inalterado.

A AMD utiliza uma chave criptográfica única para AES-CMAC, fornecida em todas as CPUs, começando com a Zen 1. Assim, é suficiente extrair essa chave de qualquer CPU AMD e ela será aplicável a todas as outras CPUs. Os pesquisadores descobriram que, para a criptografia AES-CMAC, a AMD utilizou uma chave conhecida, retirada de um exemplo mencionado nas diretrizes para o uso de cifras de bloco NIST SP 800-38B. Como o AES-CMAC é usado para a hashing da chave RSA embutida em um patch e do conteúdo do microcódigo, ao determinar a chave de criptografia AES-CMAC, surgiu a possibilidade de substituir o patch por outra chave RSA pública e alterar o conteúdo do microcódigo.

Para criar um patch falso, basta gerar uma nova chave pública que produza o mesmo hash que a chave pública real da AMD, além de encontrar colisões para a assinatura digital. As colisões são formadas anexando ao microcódigo um bloco adicional que parece um conjunto de dados aleatórios. Da mesma forma, é possível preparar um patch modificado com o microcódigo correspondente à assinatura digital que autentica o patch original da AMD. O conjunto de ferramentas Zentool, que inclui utilitários para analisar microcódigos e criar patches para modificar microcódigos, está disponível sob a licença Apache 2.0. Para substituir o microcódigo, é necessário ter permissões para executar código em nível de anel zero de proteção (as tecnologias VT-x e AMD-V permitem que o sistema convidado execute com permissões Ring 0).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster