Recentemente saiu a notícia de que identificou uma nova vulnerabilidade (já listado sob CVE-2021-4204) no subsistema eBPF (para variar) ...
E é que o subsistema eBPF não deixou de ser um grande problema de segurança para o Kernel porque facilmente no que foi todo o ano de 2021 duas vulnerabilidades foram reveladas por mês e das quais falamos algumas delas aqui no blog.
Quanto aos detalhes do problema atual, é mencionado que a vulnerabilidade detectada permite que um driver seja executado dentro do kernel do Linux em uma máquina virtual JIT especial e que isso, por sua vez, permite que um usuário local sem privilégios obtenha o escalonamento de privilégios e execute seu código no nível do kernel.
Na descrição do problema, eles mencionam que a vulnerabilidade é devido à verificação incorreta dos programas eBPF transmitidos para execução, uma vez que o subsistema eBPF fornece funções auxiliares, cuja correção é verificada por um verificador especial.
Essa vulnerabilidade permite que invasores locais aumentem os privilégios em
instalações do kernel Linux afetadas. Um atacante deve primeiro obter o
capacidade de executar código de baixo privilégio no sistema de destino para
explorar esta vulnerabilidade.A falha específica existe na manipulação dos programas eBPF. A questão resulta da falta de validação adequada dos programas eBPF fornecidos pelo usuário antes de executá-los.
Além disso, algumas das funções requerem que o valor PTR_TO_MEM seja passado como argumento e o verificador deve saber o tamanho da memória associada ao argumento para evitar possíveis problemas de estouro de buffer.
Enquanto para funções bpf_ringbuf_submit e bpf_ringbuf_discard, os dados sobre o tamanho da memória transferida não são relatados ao verificador (é aqui que o problema começa), que o invasor aproveita para poder sobrescrever áreas de memória fora do limite de buffer ao executar código eBPF especialmente criado.
Um invasor pode explorar essa vulnerabilidade para escalar privilégios e executar código no contexto do kernel. OBSERVE que o bpf sem privilégios está desabilitado por padrão na maioria das distribuições.
É mencionado que para um usuário realizar um ataque, o usuário deve ser capaz de carregar seu programa BPF e muitas distribuições recentes do Linux o bloqueiam por padrão (incluindo acesso sem privilégios ao eBPF agora é proibido por padrão no próprio kernel, a partir da versão 5.16).
Por exemplo, é mencionado que a vulnerabilidade pode ser explorado na configuração padrão em uma distribuição que ainda é bastante utilizada e acima de tudo muito popular, pois é Ubuntu 20.04LTS, mas em ambientes como Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 e Fedora 33, só se manifesta se o administrador tiver definido o parâmetro kernel.unprivileged_bpf_disabled para 0.
Atualmente, como solução para bloquear a vulnerabilidade, menciona-se que usuários sem privilégios podem ser impedidos de executar programas BPF executando o comando em um terminal:
sysctl -w kernel.unprivileged_bpf_disabled=1
Finalmente, deve ser mencionado que o problema apareceu desde o kernel Linux 5.8 e permanece sem correção (incluindo a versão 5.16) e é por isso que o código de exploração será atrasado por 7 dias E será publicado às 12:00 UTC, ou seja, em 18 de janeiro de 2022.
Com ele Destina-se a dar tempo suficiente para que os patches corretivos sejam disponibilizados dos usuários das diferentes distribuições Linux dentro dos canais oficiais de cada uma delas e tanto os desenvolvedores quanto os usuários podem corrigir essa vulnerabilidade.
Para quem estiver interessado em poder saber sobre o status da formação de atualizações com a eliminação do problema em algumas das principais distribuições, deve saber que elas podem ser rastreadas nestas páginas: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.
Se você interessado em saber mais sobre isso sobre a nota, você pode consultar a declaração original no link a seguir.