Tavis Ormandy, pesquisador do Google Information Security, anunciou hoje uma nova vulnerabilidade que descobriu nos processadores AMD Zen 2. A vulnerabilidade Zenbleed cobre toda a gama de chips Zen 2 e permite o roubo de informações protegidas, incluindo chaves de criptografia e logins de usuários. O ataque não requer acesso físico ao computador e pode até ser realizado por meio de um script JS malicioso em uma página da web.
Ormandy relatou esse problema à AMD em 15 de maio de 2023. Segundo ele, a AMD já lançou patches para sistemas vulneráveis, mas os especialistas ainda não confirmaram a presença das correções necessárias no último firmware lançado. Também não há avisos de segurança da AMD detalhando o problema. A empresa prometeu publicar esta informação ainda hoje, mas ainda não se pronunciou sobre o estado das correções.
A vulnerabilidade foi arquivada como CVE-2023-20593 e permite que os dados sejam roubados a uma taxa de 30 KB por núcleo por segundo, o que fornece largura de banda suficiente para roubar informações confidenciais que passam pelo processador. Esse ataque funciona em todos os softwares executados na CPU, incluindo máquinas virtuais, sandboxes, contêineres e processos. A capacidade desse ataque de ler dados entre máquinas virtuais é especialmente perigosa para provedores e usuários de serviços em nuvem.
De acordo com Ormandy, todos os processadores Zen 2 são afetados, incluindo o servidor EPYC Rome:
- Processadores AMD Ryzen 3000;
- Processadores AMD Ryzen PRO 3000;
- Processadores AMD Ryzen Threadripper 3000;
- Processadores AMD Ryzen 4000 com gráficos Radeon;
- Processadores AMD Ryzen PRO 4000;
- Processadores AMD Ryzen 5000 com gráficos Radeon;
- Processadores AMD Ryzen 7020 com gráficos Radeon;
- Processadores AMD EPYC Roma.
O ataque pode ser realizado executando código arbitrário não privilegiado. Ormandy publicou o repositório de pesquisa de segurança e o código de exploração. O ataque utiliza a função de otimizar a fusão do registro XMM com sua posterior renomeação. Como resultado, ocorre um erro de previsão vzeroupper. As operações básicas, como strlen, memcpy e strcmp, usarão registros de vetor, para que um invasor possa rastrear com eficiência essas operações que ocorrem em qualquer lugar do sistema, seja em outras VMs, sandboxes, contêineres ou processos.
«Isso funciona porque o arquivo de registro é compartilhado por todos no mesmo núcleo físico. Na verdade, dois hyperthreads usam até mesmo o mesmo arquivo de registro físico”, diz Ormandy. Ele explicou que o bug pode ser corrigido com patches, mas isso pode levar à degradação do desempenho, então Ormandy recomenda atualizar o microcódigo. A disponibilidade de firmware atualizado ainda não foi confirmada oficialmente.