BHI é uma nova vulnerabilidade da classe Spectre nos processadores Intel e ARM

Um grupo de pesquisadores da Vrije Universiteit Amsterdam identificou uma nova vulnerabilidade nas estruturas microarquiteturais dos processadores Intel e ARM, que é uma versão estendida da vulnerabilidade Spectre-v2, que permite contornar os mecanismos de proteção eIBRS e CSV2 adicionados aos processadores . A vulnerabilidade recebeu vários nomes: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) e Spectre-BHB (CVE-2022-23960), que descrevem diferentes manifestações de o mesmo problema (BHI - um ataque que afeta diferentes níveis de privilégios, por exemplo, o processo do usuário e o kernel, BHB - um ataque no mesmo nível de privilégio, por exemplo, eBPF JIT e o kernel).

Os pesquisadores demonstraram uma exploração funcional que permite que dados arbitrários sejam extraídos da memória do kernel do espaço do usuário. Por exemplo, é mostrado como, usando um exploit preparado, é possível extrair dos buffers do kernel uma string com um hash da senha do usuário root carregado do arquivo /etc/shadow. A exploração demonstra a possibilidade de explorar uma vulnerabilidade dentro de um nível de privilégio (ataque kernel a kernel) usando um programa eBPF carregado pelo usuário. Também é possível usar, em vez dos gadgets Spectre existentes no código do kernel, sequências de comandos que levam à execução especulativa de instruções.

A vulnerabilidade aparece na maioria dos processadores Intel atuais, com exceção dos processadores da família Atom. Entre os processadores ARM, Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 e possivelmente alguns chips Cortex-R são afetados pelo problema. Segundo pesquisas, a vulnerabilidade não aparece nos processadores AMD. Para eliminar o problema, vários métodos de software foram propostos para bloquear a vulnerabilidade, que podem ser usados ​​antes do aparecimento da proteção de hardware em futuros modelos de CPU.

Para bloquear ataques através do subsistema eBPF, é recomendado desabilitar por padrão a capacidade de usuários não privilegiados baixarem programas eBPF escrevendo 1 no arquivo “/proc/sys/kernel/unprivileged_bpf_disabled” ou executando o comando “sysctl -w kernel. unprivileged_bpf_disabled=1”. Para bloquear ataques de gadgets, é recomendado usar a instrução LFENCE em áreas do código que potencialmente levam à execução especulativa. Vale ressaltar que a configuração padrão da maioria das distribuições Linux já contém as medidas de proteção necessárias suficientes para bloquear o ataque eBPF demonstrado pelos pesquisadores. As recomendações da Intel para desabilitar o acesso sem privilégios ao eBPF também são o padrão desde o kernel Linux 5.16 e serão portadas para versões anteriores.

Conceitualmente, o BHI é uma versão estendida do ataque Spectre-v2, no qual, para contornar a proteção adicional (Intel eIBRS e Arm CSV2) e organizar o vazamento de dados, a substituição de valor é usada no Branch History Buffer, usado na CPU para aumentar a previsão ramificação de precisão, levando em consideração o histórico de transições passadas. Durante o ataque, por meio de manipulações com o histórico de transições, são criadas condições para previsão incorreta da transição e execução especulativa das instruções necessárias, cujo resultado vai para o cache.

Exceto pelo uso de um Branch History Buffer em vez de um Branch Target Buffer, o novo ataque é idêntico ao Spectre-v2. A tarefa do invasor é criar condições para que o endereço, ao realizar uma operação especulativa, seja retirado da área dos dados definidos. Depois de realizar um salto indireto especulativo, o endereço de salto lido da memória permanece no cache, após o qual um dos métodos para determinar o conteúdo do cache pode ser usado para recuperá-lo com base na análise das mudanças no tempo de acesso para cache e não cache dados.

Fonte: opennet.ru

Adicionar um comentário