Mesmo com as mitigações ‘Spectre’ existentes, as CPUs Intel e AMD no Linux são vulneráveis a ataques Spectre.
As últimas gerações de processadores Intel, incluindo chips Xeon, e as microarquiteturas mais antigas da AMD no Linux são vulneráveis a novos ataques de execução especulativa que ignoram as mitigações ‘Spectre‘ existentes.
CPUs Intel e AMD no Linux são vulneráveis a ataques Spectre
As vulnerabilidades impactam as 12ª, 13ª e 14ª gerações de chips da Intel para consumidores e a 5ª e 6ª gerações de processadores Xeon para servidores, juntamente com os processadores Zen 1, Zen 1+ e Zen 2 da AMD.
Os ataques prejudicam a Indirect Branch Predictor Barrier (IBPB) em processadores x86, um mecanismo de defesa central contra ataques de execução especulativa.
A execução especulativa é um recurso de otimização de desempenho em CPUs modernas que executa instruções antes de saber se elas são necessárias para tarefas futuras, acelerando assim o processo quando a previsão está correta.
As instruções executadas com base na previsão incorreta são chamadas de transitórias e são esmagadas.
Este mecanismo tem sido uma fonte de riscos de canal lateral, como o Spectre, porque o processo de especulação chama dados sensíveis que podem ser recuperados do cache da CPU.
Novos ataques do tipo Spectre
Os pesquisadores Johannes Wikner e Kaveh Razavi da ETH Zurich explicam que, apesar do esforço de mitigação de vários anos para conter ataques do tipo Spectre, houve inúmeras variantes que ignoram as defesas existentes.
A contribuição deles é um ataque de processo cruzado (na Intel) e um ataque de PB-inception (na AMD) que permite sequestrar alvos de retorno especulativos mesmo após o IBPB ter sido aplicado, ignorando assim as proteções atuais e vazando informações sensíveis.
No primeiro caso, o ataque explora uma falha no microcódigo da Intel, onde o IBPB não invalida totalmente as previsões de retorno após uma troca de contexto.
O invasor manipula a execução especulativa de instruções de retorno, permitindo que previsões obsoletas vazem informações sensíveis, como o hash da senha root, de um processo suid.
Em processadores AMD, o IBPB-on-entry no kernel Linux é aplicado incorretamente, permitindo que o preditor de retorno retenha previsões obsoletas mesmo após o IBPB.
O invasor desvia o preditor de retorno antes que o IBPB seja acionado, sequestrando-o para vazar memória do kernel privilegiada após a barreira.
Previsões de retorno na Intel e AMD permanecem vulneráveis após o IBPB Fonte: ETH Zurich
Resposta e mitigações
Os pesquisadores informaram a Intel e a AMD sobre esses problemas em junho de 2024.
A Intel respondeu dizendo que já havia descoberto o problema internamente e atribuído a ele o identificador CVE-2023-38575.
A empresa lançou em março uma correção de microcódigo disponível por meio de uma atualização de firmware, mas os pesquisadores observam que o código não atingiu todos os sistemas operacionais, Ubuntu está entre eles.
A AMD também confirmou a vulnerabilidade e disse que a falha já havia sido documentada e rastreada como CVE-2022-23824. Vale a pena notar que o aviso da AMD inclui produtos Zen 3 como afetados, que não estão listados no artigo da ETH Zurich.
No entanto, a AMD classifica o problema como um bug de software, não uma falha de hardware. As arquiteturas mais antigas afetadas e o fato de a AMD ter descoberto o bug há muito tempo podem explicar a decisão da empresa de não emitir microcódigo corretivo.
Embora os dois fornecedores de CPU soubessem sobre o desvio do Spectre, as empresas os marcaram nos avisos como tendo um impacto potencial.
Com seu trabalho, os pesquisadores da ETH Zurich conseguiram demonstrar que o ataque funciona até mesmo no kernel Linux 6.5, que vem com defesas IBPB-on-entry que são consideradas as mais fortes contra a exploração do Spctre.
A equipe da ETH Zurich está trabalhando com os mantenedores do kernel Linux para desenvolver um patch para processadores AMD, que estará disponível aqui quando estiver pronto.