Vulnerabilidades no subsistema eBPF que permitem contornar a proteção contra ataques do tipo Spectre

Uma vulnerabilidade foi identificada no núcleo do Linux (CVE-2021-33624), permitindo à subsistema eBPF contornar as proteções contra vulnerabilidades do tipo Spectre, possibilitando a determinação do conteúdo da memória em decorrência da criação de condições para a execução especulativa de determinadas operações. Para realizar um ataque do tipo Spectre, é necessária a presença de uma sequência específica de comandos no código privilegiado que leva à execução especulativa de instruções. Por meio da manipulação dos programas BPF enviados para execução, é possível gerar instruções similares no eBPF e causar o vazamento de conteúdo da memória do núcleo e de áreas de memória física arbitrárias por canais paralelos.

A vulnerabilidade é causada por falhas no verificador, que é usado para identificar erros e atividades indevidas em programas BPF. O verificador percorre os possíveis caminhos de execução do código, mas ignora ramificações que são inválidas do ponto de vista da semântica da arquitetura do conjunto de instruções. Ao executar um programa BPF, tais ramificações não levadas em consideração pelo verificador podem ser preditas incorretamente pelo processador e executadas em modo especulativo. Por exemplo, ao analisar uma operação de "load", o verificador presume que a instrução usa um registrador com um endereço cujo valor sempre está dentro de limites especificados, mas um invasor pode criar condições em que o processador tentará executar especulativamente uma operação com um endereço que não atende aos critérios de verificação.

O problema se manifesta a partir do lançamento do núcleo 4.15 e foi corrigido na forma de patches (1, 2, 3, 4). Nos distribuições, a vulnerabilidade ainda permanece sem correção (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Adicionalmente, é importante mencionar a nota sobre o impacto no desempenho de ferramentas de proteção contra vulnerabilidades do tipo Spectre. A nota resume os resultados da otimização do depurador rr (Record and Replay), criado na Mozilla para depurar erros difíceis de replicar no Firefox. O cache de chamadas de sistema utilizadas para verificar a existência de diretórios permitiu reduzir o tempo de execução da operação "rr sources" para um projeto de teste de 3 minutos e 19 segundos para 36 segundos.

O autor da otimização decidiu verificar como a execução mudaria após desativar a proteção contra Spectre. Após carregar o sistema com o parâmetro "mitigations=off", o tempo de execução do "rr sources" sem otimização foi de 2 minutos e 5 segundos (1,6 vezes mais rápido), enquanto com otimização foi de 33 segundos (9% mais rápido). Curiosamente, desativar a proteção contra Spectre não apenas reduziu em 1,4 vezes o tempo de execução do código no nível do núcleo (de 2m9s para 1m32s), mas também diminuiu em duas vezes o tempo de execução no espaço do usuário (de 1m9s para 0m33s), presumivelmente devido à redução da eficiência do cache da CPU e das falhas TLB com a proteção contra Spectre ativada.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster