Um grupo de pesquisadores da Vrije Universiteit Amsterdam descobriu um novo método de ataque chamado "Native BHI" (CVE-2024-2201) que permite determinar o conteúdo da memória do kernel em sistemas com processadores Intel. Linux Ao executar um exploit no espaço do usuário, se o ataque for aplicado a sistemas de virtualização, um atacante do sistema convidado pode determinar o conteúdo da memória do ambiente do host ou de outros sistemas convidados.
O método Native BHI oferece uma técnica diferente para explorar a vulnerabilidade BHI (Branch History Injection, CVE-2022-0001), que ignora métodos de proteção implementados anteriormente. O método de ataque BHI proposto em 2022 envolvia a exploração de uma vulnerabilidade dentro de um único nível de privilégio, para o qual a exploração se baseava na execução de um programa eBPF carregado pelo usuário no kernel. Para bloquear a vulnerabilidade, bastava restringir o acesso à execução do código eBPF para usuários comuns.
O novo método Native BHI não requer acesso ao eBPF e permite um ataque por um usuário sem privilégios a partir do espaço do usuário. O método é baseado na execução de gadgets existentes no código do kernel - sequências de comandos que levam à execução especulativa de instruções. Para procurar gadgets adequados no kernel, foi desenvolvido um kit de ferramentas especial InSpectre Gadget, que, ao analisar o kernel 6.6-rc4, identificou 1511 gadgets Spectre e 2105 gadgets de despacho auxiliares.

Com base nos gadgets encontrados, os pesquisadores prepararam um exploit que permite extrair dos buffers do kernel uma string com um hash da senha do usuário root, carregada do arquivo /etc/shadow. A velocidade de recuperação de dados da memória do kernel é de aproximadamente 3.5 KB por segundo.

O método BHI é uma versão estendida do ataque Spectre-v2, no qual, para contornar a proteção adicional (Intel eIBRS e Arm CSV2) e causar vazamento de dados, a substituição de valor é usada no Branch History Buffer, usado na CPU para melhorar 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.
As diferenças em relação ao ataque Spectre-v2 se resumem ao uso de um Branch History Buffer em vez de um Branch Target Buffer. Para extrair dados da memória, o invasor deve criar condições sob as quais, ao realizar uma operação especulativa, o endereço seja retirado da área que precisa ser determinada. 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.
O uso das instruções Intel IBT (Indirect Branch Tracking) e sua implementação no kernel não oferecem proteção contra ataques Native BHI. Linux O FineIBT, um mecanismo híbrido de proteção do fluxo de execução, combina instruções IBT de hardware com a proteção de software kCFI (Integridade do Fluxo de Controle do Kernel) para evitar violações do fluxo de execução normal (fluxo de controle). O FineIBT permite a execução por meio de um salto indireto somente se o salto for para a instrução ENDBR, que está localizada no início da função. Além disso (de forma semelhante ao mecanismo kCFI), uma verificação de hash é realizada posteriormente, garantindo a imutabilidade do ponteiro.
Para se proteger contra uma nova variante do ataque ao kernel. Linux Foi adicionada uma alteração para implementar um modo de proteção adicional que utiliza a proteção de hardware proposta pela Intel (BHI_DIS_S) ou uma proteção de software alternativa implementada para proteger o hipervisor. KVMOs desenvolvedores do hipervisor Xen também lançaram uma correção baseada no modo BHI_DIS_S, que limita as previsões baseadas no histórico de ramificações. O suporte a BHI_DIS_S está disponível em processadores a partir do Intel Alder Lake, bem como em CPUs de servidor a partir do Intel Sapphire Rapids. Um modo de proteção por software baseado no uso de sequências para limpar o buffer do histórico de ramificações também está disponível, mas resulta em uma perda de desempenho mais perceptível.
Fonte: opennet.ru
