Bajo ciertas condiciones, los atacantes pueden encadenar un conjunto de vulnerabilidades en múltiples componentes del sistema de impresión CUPS de código abierto para ejecutar código arbitrario de forma remota en máquinas vulnerables.
Seguimiento como CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) y CVE-2024-47177 (cups-filters) y descubierto por Simone MargaritelliEstas vulnerabilidades de seguridad no afectan a los sistemas en su configuración predeterminada.
CUPS (abreviatura de Common UNIX Printing System) es el sistema de impresión más utilizado en sistemas Linux y también es generalmente apoyado en dispositivos que ejecutan sistemas operativos tipo Unix como FreeBSD, NetBSD y OpenBSD y sus derivados.
Uno de sus componentes es el demonio navegado por cups, que busca en la red local redes anunciadas o impresoras compartidas y las pone a disposición para imprimir en la máquina. Esto es similar a cómo Windows y Mac pueden buscar en la red impresoras de red remotas para imprimir.
Margaritelli descubrió que si el demonio de navegación por tazas está habilitado, lo cual no es el caso en la mayoría de los sistemas, escuchará en el puerto UDP 631. También, de forma predeterminada, permitirá conexiones remotas desde cualquier dispositivo de red para crear una nueva impresora.
Descubrió que podía crear una descripción de impresora PostScript (PPD) maliciosa que podía anunciarse manualmente en un servicio expuesto atravesado por tazas que se ejecutaban en el puerto UDP 631.
Esto hace que la máquina remota instale automáticamente la impresora maliciosa y la ponga a disposición para imprimir. Si el usuario de este servidor expuesto imprime en la nueva impresora, el comando PPD malicioso se ejecutará localmente en la computadora.
El comando que se ejecutará al imprimir se agrega mediante un filtro antidesgarroque ejecuta comandos en un dispositivo para que un trabajo de impresión se procese correctamente.
Impacto global limitado
Aunque se trata de un canal de ejecución remota de código, cabe señalar desde el principio que los atacantes deben superar ciertos obstáculos para explotar las vulnerabilidades y lograr la ejecución remota del código.
La primera es que los sistemas de destino deben tener habilitado el demonio explorado por cups, que generalmente no está habilitado de manera predeterminada, para exponer sus puertos UDP en una red. A continuación, el atacante debe engañar al usuario para que imprima desde un servidor de impresora malicioso en su red local que aparece repentinamente en su máquina.
“Esta es una cadena de errores que se basan en la falsificación de una impresora en su red local y se agrega automáticamente a través de Network Discovery si está habilitado, generalmente no en su configuración predeterminada. Luego, se usa una variable no marcada para explotar otras vulnerabilidades en el sistema CUPS para ejecutar código, pero sólo cuando se activa un trabajo de impresión. dicho Ilkka Turunen, director técnico de campo de Sonatype.
“Entonces, buenas noticias: este es un RCE pero con varias mitigaciones, incluido el hecho de que el atacante debe poder conectarse a una computadora a través de UDP, que está en gran medida deshabilitado al ingresar a la red y el servicio generalmente no está habilitado de forma predeterminada. Parece que el impacto en el mundo real es bajo.
Por estas razones, Red Hat evaluó los defectos tiene un impacto de gravedad de “Importante” en lugar de Crítico.
Si bien las pruebas de BleepingComputer mostraron que el servicio no estaba habilitado de forma predeterminada en la mayoría de nuestros servidores Linux, una de nuestras máquinas virtuales Ubuntu sí lo hizo.. Otros tienen también notado en Twitter, Cups-Browsed fue habilitado por defecto en sus dispositivos Linux.
No hay soluciones, pero hay mitigaciones disponibles
Si bien las correcciones aún están en desarrollo, Red Hat ha compartido mitigaciones que requieren que los administradores dejen de ejecutar el servicio atravesado por tazas y eviten que se inicie al reiniciar usando los siguientes comandos para romper la cadena de explotación:
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Los usuarios de Red Hat también pueden usar el siguiente comando para saber si cups-browsed se está ejecutando en sus sistemas:
sudo systemctl status cups-browsed
Si el resultado muestra “Activo: inactivo (muerto)”, entonces la cadena de explotación se interrumpe y el sistema no es vulnerable. Si el resultado muestra “en ejecución” o “habilitado” y la directiva “BrowseRemoteProtocols” contiene el valor “cups” en el archivo de configuración /etc/cups/cups-browsed.conf, entonces el sistema es vulnerable.