O mais recente de uma longa série de bugs de segurança para CPUs, o Zenbleed é mais uma coisa que precisa ser corrigida. Aqui está o que você precisa saber.
Depois que as explorações de CPU Spectre e Meltdown foram divulgadas em 2018, o mundo da computação tem estado bastante vigilante sobre encontrar bugs e brechas de segurança em processadores e, nos últimos cinco anos, os pesquisadores encontraram uma tonelada. Em 24 de julho, mais uma exploração foi divulgada publicamente após ter sido relatada pela primeira vez em maio. Desta vez, é específico para processadores AMD construídos na arquitetura Zen 2 e é apelidado de “Sangramento Zen". Aqui está tudo o que você precisa saber sobre o Zenbleed e o que ele significa para o mundo.
Como funciona o Zenbleed?
O Zenbleed é muito semelhante a outros bugs de segurança baseados em hardware, como o Spectre, no sentido de que explora a capacidade especulativa das CPUs. Para melhorar o desempenho, as CPUs especular ou prever a próxima coisa que precisam fazer, e desde que o Spectre foi divulgado pela primeira vez, o mundo aprendeu que a especulação pode ser muito insegura se for feita indevidamente.
Os registros em uma CPU podem conter uma pequena quantidade de dados, normalmente uma instrução, um endereço de armazenamento ou qualquer outro tipo de dados pequenos. Os registros XMM em uma arquitetura x86_64 (ou seja, qualquer um dos processadores Zen 2 afetados) só podem ser usados para fazer cálculos em dados, não para endereçar memória. Isso é estendido para 256 bits no caso dos registradores YMM e 512 bits nos registradores ZMM. Neste caso, XMM refere-se aos 128 bits inferiores do total 512 bits dos registradores ZMM.
Esses registradores são incrivelmente úteis para muitas coisas diferentes, incluindo funções C padrão. A vulnerabilidade abusa da execução especulativa e de previsões errôneas para essencialmente cuspir um dado aleatório da memória, mas esses dados podem ser de qualquer coisa. Funções padrão da biblioteca C como strlen, que mede o comprimento de uma string, podem usar esses registros para mover dados por aí, e é possível que, por acaso, uma senha que você usa tenha caído em um desses registros.
A previsão de ramificação e a execução especulativa referem-se amplamente a quando o computador executa operações que ainda não são necessárias, mas que provavelmente serão necessárias em ciclos subsequentes. Isso geralmente é feito em momentos em que o sistema tem recursos livres, pois acelera o processamento geral quando as instruções ou dados ainda não estariam prontos para a CPU. Se o trabalho realizado não for necessário, ele normalmente é descartado e o processador pode voltar para onde precisa para executar a próxima instrução correta. Quando isso acontece, isso é chamado de erro de previsão de ramificação.
O problema surge na instrução vzeroupper, que zera os bits na posição 128 e superiores dos registradores YMM e ZMM. Isso é feito principalmente durante a transição entre o AVX e o código SSE legado, pois elimina o desempenho penalidades causadas por falsas dependências, ao mesmo tempo que evita um efeito semelhante à promoção de inteiros em C.
Se o processador executar especulativamente uma instrução vzeroupper, não haverá reversão adequada. No entanto, os processadores Ryzen afetados podem ser forçados a se recuperar, embora de forma incorreta. Uma vez nesse estado, o programa atualmente em execução pode espionar esses registros em tempo real, visualizando os dados que fluem por todo o sistema a qualquer momento.
Quais CPUs são afetadas pelo Zenbleed e quando os patches estarão disponíveis?
Como afirmado anteriormente, apenas CPUs AMD baseadas na arquitetura Zen 2 são conhecidas por serem vulneráveis ao bug de segurança Zenbleed, mas a arquitetura Zen 2 alimentou CPUs em três séries, tornando complicado descobrir quais CPUs são vulneráveis e quais não são. Aqui está uma tabela que deve deixar tudo claro:
CPUs impactadas | |
---|---|
Série Ryzen 3000 |
Todos, exceto APUs (por exemplo, Ryzen 3 3200G) |
Roma épica |
Todos |
Série Ryzen 4000 |
Todos |
Série Ryzen 5000 |
Somente 5300U, 5500U e 5700U |
Série Ryzen 7000 |
Apenas 7020 APUs (por exemplo, Ryzen 3 7320U) |
Esta é uma quantidade bastante grande de processadores AMD, e estes são apenas os que foram confirmados até agora. Zen 2 também é usado nas APUs que alimentam o Steam Deck, Xbox Series S e X e PS5. Não ouvimos de qualquer forma se essas CPUs também foram afetadas, mas a julgar pela forma como essa exploração funciona, eu ficaria surpreso se elas também não fossem afetadas. Parece improvável que a AMD tenha corrigido isso no Xbox e PS5, já que os chips da série 7020, que são mais recentes, também foram afetados.
No momento em que escrevo, o microcódigo foi enviado ao kernel do Linux que corrigirá esta vulnerabilidade, e seu sistema operacional ou BIOS pode já ter uma atualização que corrige esse problema.
O que isso significa para computadores que usam CPUs vulneráveis?
É difícil responder a isso porque nem todos os computadores são iguais. Para pessoas normais que usam apenas desktops e laptops para jogos, você provavelmente não precisa se preocupar tanto. Esta é uma exploração bastante sofisticada e, embora seja de conhecimento público agora, ainda não há exemplos conhecidos de um invasor usando o Zenbleed para invadir qualquer coisa.
No entanto, os riscos são muito maiores para os datacenters e para pessoas importantes que lidam com informações confidenciais em seus próprios computadores. Há uma razão pela qual a AMD deixou bem claro que o Epyc Rome foi corrigido antes que a vulnerabilidade se tornasse pública: muitos dados confidenciais as informações estão sendo tratadas por CPUs Epyc, e seria um desastre se qualquer CPU alimentando servidores de grande escala fosse bem-sucedida atacado. Kernel Linux 6.4.6 já foi lançado e corrige essa vulnerabilidade rolando no patch de microcódigo oficial da AMD. Parece provável que a Microsoft incorpore algo semelhante ao Windows.
Preocupantemente, Os patches oficiais do BIOS da AMD podem demorar vários meses, nesse caso, há um "pedaço de frango" que você pode definir se estiver em uma máquina Linux ou FreeBSD. Em máquinas Linux, você pode usar msr-tools e executar o seguinte comando.
wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))
No FreeBSD, você também pode usar o seguinte.
cpucontrol(8)
Desativar o SMT não é suficiente para mitigar a vulnerabilidade.
Uma coisa que torna o Zenbleed particularmente ruim é que o Zen 2 era uma das arquiteturas de CPU mais populares da AMD. Isso deu início ao retorno da AMD em 2019 e 2020, e muitas pessoas, empresas e organizações ainda usam computadores com processadores Zen 2 em 2023, especialmente Epyc Rome CPUs. Isso não é tão ruim quanto Spectre (que afeta praticamente todas as CPUs anteriores a 2019) e Meltdown (que afeta praticamente todas as CPUs Intel anteriores a 2019), mas ainda é bastante difundido.
Patches de segurança para vulnerabilidades como essa também resultam frequentemente em penalidades de desempenho, mas AMD disse Ferragens do Tom que esta penalidade dependerá da CPU e da carga de trabalho. A especulação e a previsão têm sido muito importantes para o desempenho da CPU, por isso não está claro se qualquer correção potencial causará uma redução significativa no desempenho.