Foi identificada uma vulnerabilidade no FreeBSD (CVE-2022-23093) na utilidade ping, que faz parte da instalação básica. O problema pode potencialmente levar à execução remota de código com privilégios de root ao verificar um host externo controlado por um atacante. A correção foi proposta nas atualizações do FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 e 12.3-RELEASE-p10. Não está claro se outras sistemas BSD estão vulneráveis, pois não existem relatórios de vulnerabilidade para NetBSD, DragonFlyBSD e OpenBSD até o momento.
A vulnerabilidade é causada por um estouro de buffer no código de análise de mensagens ICMP que são recebidas em resposta a um pedido de verificação. O código de envio e recepção de mensagens ICMP no ping utiliza sockets raw e é executado com privilégios elevados (a utilidade é fornecida com a flag setuid root). O tratamento da resposta é realizado pelo ping através da reconfiguração dos cabeçalhos IP e ICMP dos pacotes recebidos do socket raw. Os cabeçalhos IP e ICMP alocados são copiados pela função pr_pack() para buffers, sem considerar que podem haver cabeçalhos adicionais expandidos após o cabeçalho IP no pacote.
Cabeçalhos semelhantes são alocados a partir do pacote e incluídos no bloco de cabeçalhos, mas não são contabilizados no cálculo do tamanho do buffer. Se o host retornar um pacote com cabeçalhos adicionais em resposta ao ICMP solicitador, seu conteúdo será gravado em uma área fora do buffer na pilha. Como resultado, um atacante pode sobrescrever até 40 bytes de dados na pilha, o que potencialmente pode permitir a execução de seu código. A gravidade do problema é atenuada pelo fato de que, no momento da manifestação do erro, o processo está em um estado de isolamento de chamadas de sistema (modo de capacidade), o que dificulta o acesso ao restante do sistema após a exploração da vulnerabilidade.
Fonte: opennet.ru
