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

Ataque a sistemas UNIX: ataque via CUPS, Parte I

Resumo

  • CVE-2024-47176: cups-browsed <= 2.0.1 faz bind em UDP INADDR_ANY:631, permitindo acionar uma requisição IPP Get-Printer-Attributes para uma URL controlada pelo atacante
  • CVE-2024-47076: libcupsfilters <= 2.1b1, na função cfGetPrinterAttributes5, não valida nem sanitiza os atributos IPP retornados pelo servidor IPP, permitindo fornecer dados controlados pelo atacante ao sistema CUPS
  • CVE-2024-47175: libppd <= 2.1b1, na função ppdCreatePPDFromIPP2, não valida nem sanitiza os atributos IPP ao gravá-los em um arquivo PPD temporário, permitindo injetar dados controlados pelo atacante
  • CVE-2024-47177: cups-filters <= 2.0.1, no foomatic-rip, permite execução arbitrária de comandos por meio do parâmetro PPD FoomaticRIPCommandLine

Impacto

  • Um atacante remoto não autenticado pode substituir a URL IPP de uma impressora existente por uma URL maliciosa ou instalar uma nova impressora, executando comandos arbitrários quando um trabalho de impressão for iniciado

Vetores de entrada

  • WAN / Internet pública: um atacante remoto envia pacotes UDP para a porta 631. Não requer autenticação
  • LAN: um atacante local pode falsificar anúncios zeroconf / mDNS / DNS-SD para alcançar RCE pelo mesmo caminho de código

Sistemas afetados

  • A maioria das distribuições GNU/Linux
  • Alguns BSDs
  • Google Chromium / ChromeOS (possivelmente)
  • Oracle Solaris
  • Outros

Soluções

  • Desativar e remover o serviço cups-browsed
  • Atualizar os pacotes CUPS do sistema
  • Se não for possível atualizar o sistema, bloquear a porta UDP 631 e todo o tráfego DNS-SD

Introdução

  • Há algumas semanas, ao configurar o Ubuntu em um novo notebook, foi executado o comando netstat -anu para verificar quais serviços estavam escutando portas UDP
  • Foi descoberto que o cups-browsed estava escutando e respondendo via UDP na porta 631 em todas as interfaces de rede
  • O cups-browsed é responsável por adicionar automaticamente novas impressoras ao sistema

O que é cups-browsed?

  • cups-browsed faz parte do sistema CUPS, detectando novas impressoras e adicionando-as automaticamente ao sistema
  • O arquivo de configuração padrão vem comentado e permite que qualquer pessoa se conecte

Stack buffer overflow e condição de corrida

  • cups-browsed não está incluído na cobertura do oss-fuzz
  • Podem ocorrer um stack buffer overflow e uma condição de corrida na função process_browse_data
  • Esses problemas foram relatados aos desenvolvedores e ao CERT, mas ainda não receberam patch

Voltando a found_cups_printer

  • A função found_cups_printer extrai a URL do pacote e a passa para a função cfGetPrinterAttributes
  • Essa URL se conecta a um servidor controlado pelo atacante

Internet Printing Protocol (IPP)

  • IPP é o protocolo de comunicação entre dispositivos clientes e impressoras
  • Ao retornar atributos de impressora controlados pelo atacante, é possível adicionar uma impressora ao sistema

Resumo do GN⁺

  • Este texto explica como explorar vulnerabilidades no sistema CUPS para alcançar execução remota de código
  • Há várias vulnerabilidades relacionadas ao CUPS que podem permitir que um atacante assuma o controle do sistema
  • Essas vulnerabilidades ainda não receberam patch, e os usuários devem desativar os serviços do CUPS ou atualizá-los
  • Outros projetos com funcionalidade semelhante incluem LPRng e as versões mais recentes do CUPS

Ainda não há comentários.

Ainda não há comentários.