E foi descoberta uma falha no eBPF permite contornar a proteção contra ataques Spectre. Confira os detalhes dessa vulnerabilidade.
Recentemente, Aya tem sido um tema em alta. Ela uma biblioteca para criar drivers eBPF em Rust e que tem como objetivo criar drivers mais seguros ou o projeto Prossimo para garantir a memória do kernel Linux com Rust (dois grandes projetos que dará muito o que falar nos próximos meses).
Acontece que em questão de pouco tempo várias vulnerabilidades foram relatadas nas quais se aproveitam das falhas no eBPF e esse é um problema em que os desenvolvedores do Kernel não pararam de trabalhar e talvez Rust seja a solução.
Falha no eBPF permite contornar a proteção contra ataques Spectre
A razão para tocar neste tópico é que recentemente foi divulgada a notícia de que eles identificaram “outra” vulnerabilidade no kernel do Linux (CVE-2021-33624) para contornar a proteção contra vulnerabilidades da classe Spectre, uma vez que permite o uso do subsistema eBPF para ser capaz de determinar o conteúdo da memória como resultado da criação de condições para especulações da execução de certas operações.
Sim. Essa falha no eBPF permite contornar a proteção contra ataques Spectre. Foi mencionado que a vulnerabilidade é causada por falhas no verificador, que é usado para detectar erros e atividades inválidas em programas BPF.
O verificador lista os caminhos de execução de código possíveis, mas ignora quaisquer opções de ramificação que não sejam válidas do ponto de vista da semântica da arquitetura do conjunto de instruções.
Ao executar um programa BPF, as opções de ramificação que não foram levadas em consideração pelo verificador podem ser incorretamente previstas pelo processador e executadas em um modo especulativo.
“Em sistemas afetados, um programa BPF sem privilégios pode explorar essa vulnerabilidade para filtrar o conteúdo da memória do kernel arbitrária (e, portanto, toda a memória física) por meio de um canal lateral.”
Por exemplo, ao analisar a operação “carregar”, o verificador assume que a instrução usa um registro com um endereço cujo valor está sempre dentro dos limites especificados, mas um invasor pode criar condições sob as quais o processador tentará especulativamente executar uma operação com um endereço que não atende às condições de verificação.
O ataque Spectre requer a presença de uma sequência específica de comandos no código privilegiado, levando à execução especulativa de instruções.
Manipulando os programas BPF que são passados para execução, é possível gerar tais instruções no eBPF e filtrar o conteúdo da memória do kernel e áreas arbitrárias da memória física através de canais laterais.
Além disso, uma nota sobre o impacto no desempenho do ativo pode ser sinalizada para proteção contra a classe de vulnerabilidades Spectre.
Esta nota resume os resultados de otimização do depurador rr (Record and Replay), uma vez criado pela Mozilla para depurar erros difíceis de repetir no Firefox.
O armazenamento em cache das chamadas do sistema usadas para verificar a existência de diretórios reduziu a operação “rr sources” para o projeto de teste de 3 minutos e 19 segundos para 36 segundos.
O otimizador decidiu verificar o quanto o desempenho mudará após desativar a proteção Spectre. Após inicializar o sistema com o parâmetro “mitigations = off”, o tempo de execução das “fontes rr” sem otimização foi de 2 minutos 5 segundos (1,6 vezes mais rápido) e com otimização 33 segundos (9% mais rápido).
Curiosamente, desabilitar a proteção Spectre não apenas reduziu o tempo de execução do código no nível do kernel em 1,4 vezes (de 2min 9s para 1min 32s), mas também reduziu pela metade o tempo de execução no espaço do usuário (de 1min 9s para 33s), provavelmente devido a uma diminuição na eficiência, o cache da CPU e o TLB são redefinidos quando a proteção Spectre é habilitada.
O problema surgiu desde o lançamento do kernel 4.15 e foi corrigido na forma de patches, que no momento ainda não alcançam todas as distribuições, por isso é recomendado que os usuários estejam fazendo as atualizações relevantes nestes dias. Quanto eles recebem notificações.
Agora você já sabe que um a Falha no eBPF permite contornar a proteção contra ataques Spectre, e se você quiser saber mais sobre o assunto, pode conferir os detalhes no seguinte endereço.