Mesmo sendo considerados imunes a esse tipo de vulnerabilidade, foi encontrada uma nova falha Meltdown nos chips AMD baseados em Zen+/Zen2.
Há poucos dias, um grupo de pesquisadores da Universidade Técnica de Dresden anunciou que identificou uma vulnerabilidade (CVE-2020-12965) que permite um ataque da classe Meltdown aos processadores AMD baseados em Zen + e Zen 2.
Encontrada uma nova falha Meltdown nos chips AMD baseados em Zen+/Zen2
Sim. Foi encontrada uma nova falha Meltdown nos chips AMD baseados em Zen+/Zen2. Inicialmente, foi assumido que os processadores AMD Zen+ e Zen 2 não são suscetíveis à vulnerabilidade Meltdown, mas os pesquisadores identificaram um recurso que leva ao acesso especulativo a áreas de memória protegidas ao usar endereços virtuais não canônicos.
Os pesquisadores mencionam que a arquitetura AMD64 envolve usar apenas os primeiros 48 bits do endereço virtual e ignorar os 16 bits restantes e com isso foi especificado que os bits 48 a 63 devem sempre copiar o valor do bit 47.
Ou seja, se essa condição for violada e for feita uma tentativa de endereçar o endereço com valores arbitrários dos bits superiores, o processador gera uma exceção. O preenchimento repetido dos bits superiores leva à divisão do espaço de endereço disponível em dois blocos.
“Os endereços que se encaixam nos blocos especificados são chamados de canônicos e os endereços inválidos com conteúdo de bit superior arbitrário são chamados de não canônicos. O intervalo inferior de endereços canônicos, como regra, é alocado para dados de processo, e o intervalo superior é usado para dados de kernel (o acesso a endereços especificados do espaço do usuário é bloqueado no nível de separação de privilégios).”
A clássica vulnerabilidade Meltdown baseia-se no fato de que durante a execução especulativa de instruções, o processador pode acessar uma área privada de dados e, em seguida, descartar o resultado, uma vez que os privilégios estabelecidos proíbem tal acesso do processo do usuário.
“No programa, o bloco executado especulativamente é separado do código principal por um desvio condicional, que em condições reais sempre dispara, mas devido ao fato de que a declaração condicional usa um valor calculado que o processador não conhece durante a execução antecipada de o código, a execução especulativa de todas as opções de ramificação ocorre.”
Como as operações especulativas usam o mesmo cache das instruções executadas normalmente, é possível, durante a execução especulativa, armazenar marcadores em cache que refletem o conteúdo de bits individuais em uma área de memória fechada e, em seguida, em código executado normalmente, determinar seu valor por meio de acessos de análise de tempo armazenados em cache e dados não armazenados em cache.
A peculiaridade da nova vulnerabilidade que afeta os processadores AMD Zen>+ e Zen 2, é que as CPUs permitem a execução especulativa de operações de leitura e gravação que acessam a memória usando endereços não canônicos inválidos, simplesmente ignorando os 16 bits superiores.
“Portanto, no processo de execução de código especulativo, o processador sempre usa apenas os 48 bits inferiores e a validação do endereço é feita separadamente. Se, ao traduzir um endereço virtual não canônico para um endereço físico no buffer de tradução associativa (TLB), se a parte canônica do endereço corresponder, a operação de carregamento especulativo retornará um valor independentemente do conteúdo dos 16 bits superiores, permitindo você para contornar o compartilhamento de memória entre threads. Posteriormente, a operação será invalidada e descartada, mas o acesso à memória será realizado e os dados serão armazenados em cache.”
Durante o experimento, usando a técnica de detecção de conteúdo de cache FLUSH + RELOAD, os pesquisadores conseguiram organizar um canal para a transmissão de dados ocultos a uma taxa de 125 bytes por segundo.
As mesmas técnicas que ajudam a bloquear ataques Meltdown, como usar as instruções LFENCE, podem ser usadas para se defender contra o novo ataque.
Ao mesmo tempo, os pesquisadores observam que, em comparação com os processadores Intel, a arquitetura dos processadores AMD limita a possibilidade de ataques reais, mas não impede o uso de um novo método em combinação com outros ataques de microarquitetura para aumentar sua eficácia.
Em particular, a opção de ataque proposta não permite determinar o conteúdo das áreas de memória do kernel e outros processos, mas está limitada à capacidade de obter acesso a outros threads do mesmo programa que estão sendo executados no mesmo espaço de memória virtual.