Novo ataque ignora defesas de hardware para falha Spectre em CPUs Intel e ARM

As mitigações baseadas em hardware introduzidas nas CPUs Intel e ARM nos últimos anos para corrigir uma falha séria chamada Spectre não são tão fortes quanto se acredita.

Os pesquisadores criaram um novo método de ataque que pode derrotar as defesas, mas a exploração não é tão fácil quanto com a falha original.

O novo ataque, descoberto por pesquisadores do Grupo de Segurança de Sistemas e Redes da VU Amsterdam (VUSec) é chamado Spectre-BHI, para Branch History Injection, ou Spectre-BHB, para Branch History Buffer, porque Intel e ARM atribuíram nomes diferentes a ele. . De acordo com a equipe de pesquisa, é uma extensão do ataque Spectre versão 2 de 2017, também conhecido como Spectre-BTI (Branch Target Injection) e, semelhante ao Spectre v2, pode resultar no vazamento de informações confidenciais do espaço de memória do kernel privilegiado .

A exploração de prova de conceito criada pelos pesquisadores do VUSec vaza o hash da senha de root do arquivo /etc/shadow usando uma conta sem privilégios. O arquivo /etc/shadow é um arquivo de sistema no Linux que só pode ser acessado pela conta administrativa raiz. Essencialmente, a exploração força o kernel a carregar o arquivo na memória, onde normalmente estaria protegido do acesso por processos não privilegiados, mas aproveita o ataque Spectre-BHI para acessar e vazar seu conteúdo. Essa é uma grande violação de segurança do limite de segurança fundamental em sistemas operacionais modernos que separa aplicativos de modo de usuário e espaço de memória do espaço de memória do kernel privilegiado.

O que é Spectre?

Spectre é uma classe de vulnerabilidades de segurança, originalmente divulgada em janeiro de 2017, que decorre de um recurso relacionado ao desempenho de CPUs modernas chamado execução especulativa, em que a CPU tenta prever antecipadamente qual caminho a execução de um programa seguirá quando atingir uma ramificação condicional e executar instruções nesse caminho com antecedência. Se a previsão, que é baseada em algoritmos internos, for ruim, os resultados armazenados em caches temporários da CPU são descartados. Ataques de execução especulativa como o Spectre e muitos outros que se seguiram, enganam esse mecanismo para vazar informações de caches temporários que atuam como canais secundários.

“Nos dias em que o Spectre foi encontrado, você poderia facilmente explorar Branch Target Injection (BTI ou Spectre-v2), a variante Spectre mais perigosa, em todos os níveis de privilégio”, explicam os pesquisadores do VUSec. “Por exemplo, um invasor de userland sem privilégios pode alimentar qualquer alvo de branch para o preditor de branch indireto do userland e enganar o kernel para saltar especulativamente para o local do código de destino injetado e executar o código encontrado lá.”

Para mitigar o risco, fornecedores de software como o Google e os desenvolvedores do kernel Linux criaram soluções baseadas em software, como o retpoline. Embora fossem eficazes, eles introduziram um impacto significativo no desempenho, de modo que os fornecedores de CPU desenvolveram posteriormente defesas baseadas em hardware. O da Intel é chamado de EIBRS e o do ARM é chamado de CSV2.

“Essas soluções são complexas – leia o artigo para saber mais sobre elas – mas a essência delas é que o preditor ‘de alguma forma’ acompanha o nível de privilégio (usuário/kernel) no qual um alvo é executado”, explicam os pesquisadores do VUSec. . “E, como você pode esperar, se o alvo pertencer a um nível de privilégio mais baixo, a execução do kernel não o usará (ou seja, não haverá mais locais de código arbitrários fornecidos pelo invasor para seqüestrar especulativamente o fluxo de controle do kernel).”

O problema, no entanto, é que o preditor da CPU depende de um histórico global para selecionar as entradas de destino a serem executadas especulativamente e, como os pesquisadores do VUSec provaram, esse histórico global pode ser envenenado. Em outras palavras, enquanto o Spectre v2 original permitia que os invasores injetassem locais de código de destino e enganassem o kernel para executar esse código, o novo ataque Spectre-BHI/BHB só pode forçar o kernel a prever incorretamente e executar gadgets de código ou trechos interessantes que já existem no histórico e foram executados no passado, mas que podem vazar dados.

“O Intel eIBRS e o Arm CSV2 estão quebrados? Mais ou menos”, disseram os pesquisadores. “Ou seja, as mitigações funcionam como pretendido, mas a superfície de ataque residual é muito mais significativa do que os fornecedores originalmente presumiam. limites.”

Atenuando a nova vulnerabilidade Spectre-BHI

A Intel rastreia a nova vulnerabilidade Spectre-BHI como CVE-2022-0001, para a variação de privilégio cruzado e CVE-2022-0002 para a variação de mesmo privilégio. O ARM o rastreia como CVE-2022-23960 para ambas as variações.

De acordo com a Intel , a maioria dos processadores da empresa são afetados, além dos da família Atom. Para ARM, as CPUs vulneráveis ​​são Cortex-A15, Cortex-A57, Cortex-A72, Cortex-A73, Cortex-A75, Cortex-A76, Cortex-A76AE, Cortex-A77, Cortex-A78, Cortex-A78AE, Cortex-A78C , Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2 e Neoverse V1.

Ambas as empresas lançaram avisos e disponibilizarão mitigações de software por enquanto. O ARM tem cinco mitigações diferentes , dependendo do sistema.

Para sua exploração do Linux, os pesquisadores do VUSec abusaram do eBPF, uma tecnologia disponível desde o kernel 4.4 que pode executar programas em sandbox em um kernel do sistema operacional. Embora o eBPF não faça parte do problema subjacente e outros gadgets de código possam vazar dados, a presença de eBPF sem privilégios “facilita tremendamente a execução especulativa (e outros) ataques”, de acordo com os pesquisadores. É por isso que eles recomendam desativá-lo e algumas distribuições Linux começaram a desativá-lo por padrão.

Fonte: https://www.csoonline.com/