top of page
Foto do escritorCyber Security Brazil

Vulnerabilidades críticas no sistema de impressão expõem sistemas Linux à RCE

Uma série de vulnerabilidades críticas de dia zero no serviço Common UNIX Printing System (CUPS) permite a execução remota de código (RCE) sem autenticação em diversos sistemas UNIX, potencialmente afetando centenas de milhares de dispositivos. A descoberta foi feita pelo pesquisador de segurança Simone Margaritelli (conhecido como @evilsocket), revelando que essas falhas podem ser exploradas para assumir o controle de sistemas vulneráveis através da adição maliciosa de impressoras.


Resumo das vulnerabilidades

As falhas estão associadas ao CUPS, um sistema amplamente utilizado em distribuições GNU/Linux e outros sistemas UNIX. As vulnerabilidades identificadas são as seguintes:


  • CVE-2024-47176 (CVSS 8.6): O componente cups-browsed (versão ≤ 2.0.1) escuta no endereço UDP INADDR_ANY:631, permitindo que pacotes de qualquer origem enviem requisições IPP (Internet Printing Protocol) para URLs maliciosos.


  • CVE-2024-47076 (CVSS 8.6): A função cfGetPrinterAttributes5 na libcupsfilters (versão ≤ 2.1b1) não valida corretamente os atributos IPP recebidos de servidores, permitindo a inserção de dados não confiáveis no sistema CUPS.


  • CVE-2024-47175 (CVSS 8.6): A libppd (versão ≤ 2.1b1) apresenta falhas na função ppdCreatePPDFromIPP2, que não sanitiza os atributos IPP, possibilitando a injeção de dados controlados em arquivos PPD temporários.


CVE-2024-47177 (CVSS 9.9): O filtro foomatic-rip, presente no cups-filters (versão ≤ 2.0.1), permite a execução arbitrária de comandos por meio do parâmetro PPD FoomaticRIPCommandLine, resultando em RCE completa quando trabalhos de impressão são iniciados.


Essas vulnerabilidades permitem que invasores explorem remotamente sistemas injetando impressoras IPP maliciosas e executando comandos arbitrários assim que um trabalho de impressão é iniciado.


Descoberta e impacto

Durante uma auditoria de rede, Margaritelli identificou que o serviço cups-browsed estava escutando em todas as interfaces de rede (0.0.0.0:631) via UDP, expondo o serviço a qualquer tráfego de rede, incluindo da Internet. O fato de o serviço estar vinculado ao endereço INADDR_ANY o torna acessível por interfaces LAN, WAN e VPN, resultando na primeira vulnerabilidade.


A cadeia de ataque envolve o envio de um pacote UDP malicioso para a porta 631, enganando o cups-browsed para se conectar a um servidor IPP controlado pelo invasor. O servidor então responde com atributos IPP especialmente preparados, que, quando salvos em um arquivo PPD, possibilitam a execução de comandos arbitrários via a diretiva FoomaticRIPCommandLine.


Dado o uso disseminado do CUPS em sistemas UNIX, incluindo distribuições Linux como Debian, Ubuntu, Red Hat, Fedora, Arch Linux e possivelmente Google ChromeOS e Oracle Solaris, essa vulnerabilidade tem grande alcance. Uma varredura em intervalos de IP públicos revelou centenas de milhares de dispositivos potencialmente vulneráveis executando versões desatualizadas do cups-browsed.


Detalhes técnicos

O cups-browsed aceita pacotes no formato HEX_NUMBER HEX_NUMBER TEXT_DATA. Devido à configuração padrão inadequada, qualquer pacote recebido é processado sem validação. Ao receber um pacote que aponta para um servidor IPP controlado por um invasor, o cups-browsed inicia uma conexão com esse servidor, que responde com atributos IPP maliciosos.


Esses atributos são armazenados em arquivos PPD sem a devida sanitização. Como os arquivos PPD contêm detalhes de configuração de impressoras, incluindo filtros executáveis, o invasor pode injetar diretivas PPD maliciosas para execução de comandos.


A vulnerabilidade no foomatic-rip permite a injeção de diretivas via FoomaticRIPCommandLine, resultando na execução de comandos de shell arbitrários assim que um trabalho de impressão é enviado.


A sequência de ataque segue os seguintes passos:


  1. O invasor identifica dispositivos com a porta UDP 631 aberta.


  2. Um pacote IPP malicioso é enviado ao dispositivo, induzindo-o a se conectar a um servidor IPP controlado pelo atacante.


  3. O servidor do invasor responde com atributos IPP manipulados para injetar diretivas maliciosas no arquivo PPD.


  4. Quando um trabalho de impressão é iniciado, o comando malicioso é executado no sistema alvo, resultando em RCE.


Quem está vulnerável?

Qualquer sistema UNIX que inclua o serviço CUPS pode estar vulnerável, incluindo distribuições Linux como Ubuntu, Debian, Arch Linux, Red Hat, Fedora e openSUSE. O Red Hat, por exemplo, tem o cups-browsed desativado por padrão, reduzindo o risco. Sistemas como BSD, Solaris e possivelmente ChromeOS também podem ser afetados, dependendo de suas configurações padrão.


Mitigação e defesa

Enquanto atualizações não são liberadas, os usuários podem mitigar essas vulnerabilidades tomando as seguintes medidas:


Desativar e remover o serviço cups-browsed se ele não for necessário, com os comandos:

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

Bloquear o tráfego na porta UDP 631 e no tráfego DNS-SD, especialmente se o zeroconf estiver habilitado.


Prova de conceito (PoC)

Um exploit completo foi publicado no GitHub. Ele envia um pacote UDP para o dispositivo alvo, iniciando uma conexão com um servidor IPP que responde com atributos maliciosos, permitindo a injeção de um arquivo PPD e a execução de comandos de shell arbitrários assim que um trabalho de impressão for iniciado.


Vídeos de PoC mostram como um sistema Ubuntu 24.04.1 LTS, com o cups-browsed 2.0.1, é comprometido remotamente, permitindo a execução de código via a cadeia de exploração. Margaritelli demonstrou frustração com o processo de divulgação, criticando a resposta lenta dos desenvolvedores, o que resultou na divulgação pública das vulnerabilidades em 26 de setembro de 2024.



Diante disso, recomenda-se que os usuários desativem o cups-browsed, implementem bloqueios em nível de rede e fiquem atentos a atualizações de segurança fornecidas pelos fornecedores dos sistemas operacionais.


Via - CI

13 visualizações0 comentário

Comments


bottom of page