Vulnerabilidades no eBPF que permitem contornar a proteção contra o ataque Spectre 4

Duplo vulnerabilidades foram descobertas no núcleo do Linux, permitindo o uso do subsistema eBPF para contornar a proteção contra o ataque Spectre v4 (SSB, Speculative Store Bypass). Com um programa BPF não privilegiado, um atacante pode criar condições para a execução especulativa de determinadas operações e determinar o conteúdo de áreas de memória do núcleo. Subsistemas acompanhantes do eBPF no núcleo tiveram acesso a um protótipo de exploit demonstrando a viabilidade de ataques na prática. Os problemas foram corrigidos na forma de patches (1, 2), que serão incluídos na próxima atualização do núcleo Linux. Atualizações nos distribuições ainda não foram formadas (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

O método de ataque Spectre 4 é baseado na recuperação de dados que ficaram no cache do processador após o descarte do resultado da execução especulativa de operações ao processar operações alternadas de gravação e leitura usando endereçamento indireto. Quando uma operação de leitura segue uma operação de gravação (por exemplo, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), o deslocamento do endereço para leitura pode já ser conhecido devido à execução de operações semelhantes (as operações de leitura são realizadas com muito mais frequência e a leitura pode ser realizada do cache) e o processador pode executar especulativamente a leitura antes da gravação, sem esperar que o deslocamento de endereçamento indireto para gravação seja calculado.

Se, após o cálculo do deslocamento, for identificado um cruzamento entre as áreas de memória para gravação e leitura, o processador simplesmente descartará o resultado da leitura que já foi obtido especulativamente e repetirá essa operação. Essa característica permite que a instrução de leitura acesse um valor antigo em um determinado endereço enquanto a operação de gravação ainda não foi concluída. Após descartar a operação especulativa malsucedida, permanecem vestígios de sua execução no cache, após o que uma das técnicas de determinação do conteúdo do cache pode ser aplicada com base na análise das mudanças no tempo de acesso a dados em cache e não em cache.

A primeira vulnerabilidade (CVE-2021-35477) é causada por uma falha no mecanismo de verificação do programa BPF. Para se proteger contra o ataque Spectre 4, o verificador adiciona, após operações potencialmente problemáticas de gravação na memória, uma instrução adicional que grava um valor zero para eliminar vestígios da operação anterior. Era suposto que a operação de gravação do zero seria muito rápida e impedisse a execução especulativa, pois depende apenas do ponteiro para o quadro da pilha BPF. No entanto, na prática, foi possível criar condições em que a instrução que leva à execução especulativa é executada antes da operação de gravação eliminatória.

A segunda vulnerabilidade (CVE-2021-3455) está relacionada ao fato de que, ao detectar operações de gravação na memória potencialmente perigosas, o verificador BPF não considera áreas não inicializadas da pilha BPF, cuja primeira operação de gravação não é protegida. Essa característica permite a possibilidade de realizar uma operação de leitura especulativa, dependente de uma área de memória não inicializada, antes da execução da instrução de gravação. A nova memória para a pilha BPF é alocada sem verificar o conteúdo já existente na memória alocada, e antes da execução do programa BPF, há uma maneira de controlar o conteúdo da área de memória que será destinada à pilha BPF.

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