Vulnerabilidades exploráveis ​​remotamente no servidor de impressão CUPS

Simone Margaritelli, autor do firewall OpenSnitch e do analisador de rede bettercap, divulgou prematuramente informações sobre vulnerabilidades críticas previamente anunciadas que permitem ataques remotos a distribuições GNU.LinuxSolaris, FreeBSD e vários outros sistemas BSD. O lançamento estava originalmente agendado para 6 de outubro, mas devido a um vazamento, a informação teve que ser divulgada antecipadamente, antes que a maioria das distribuições tivesse tempo de atualizar seus pacotes. As vulnerabilidades afetam o servidor de impressão CUPS e permitem a execução remota de código sem autenticação.

O pesquisador que identificou o problema preparou um protótipo funcional de um exploit que utiliza uma combinação de diversas vulnerabilidades e permite a execução remota de código com os direitos do processo de processamento de trabalhos de impressão do CUPS (geralmente o usuário “lp”). A exploração permite que você substitua silenciosamente os parâmetros da impressora do usuário ou adicione uma nova impressora associada ao servidor IPP de ataque em execução, que emite uma descrição PPD especialmente projetada da impressora. O processamento deste PPD durante o lançamento de um trabalho de impressão leva à execução de. o código do invasor (é necessário que a vítima inicie a impressão em uma impressora substituída ou substituída pelo invasor).

Sistemas com são suscetíveis a ataques servidor A impressão CUPS e o processo de execução cups-browsed, que aceita conexões de rede na porta 631 (UDP), são alvos do ataque. O ataque também pode ser realizado a partir de uma rede local, onde o acesso a servidor Os protocolos zeroconf, mDNS ou DNS-SD são usados ​​para impressão. Somente as configurações do cups-browsed com o parâmetro BrowseRemoteProtocols definido como "cups" no arquivo /etc/cups/cups-browsed.conf são vulneráveis. Em distribuições baseadas em systemd, você pode verificar se o serviço cups-browsed está sendo usado com o comando "sudo systemctl status cups-browsed".

A vulnerabilidade afeta todos os sistemas de impressão baseados em CUPS que utilizam versões vulneráveis ​​dos pacotes cups-filters, libcupsfilters, libppd e cups-browsed. As correções estão disponíveis atualmente apenas como patches (1, 2, 3). As versões atuais do cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 e cups-browsed 2.0.1 são vulneráveis. O problema permanece sem correção nas distribuições; as atualizações podem ser encontradas nas seguintes páginas: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Como solução alternativa antes de instalar a atualização, você pode bloquear o acesso à porta UDP 631 de redes externas, desativar o serviço cups-browsed ou definir a configuração BrowseRemoteProtocols como "none".

Vulnerabilidades identificadas:

  • CVE-2024-47176 é uma vulnerabilidade no processo cups-browsed, que cria um soquete de rede que aceita conexões na porta 631, se conecta a todas as interfaces de rede no sistema e aceita solicitações IPP “Get-Printer-Attributes” de qualquer ambiente externo. sistemas. Ao manipular este serviço, é possível adicionar ao sistema uma impressora controlada por um invasor e explorar vulnerabilidades em outros componentes do CUPS transferindo a configuração do PPD.
  • CVE-2024-47177 é uma vulnerabilidade no manipulador foomatic-rip do conjunto cups-filters, que permite a execução do código passando o parâmetro FoomaticRIPCommandLine em um arquivo PPD, que um invasor pode transmitir devido à vulnerabilidade descrita acima em xícaras navegadas. Os comandos shell especificados no parâmetro FoomaticRIPCommandLine são executados como estão, sem levar em conta o fato de que o parâmetro pode ser definido por alguém de fora. Por exemplo, para gravar no arquivo /tmp/VULNERABLE, você pode especificar "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE".
  • CVE-2024-47175 é uma vulnerabilidade no libppd causada pela falta de validação do valor ppdCreatePPDFromIPP2 ao gravar atributos IPP em um arquivo PPD temporário. O problema permite que você substitua dados arbitrários no arquivo PPD resultante anexando atributos usando o caractere de avanço de linha. Por exemplo, você pode ignorar a verificação e, junto com os atributos permitidos, substituir o atributo FoomaticRIPCommandLine para explorar a vulnerabilidade mencionada acima em cups-filters.
  • CVE-2024-47076 é uma vulnerabilidade na biblioteca libcupsfilters do pacote cups-filters devido à falta de verificação dos valores cfGetPrinterAttributes5 retornados por um servidor IPP externo, que permite a um invasor organizar o processamento de atributos IPP arbitrários em outros Subsistemas CUPS, por exemplo, ao gerar arquivos PPDs.

O cenário de ataque do CUPS se resume às seguintes etapas:

  • Implantação do próprio servidor IPP do invasor.
  • Envio de um pacote UDP à vítima com um link para uma impressora vinculada ao servidor IPP executado pelos invasores.
  • Depois de receber este pacote, o sistema vítima se conecta ao servidor IPP do invasor e solicita atributos da impressora.
  • Em resposta à solicitação da vítima, o servidor IPP do invasor retorna um arquivo PPD com atributos, incluindo o atributo FoomaticRIPCommandLine. Este atributo é anexado a um dos atributos válidos usando o caractere "\n" em uma única linha (por exemplo, "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "), que ignora o verifica e leva à gravação de FoomaticRIPCommandLine como um atributo separado ao salvar os dados recebidos em um arquivo temporário.
  • Como resultado do processamento dos atributos transmitidos, um arquivo PPD é criado no sistema da vítima: ... *cupsSNMPSupplies: False *cupsLanguages: “en” *cupsPrivacyURI: “https://www.google.com/” *FoomaticRIPCommandLine: “echo 1 > /tmp/I_AM_VULNERABLE " *cupsFilter2 : "application/pdf application/vnd.cups-postscript 0 foomatic-rip" *cupsSingleFile: True *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -" . ..
  • Ao imprimir em uma impressora configurada pelo invasor, o comando “echo 1 > /tmp/I_AM_VULNERABLE” será executado no sistema da vítima.

O pesquisador que identificou as vulnerabilidades observa que demorou alguns dias para encontrar a vulnerabilidade, mas depois seguiu uma correspondência de 22 dias com os desenvolvedores do projeto OpenPrinting, tentando convencê-los da importância do problema e da necessidade de preparar patches. A discussão ficou atolada no debate sobre se valia a pena resolver estes problemas, e a situação só foi invertida aumentando o entusiasmo público sobre a identificação de um problema crítico. Também interessante é o aparecimento de um vazamento de informações, durante o qual um relatório confidencial e uma exploração submetida ao CERT apareceram no fórumbreeforums.st em domínio público, apesar do embargo à divulgação de informações.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster