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.