1 pontos por GN⁺ 2024-08-10 | Ainda não há comentários. | Compartilhar no WhatsApp

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:
    1. gerar um cabeçalho que inicializa registradores com valores aleatórios
    2. gerar instruções aritméticas e de salto aleatórias
    3. selecionar um registrador aleatório e executar uma operação de soma com um ponteiro para um elemento de mapa eBPF
    4. 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:
    1. obter leitura/escrita arbitrária
    2. 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.

Ainda não há comentários.