A vulnerabilidade GhostWrite, recentemente descoberta, afeta a CPU RISC-V, especificamente o modelo XuanTie C910. Esta vulnerabilidade tem implicações significativas para a segurança e o desempenho, com a mitigação resultando em uma queda de desempenho de aproximadamente 77%.
A vulnerabilidade GhostWrite
A vulnerabilidade GhostWrite permite que atacantes não privilegiados leiam/escrevam em qualquer parte da memória do computador e controlem dispositivos periféricos, como adaptadores de rede. A vulnerabilidade reside na forma como certos processadores RISC-V gerenciam o acesso à memória a partir da CPU. Em circunstâncias normais, verificações de segurança e extensões impediriam um processo de acessar partes da memória física que não são essenciais para sua operação. No entanto, com o GhostWrite, um processo malicioso poderia manipular a tabela de memória virtual para alternar o acesso a endereços de memória física específicos sem ser detectado.
Os pesquisadores do CISPA Helmholtz Center for Information Security, que descobriram a vulnerabilidade, afirmam que a única maneira de resolver a vulnerabilidade GhostWrite é desativando a extensão vetorial da CPU. Isso impacta negativamente o desempenho, com os pesquisadores estimando a sobrecarga em cerca de 77% para desativar o suporte à extensão vetorial RISC-V para mitigar o GhostWrite.
Lemos o relatório em PDF, veja os principais pontos da descoberta
A arquitetura de conjunto de instruções RISC-V, aberta e extensível, marca um avanço significativo na indústria de CPUs, permitindo que novos fornecedores entrem no mercado de CPUs. No entanto, a flexibilidade do RISC-V resultou em uma gama diversificada de implementações de hardware, que diferem em recursos e medidas de segurança. Atualmente, não existe uma abordagem automatizada para avaliar a segurança dessas implementações.
Lista com os principais pontos do relatório
- RISCVuzz: Neste contexto, foi introduzido um novo framework, o RISCVuzz, que aproveita a diversidade de implementações RISC-V para detectar automaticamente vulnerabilidades em CPUs de hardware sem a necessidade de código-fonte ou emuladores. O RISCVuzz usa uma abordagem de fuzzing de CPU diferencial para comparar comportamentos arquitetônicos entre diferentes fornecedores e modelos de CPU.
- Avaliação do RISCVuzz: O RISCVuzz foi avaliado usando todos os 5 CPUs RISC-V de grau de consumo atualmente disponíveis e identificou 3 vulnerabilidades de segurança graves, além de inúmeros bugs. Notavelmente, o RISCVuzz identifica o GhostWrite, uma sequência de instruções não privilegiada para escrever bytes controlados pelo invasor em locais de memória física escolhidos pelo invasor, incluindo dispositivos conectados.
- Ataques de ponta a ponta: Em 3 ataques de ponta a ponta, foi demonstrado como o GhostWrite pode ser transformado para ler a memória física e levar à execução de código de modo de máquina arbitrário, mesmo em ambientes de nuvem.
- Suporte RISC-V: O RISC-V ainda é uma arquitetura de conjunto de instruções (ISA) jovem. No entanto, há um suporte considerável para esta ISA: O kernel Linux suporta CPUs RISC-V no código upstream, e os principais compiladores, como GCC e Clang, suportam RISC-V. Além disso, as principais distribuições Linux suportam a arquitetura RISC-V, por exemplo, Ubuntu e Debian.
- Vulnerabilidades da CPU: Enquanto os ataques de canal lateral baseados em software são conhecidos há décadas, os anos recentes provaram que existem vulnerabilidades de CPU mais críticas. Uma classe proeminente de ataques são os ataques de execução transitória, que abusam das otimizações de desempenho das CPUs modernas, como a execução fora de ordem e especulativa.
- Metodologia: A metodologia do trabalho envolve a introdução da ideia principal, a descrição dos desafios e a introdução dos alvos de fuzzing usados no restante do trabalho. A ideia principal se baseia na suposição básica de que o resultado arquitetônico de cada instrução deve ser o mesmo em diferentes CPUs. Esta suposição garante que diferentes CPUs tenham que aderir à especificação da ISA. No entanto, esta suposição só é válida para instruções suportadas em todas as CPUs testadas. Assim, qualquer efeito arquitetônico que difira entre CPUs é considerado uma anomalia de instrução que deve ser investigada mais a fundo, excluindo instruções suportadas apenas em uma CPU. Essas anomalias de instrução provavelmente se devem a um bug, ou pior, a uma vulnerabilidade de segurança na CPU.
- Desafios: Enquanto a ideia de teste diferencial de CPU (ou fuzzing) é bastante intuitiva, identificamos vários desafios tanto no design quanto na implementação. Conceitualmente, existem os seguintes 3 desafios: Geração de Sequência, Efeitos Não Determinísticos e Integridade do Framework de Teste.
- Alvos de Fuzzing: Embora o número de núcleos RISC-V de silício ainda seja limitado, testamos todos os núcleos RISC-V de 64 bits comercialmente disponíveis que suportam a inicialização de uma distribuição Linux. No momento da escrita, existem 2 fabricantes de CPUs RISC-V de silício – SiFive e T-Head Semiconductors. Testamos em 2 modelos de CPU SiFive e 3 modelos de CPU T-Head conforme listado na Tabela I. Todos os CPUs testados estão montados em computadores de placa única. Foi usado o C910 na nuvem Scaleway. Os alvos executam vários sistemas operacionais, como Ubuntu ou Debian.
Conclusão
A descoberta da vulnerabilidade GhostWrite em CPUs RISC-V destaca a importância da segurança no design de hardware. Embora a mitigação seja possível, ela vem com um custo significativo para o desempenho. Se você tiver interesse, o relatório em PDF é público e pode ser acessado normalmente, ele contém 16 páginas. Desta forma acesse aqui.