Há algumas semanas compartilhamos aqui no blog a novidade do Vulnerabilidade EntrySign que permite escapar do mecanismo de verificação de assinatura digital durante atualizações de microcódigo em processadores AMD.
Retirei Inicialmente parecia um bug limitado às gerações Zen 1 a Zen 4, Agora, ele se estende a chips tão atuais quanto o Ryzen 9000, EPYC 9005, Ryzen AI 300 e Ryzen 9000HX. Essa falha permite que, sob certas condições, o microcódigo da CPU seja modificado ignorando o mecanismo de verificação de assinatura digital, com sérias implicações para a segurança de sistemas virtualizados.
A raiz do problema está no uso inadequado do algoritmo CMAC durante o processo de validação do microcódigo. AMD tradicionalmente usa uma chave RSA privada para assinar digitalmente o conteúdo dessas atualizações, e uma chave pública incluída no patch para verificar a autenticidade do microcódigo no momento do carregamento. Entretanto, o hash da chave pública que deve garantir essa integridade é gerado usando AES-CMAC, um MAC criptográfico que, diferentemente de uma função de hash robusta, não oferece garantias contra colisões.
Este design, adicionado ao fato de que a AMD usou uma chave de criptografia comum para todas as suas CPUs desde o Zen 1, permitiu que os pesquisadores extraíssem a chave de qualquer processador afetado e reutilizá-lo para manipular patches de microcódigo em outros computadores. Surpreendentemente, esta chave corresponde a um exemplo público de práticas de criptografia do NIST SP 800-38B, demonstrando uso descuidado de boas práticas criptográficas.
Microcódigo falso, assinaturas válidas
Dessa fraqueza, a Os pesquisadores conseguiram gerar chaves públicas que produzem o mesmo hash que a chave original da AMD., que eles permitiu a construção de patches falsos capazes de contornar os controles de integridade. Essas colisões são obtidas pela inserção de blocos adicionais no final do microcódigo, aparentemente aleatórios, mas cuidadosamente calculados, permitindo que a assinatura digital permaneça aparentemente intacta. Dessa forma, o comportamento interno do processador pode ser alterado sem acionar mecanismos de alerta.
Este processo foi facilitado por ferramentas de análise como o Zentool, um conjunto de utilitários de código aberto que permite estudar o microcódigo da AMD e preparar patches modificados. Para que esse tipo de ataque se concretize, o invasor precisa ter privilégios de Ring 0, ou seja, acesso ao nível mais alto do sistema operacional, o que é viável em ambientes virtualizados caso o hipervisor esteja comprometido ou por meio de configurações inseguras de tecnologias como VT-x ou AMD-V.
Impacto no AMD SEV e na virtualização segura
Além da manipulação de microcódigo, o EntrySign representa uma ameaça direta ao AMD SEV (Secure Encrypted Virtualization) e sua extensão SEV-SNP (Secure Nested Paging), tecnologias projetadas para garantir a integridade e a confidencialidade das máquinas virtuais, mesmo diante de ataques do hipervisor ou do sistema host. Essa vulnerabilidade torna possível interferir em registros de processadores protegidos, modificar tabelas de páginas aninhadas e alterar o comportamento de sistemas convidados, comprometendo sua segurança em um nível profundo.
Medidas de resposta e mitigação da AMD
Nesta situação, A AMD começou a distribuir atualizações de microcódigo que corrigem o bug.ou, embora em sistemas que usam SEV-SNP também seja necessário atualizar o firmware do módulo SEV, o que requer uma atualização do BIOS. A empresa já enviou um novo pacote aos fabricantes chamado ComboAM5PI 1.2.0.3c AGESA, mas estima-se que os patches finais podem levar semanas ou até meses para estarem disponíveis para os usuários finais.
Além disso, o Engenheiros da AMD propuseram um patch para o kernel do Linux que bloqueia o carregamento de microcódigo. não oficial. Esta medida visa evitar a disseminação de patches modificados por terceiros, como aqueles criados por entusiastas a partir de fragmentos extraídos do BIOS. Enquanto isso, é altamente recomendável aguardar as atualizações oficiais do BIOS e evitar instalar versões não verificadas.
Finalmente, se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir