CVE-2023-2163: descoberta e correção de uma vulnerabilidade do kernel Linux em eBPF
Contexto
- eBPF é uma tecnologia que permite estender, em tempo de execução, as funcionalidades do kernel Linux sem precisar escrever módulos de kernel complexos.
- Programas eBPF são executados quando eventos específicos ocorrem e precisam ter sua segurança verificada antes de serem carregados.
- O verificador (
verifier) é composto por código complexo, e muitas vulnerabilidades já foram encontradas nele.
- O Google desenvolveu o Buzzer, um fuzzer que audita automaticamente o verificador de eBPF.
Estratégia de aritmética de ponteiros do Buzzer
- O Buzzer é um novo fuzzer para eBPF que usa uma estratégia voltada a provocar bugs lógicos.
- A estratégia de aritmética de ponteiros é composta pelas seguintes etapas:
- gerar um cabeçalho que inicializa registradores com valores aleatórios
- gerar instruções aritméticas e de salto aleatórias
- selecionar um registrador aleatório e executar uma operação de soma com um ponteiro para um elemento de mapa eBPF
- escrever um valor mágico nesse elemento
Podagem de caminhos no eBPF
- O verificador de eBPF tem o papel de confirmar se um programa pode ser executado com segurança.
- Quando há condicionais, ele simula todos os estados possíveis.
- Quando existem muitos saltos condicionais, ele usa uma estratégia de podagem de caminhos para melhorar o desempenho.
O bug
- O CVE-2023-2163 introduz o conceito de "rastreamento preciso" para tornar a podagem de caminhos mais eficiente.
- O bug ocorre porque a contribuição do registrador
r9 para a precisão de r6 é ignorada.
Exploit
- A exploração do CVE-2023-2163 permite obter leitura/escrita arbitrária, além de realizar LPE e escape de contêiner.
- Etapas principais:
- obter leitura/escrita arbitrária
- localizar as credenciais do processo e elevar privilégios
Correção
- Para corrigir o CVE-2023-2163, registradores imprecisos passam a ser marcados como precisos em operações que afetam registradores precisos.
- O impacto no desempenho não está claro, mas nenhum problema adicional foi encontrado.
Ideias futuras
- Garantir a segurança de programas eBPF é difícil devido à complexidade do processo de verificação.
- O Google está lidando com esse problema por meio do Buzzer e recebe contribuições da comunidade open source.
Resumo do GN⁺
- Este texto explica o processo de descoberta e correção de uma vulnerabilidade no verificador de eBPF.
- eBPF é uma tecnologia importante na pesquisa de segurança de kernel, e garantir sua segurança é difícil.
- O Google desenvolveu um fuzzer chamado Buzzer para auditar automaticamente vulnerabilidades no verificador de eBPF.
- O texto é útil para pesquisadores de segurança e desenvolvedores, ajudando a garantir a segurança de sistemas complexos como o eBPF.
- Projetos com funções semelhantes incluem outras ferramentas de fuzzing relacionadas a eBPF.
Ainda não há comentários.