Vulnerabilidade na chamada de sistema execve que concede acesso root no FreeBSD

Uma vulnerabilidade (CVE-2026-7270) foi descoberta no FreeBSD, permitindo que um usuário sem privilégios execute código do kernel e obtenha acesso root ao sistema. A vulnerabilidade afeta todas as versões do FreeBSD lançadas desde 2013. Um exploit está disponível publicamente e foi testado em sistemas executando o FreeBSD 11.0 até o 14.4. A vulnerabilidade foi corrigida nas versões 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 e 13.5-RELEASE-p13 do FreeBSD. Um patch está disponível para versões anteriores.

O problema é causado por um estouro de buffer na chamada de sistema `execve`. Isso ocorre ao processar o prefixo especificado na primeira linha dos scripts para determinar o caminho para o interpretador (por exemplo, "#!/bin/sh"). O estouro ocorre durante uma chamada à função `memmove` devido a uma expressão matemática construída incorretamente para calcular o tamanho dos argumentos copiados para o buffer. Em vez de subtrair os valores de `args->begin_argv` e `consume` de `args->endp`, apenas o valor de `args->begin_argv` foi subtraído de `args->endp`, e a variável `consume` foi adicionada ao resultado, em vez de subtraída, ou seja, como resultado, mais dados foram copiados em dois valores de `consume`. memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + args->endp — (args->begin_argv + consume));

O estouro de buffer permite sobrescrever elementos da estrutura "exec_map" alocada em memória adjacente por outro processo. A exploração utiliza esse estouro para sobrescrever o conteúdo do "exec_map" de processos privilegiados iniciados periodicamente no sistema. O processo escolhido é o sshd, que, a cada conexão de rede estabelecida, cria um novo processo (fork) e executa o processo "/usr/libexec/sshd-session" com privilégios de root.

A vulnerabilidade explorada substitui a variável de ambiente "LD_PRELOAD=/tmp/evil.so" para este processo, fazendo com que sua biblioteca seja carregada no contexto da sessão sshd. A biblioteca injetada cria um arquivo executável chamado /tmp/rootsh no sistema de arquivos com a flag suid root. A taxa de sucesso da exploração é estimada em 0.6%, mas graças à repetição cíclica, a exploração bem-sucedida é alcançada em aproximadamente 6 segundos em um sistema com uma CPU de 4 núcleos.

 Vulnerabilidade na chamada de sistema execve que concede acesso root no FreeBSD

Além disso, várias outras vulnerabilidades foram corrigidas no FreeBSD:

  • As vulnerabilidades CVE-2026-35547 e CVE-2026-39457 são estouros de buffer na biblioteca libnv, utilizada no kernel e em aplicações do sistema para processar listas de chave/valor e gerenciar a comunicação entre processos. O primeiro problema é causado pelo cálculo incorreto do tamanho da mensagem durante o processamento de cabeçalhos de mensagens IPC especialmente criados. O segundo problema resulta em um estouro de pilha durante a comunicação por socket devido à falta de verificações para garantir que o tamanho do descritor de socket corresponda ao tamanho do buffer usado na função select(). Essas vulnerabilidades podem ser exploradas para escalar privilégios.
  • A vulnerabilidade CVE-2026-42512 é um estouro de buffer explorável remotamente no dhclient devido ao cálculo incorreto do tamanho de um array de ponteiros usado para passar variáveis ​​de ambiente para o dhclient-script. É possível criar um exploit para execução remota de código enviando um pacote DHCP especialmente criado.
  • CVE-2026-7164 – Uma vulnerabilidade de estouro de pilha no filtro de pacotes pf ocorre durante o processamento de pacotes SCTP especialmente criados. O problema é causado pela análise recursiva ilimitada de parâmetros SCTP.
  • CVE-2026-42511 – É possível inserir diretivas arbitrárias no arquivo dhclient.conf devido à falha no tratamento de colchetes duplos em campos BOOTP recebidos de um servidor DHCP externo. Quando o processo dhclient analisa esse arquivo, o campo especificado pelo atacante é passado para o dhclient-script, que pode ser usado para executar comandos arbitrários com privilégios de root em sistemas que executam o dhclient ao acessar um servidor DHCP controlado pelo atacante.
  • CVE-2026-6386 — Tratamento insuficiente de páginas de memória grandes na função do kernel pmap_pkru_update_range(). Um usuário sem privilégios pode fazer com que pmap_pkru_update_range() trate a memória do espaço do usuário como uma página na tabela de páginas de memória, sobrescrevendo assim uma região de memória não autorizada.
  • CVE-2026-5398 - Uma referência a uma região de memória previamente liberada no manipulador TIOCNOTTY permite que um processo sem privilégios obtenha privilégios de root.

Fonte: opennet.ru