Um grupo de pesquisadores VUSec da Universidade Vrije de Amsterdã, especializados em segurança de sistemas e redes, descobriu um novo tipo de ataque de canal lateral chamado SLAM (Spectre over LAM). Este ataque de temporização explora recursos de hardware projetados para melhorar a segurança dos processadores Intel, AMD e Arm atuais e futuros para obter um hash da senha do administrador da memória do kernel.
SLAM usa funções de memória que permitem ao software acessar os bits não traduzidos em endereços lineares de 64 bits para armazenar metadados. Os fabricantes de processadores implementam esse recurso de maneiras diferentes e usam termos diferentes para se referir a ele. A Intel o chama de Linear Address Masking (LAM), a AMD o chama de High Address Ignoring (UAI) e a Arm o chama de High Byte Ignoring (TBI).
Independentemente do nome dado pelo fabricante do processador, LAM, UAI ou TBI são projetados para acelerar a segurança da memória física e o gerenciamento de RAM pela CPU. De acordo com a Intel, LAM é uma extensão que permite ao software encontrar metadados em ponteiros de dados e desreferencia-los sem ter que mascarar os bits de metadados. O ataque SLAM tem como alvo chips modernos, usando certos níveis de paginação de memória (“paginação”) e métodos para controlar a alocação de memória física do sistema usada em novos processadores.
O SLAM depende de um recurso de memória nesses processadores que permite ao software armazenar bits não traduzidos em endereços lineares de 64 bits nos metadados do kernel. Durante o ataque, é criado um novo processo de execução temporário que examina um conjunto de instruções desmascaradas, chamadas “gadgets” no código do programa. Um invasor precisaria usar o código do sistema de destino que se comunica com esses gadgets e, em seguida, aplicar um conjunto de algoritmos para extrair informações confidenciais, como senhas de administrador e outras chaves de criptografia, da memória do kernel.
Os pesquisadores observaram que o método de direcionar gadgets não ocultados é comum ao software e, portanto, é comumente usado para obter dados arbitrários do kernel. O que diferencia esse ataque é que os processadores modernos não possuem verificações rigorosas de canonicidade nos novos níveis de paginação e o desvio de segurança ocorre no nível do processador.
Um ataque SLAM bem-sucedido foi demonstrado por pesquisadores em um sistema baseado no processador Intel Core i9-13900K executando o kernel Linux 6.3.0. Uma tentativa de explorar a vulnerabilidade em um sistema com processador AMD Ryzen 7 2700X também teve sucesso. Os pesquisadores da VUSec afirmam que muitos outros processadores atuais e futuros dos três fabricantes globais não estão protegidos contra o ataque SLAM:
- Processadores AMD existentes com vulnerabilidade CVE-2020-12965 identificada;
- Futuros processadores Intel Sierra Forest, Grand Ridge, Arrow Lake e Lunar Lake com suporte LAM (paginação de memória de 4 e 5 níveis);
- Futuros processadores AMD com suporte UAI e paginação de memória de 5 níveis;
- Processadores Future Arm com suporte TBI e paginação de memória de 5 níveis.
Esta exploração é atualmente independente do processador, mas só é aplicável em várias versões do Linux que já possuem um patch temporário para desabilitar o LAM. Arm não vê necessidade de tomar mais medidas contra o SLAM. A AMD afirma que suas medidas de mitigação anteriores contra a vulnerabilidade Spectre V2 também protegem contra ataques SLAM. A Intel recomenda que seus clientes implantem o recurso usando a extensão Linear Address Space Sharing (LASS) para evitar qualquer acesso ao kernel.
Esta é a segunda exploração de hardware descoberta esta semana que ignora os conjuntos de instruções de segurança da CPU. Os especialistas da VUSec postaram o código e os dados para reproduzir ataques SLAM em seu repositório GitHub. Só podemos esperar que os fabricantes de processadores consigam evitar tais falhas de segurança ao projetar chips de próxima geração.