Em condições específicas, os invasores podem explorar uma série de vulnerabilidades em vários componentes do sistema de impressão de código aberto CUPS para executar remotamente código arbitrário em máquinas suscetíveis.
Essas vulnerabilidades, identificadas como CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) e CVE-2024-47177 (cups-filters), foram descobertas por Simone Margaritelli. Felizmente, os sistemas em sua configuração padrão não são afetados.
CUPS, que significa Common UNIX Printing System, é a solução de impressão mais amplamente usada em plataformas Linux. Ele também é compatível em sistemas operacionais semelhantes ao Unix, incluindo FreeBSD, NetBSD, OpenBSD e seus derivados.
Um componente-chave é o daemon cups-browsed, que verifica a rede local em busca de impressoras compartilhadas ou de rede e as torna acessíveis para impressão. Essa funcionalidade é semelhante a como os sistemas Windows e Mac descobrem impressoras remotas.
Margaritelli descobriu que quando o daemon cups-browsed está habilitado (o que não é o padrão na maioria dos sistemas), ele escuta na porta UDP 631. Além disso, por padrão, ele permite conexões remotas de qualquer dispositivo de rede para criar uma nova impressora.
Ele descobriu que uma impressora maliciosa PostScript Printer Description (PPD) poderia ser anunciada manualmente para um serviço cups-browsed exposto em execução na porta UDP 631.
Isso faz com que a máquina remota instale automaticamente a impressora maliciosa, tornando-a disponível para impressão. Se um usuário no servidor exposto imprimir nesta nova impressora, o comando malicioso incorporado no PPD será executado localmente.
O comando é inserido por meio de um filtro foomatic-rip, que executa comandos no sistema para garantir que os trabalhos de impressão sejam renderizados corretamente.
Comandos adicionados usando o filtro foomatic-rip (Simone Margaritelli), Fonte: BleepingComputer
Impacto mundial limitado
Embora esta seja uma cadeia de execução remota de código (RCE), é importante observar que os invasores enfrentam vários desafios antes de poderem explorar totalmente as vulnerabilidades e obter RCE.
Primeiro, o sistema de destino deve ter o daemon cups-browsed habilitado, que normalmente é desabilitado por padrão, para expor portas UDP na rede. Além disso, o invasor deve enganar um usuário para imprimir de um servidor de impressora malicioso que aparece repentinamente na máquina do usuário por meio da rede local.
“É uma cadeia de bugs que depende da falsificação de uma impressora em sua rede local, que é automaticamente adicionada por meio da descoberta de rede, se estiver habilitada — geralmente, não está em sua configuração padrão. O ataque explora uma variável não verificada para acionar outras vulnerabilidades no sistema CUPS, mas apenas quando um trabalho de impressão é iniciado”, explicou Ilkka Turunen, CTO de campo da Sonatype.
“A boa notícia é que, embora este seja um RCE, há várias mitigações em vigor. O invasor precisa se conectar à máquina alvo via UDP, que geralmente é bloqueado na entrada da rede, e o serviço em si é normalmente desabilitado por padrão. Como resultado, o impacto no mundo real parece ser baixo.”
Por essas razões, Red Hat classificou essas vulnerabilidades com uma classificação de gravidade “Importante” em vez de crítica.
Embora os testes do BleepingComputer tenham mostrado que a maioria de seus servidores Linux não tinha o serviço habilitado por padrão, uma de suas máquinas virtuais Ubuntu tinha. Da mesma forma, outros relataram no Twitter que o cups-browsed estava habilitado por padrão em seus dispositivos Linux.
Nenhum patch, mas medidas de mitigação estão disponíveis
Embora os patches ainda estejam sendo desenvolvidos, a Red Hat forneceu etapas de mitigação para administradores para evitar exploração. Os administradores são aconselhados a interromper o serviço cups-browsed e garantir que ele não reinicie na inicialização usando os seguintes comandos para interromper a cadeia de exploração:
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Usuários do Red Hat podem verificar se o serviço cups-browsed está em execução executando o seguinte comando:
sudo systemctl status cups-browsed
Se a saída mostrar “Ativo: inativo (morto)”, a cadeia de exploração será interrompida e o sistema não estará vulnerável. No entanto, se exibir “em execução” ou “habilitado” e a diretiva “BrowseRemoteProtocols” no arquivo /etc/cups/cups-browsed.conf
contiver o valor “cups”, o sistema ainda estará vulnerável.
Fonte: BleepingComputer, Sergiu Gatlan