Vulnerabilidade no eBPF permite proteção de desvio contra ataques Spectre

Ontem publicamos aqui no blog as novidades sobre Aya, uma biblioteca para a criação de drivers eBPF em Rust e é que o objetivo é criar drivers mais seguros ou o Projeto Prossimo para garantir memória do kernel Linux com Rust (dois grandes projetos que darão muito o que falar nos próximos meses).

E é que em questão de tempo, várias vulnerabilidades foram relatadas no qual aproveite os bugs do eBPF e que é um problema no qual os desenvolvedores do kernel não pararam de trabalhar e talvez Rust seja a solução.

A razão para tocar neste tópico é que recentemente foi divulgada a notícia de que eles identificaram "Outra" vulnerabilidade no kernel Linux (CVE-2021-33624) pra contornar a proteção contra vulnerabilidades da classe Spectre, pois isso permite utilizar o subsistema eBPF para poder determinar o conteúdo da memória como resultado da criação de condições para especulações de execução de certas operações.

É mencionado que a vulnerabilidade é causado 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 previstas incorretamente pelo processador e executadas em um modo especulativo.

Em sistemas afetados, um programa BPF sem privilégios pode explorar esta vulnerabilidade para filtrar o conteúdo da memória kernel arbitrária (e, portanto, toda a memória física) por meio de um canal lateral.

Por exemplo ao analisar a operação de "carregar", o verificador assume que a instrução usa um registrador 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 realizar uma negociação com um endereço que não atende às condições de verificação.

O ataque Spectre requer a presença de um script específico 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, você pode marcar uma nota sobre o impacto no desempenho de ativos para proteger contra a classe de vulnerabilidades Spectre.

Esta nota resume os resultados 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 "fontes rr" para o projeto de teste de 3 minutos e 19 segundos para 36 segundos.

O autor da otimização decidiu verificar quanto vai mudar desempenho 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, desabilitando a proteção Spectre não apenas reduziu o tempo de execução do código de nível do kernel em 1.4 vezes (de 2 min 9s a 1 min 32s), também reduziu pela metade o tempo de execução no espaço do usuário (de 1 min 9s a 33s), provavelmente devido a uma diminuição na eficiência do cache da CPU e TLB são redefinidos quando a proteção Spectre é habilitada.

O problema apareceu 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 aos usuários que hoje em dia eles estejam fazendo as atualizações relevantes assim que receberem as notificações.

Si você quer saber mais sobre isso, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.