Pesquisadores da Universidade Livre de Amsterdã tornado conhecido recentemente encontrou um nova vulnerabilidade que é uma versão estendida da vulnerabilidade Spectre-v2 em processadores Intel e ARM.
Essa nova vulnerabilidade, à qual ter batizado como BHI (Injeção de Histórico de Filial, CVE-2022-0001), BHB (Buffer de Histórico de Filial, CVE-2022-0002) e Spectre-BHB (CVE-2022-23960), caracteriza-se por permitir burlar os mecanismos de proteção eIBRS e CSV2 adicionados aos processadores.
A vulnerabilidade é descrita em diferentes manifestações do mesmo problema, pois BHI é um ataque que afeta diferentes níveis de privilégio, por exemplo, um processo de usuário e o kernel, enquanto BHB é um ataque no mesmo nível de privilégio, por exemplo, eBPF JIT e o núcleo.
Sobre vulnerabilidade
Conceitualmente, BHI é uma variante estendida do ataque Spectre-v2, para contornar proteção adicional (Intel eIBRS e Arm CSV2) e orquestrar vazamento de dados, a substituição de valores no buffer por um histórico de ramificação global (Branch History Buffer), que é usado na CPU para melhorar a precisão da previsão de ramificação levando em conta a história das transições passadas.
Durante um ataque através de manipulações com a história das transições, são criadas condições para a previsão incorreta da transição e execução especulativa das instruções necessárias, cujo resultado é depositado na cache.
Com exceção de usar um buffer de histórico de versão em vez de um buffer de destino de versão, o novo ataque é idêntico ao Spectre-v2. A tarefa do invasor é criar tais condições que o endereço, ao realizar uma operação especulativa, é retirado da área dos dados que estão sendo determinados.
Depois de realizar um salto especulativo indireto, 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 em uma análise da mudança no tempo de acesso ao cache e não em cache dados.
Pesquisadores demonstraram uma exploração funcional que permite que o espaço do usuário extraia dados arbitrários da memória do kernel.
Por exemplo, ele mostra como, usando o 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 capacidade de explorar a vulnerabilidade em um único nível de privilégio (ataque kernel a kernel) usando um programa eBPF carregado pelo usuário. A possibilidade de usar gadgets Spectre existentes no código do kernel, scripts que levam à execução especulativa de instruções, também não está descartada.
Vulnerabilidade aparece na maioria dos processadores Intel atuais, com exceção da família de processadores Atom e em vários dos processadores ARM.
Segundo a pesquisa, a vulnerabilidade não se manifesta nos processadores AMD. Para resolver o problema, vários métodos têm sido propostos. software para bloquear a vulnerabilidade, que pode ser usado antes do aparecimento da proteção de hardware em futuros modelos de CPU.
Para bloquear ataques através do subsistema eBPF, sRecomenda-se desabilitar por padrão a capacidade de carregar programas eBPF por usuários não privilegiados gravando 1 no arquivo “/proc/sys/kernel/unprivileged_bpf_disabled” ou executando o comando “sysctl -w kernel .unprivileged_bpf_disabled=1”.
Para bloquear ataques por meio de gadgets, é recomendado usar a instrução LFENCE em seções de 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 se aplicam por padrão a partir do kernel Linux 5.16 e serão portadas para ramificações anteriores.
Por fim, se estiver interessado em saber mais sobre o assunto, pode consultar os detalhes no link a seguir