Fallo grave de RCE no autenticado (CVSS 9.9) en CUPS de GNU/Linux (Actualizado!)
Actualización 26/09 18:00: Simone ha publicado la primera parte de su investigación y del trabajo realizado en conjunto con Vulnerability Information and Coordination Environment (VINCE).
El renombrado investigador de seguridad Simone Margaritelli (aka @evilsocket) ha identificado una vulnerabilidad de seguridad crítica que afecta a todos los sistemas GNU/Linux (y potencialmente a otros). La vulnerabilidad, que permite la ejecución remota de código (RCE) no autenticado, ha sido reconocida por los principales actores de la industria como Canonical y Red Hat, quienes han confirmado su gravedad con una puntuación CVSS de 9,9 sobre 10.
Margaritelli reveló la existencia de la vulnerabilidad hace aproximadamente tres semanas, pero ocultó detalles específicos para dar tiempo a los desarrolladores para abordar el problema. A pesar de esto, actualmente no hay ninguna solución funcional disponible. Las discusiones entre el investigador y los desarrolladores han llevado a un cronograma acordado para la divulgación:
- 30 de septiembre: divulgación inicial a la lista de correo de seguridad de Openwall.
- 6 de octubre: divulgación pública completa de los detalles de la vulnerabilidad.
Curiosamente, ha habido un retraso en la asignación de identificadores de vulnerabilidades y exposiciones comunes (CVE) a este problema. Margaritelli sugiere que se deberían asignar al menos tres CVE, posiblemente hasta seis, debido a la naturaleza multifacética de las vulnerabilidades involucradas.
Canonical y Red Hat no sólo han confirmado la alta gravedad de la vulnerabilidad, sino que también están trabajando activamente para evaluar su impacto y desarrollar parches. Sin embargo, se informa que algunos desarrolladores están debatiendo el impacto en la seguridad de ciertos aspectos de las vulnerabilidades, lo que puede estar contribuyendo al retraso en la publicación de una solución.
La falta de información detallada ha dejado tanto a los usuarios individuales como a los expertos en seguridad en un estado de gran preocupación. Sin saber qué componentes, funciones o versiones específicas se ven afectados, las organizaciones no pueden tomar medidas proactivas para proteger sus sistemas.
Además, la ausencia de asignaciones CVE plantea dudas sobre la coordinación y comunicación entre los investigadores de seguridad, los proveedores y las organizaciones responsables de la enumeración de vulnerabilidades.
Si bien una puntuación CVSS de 9,9 indica gravedad crítica, es importante abordar la situación con una perspectiva equilibrada. No todas las vulnerabilidades de alta gravedad se pueden explotar fácilmente en escenarios del mundo real. Por ejemplo:
- CVE-2024-7589: una vulnerabilidad de ejecución remota de código SSH inicialmente puntuada en 9,8 se reevaluó posteriormente a 8,1 debido a la dificultad de explotación.
- CVE-2024-38063: una vulnerabilidad RCE del sistema Windows con una puntuación CVSS de 9,8 llamó mucho la atención, pero se consideró muy difícil de explotar después de un análisis exhaustivo realizado por expertos en seguridad.
Estos ejemplos resaltan la importancia de un análisis técnico detallado para comprender completamente el impacto de una vulnerabilidad.
Mientras se espera la divulgación completa y los parches posteriores, los usuarios y administradores deben:
- Mantenerse informado siguiendo las actualizaciones de fuentes confiables de noticias sobre seguridad y comunicaciones oficiales de proveedores.
- Revisar y mejorar las medidas de seguridad existentes, como firewalls y sistemas de detección de intrusos.
- Prepararse para una rápida implementación de parches una vez que estén disponibles.
- No exponer el puerto 631/UDP (y 631/TCP) a Internet. Utilice ACL (listas de control de acceso) en el borde de Internet para proteger todos los dispositivos que, sin saberlo, podrían exponer el puerto 631 UDP/TCP.
- Implementar filtrado de host en los dispositivos dentro de su red para administrar quién puede acceder al puerto 631.
- Actualizar la instalación a una versión parcheada lo antes posible. Consultar al proveedor (distribución de Linux) para obtener parches.
- Si no se utiliza CUPS, considerar eliminarlo por completo de su sistema.
Simone dice que los problemas han sido documentados e informados exhaustivamente a los desarrolladores y el CERT y que han sido ignorados. También afirma que hay rutas de código fácilmente explotables que no han sido reconocidos ni parcheados.
Actualización 26/09 - Las fallas de CUPS permiten la ejecución remota de código de Linux, pero hay un problema
CUPS (abreviatura de Common UNIX Printing System) es el sistema de impresión más utilizado en sistemas Linux y, por lo general, también es compatible con dispositivos que ejecutan sistemas operativos similares a Unix, como FreeBSD, NetBSD y OpenBSD y sus derivados.
Bajo ciertas condiciones, los atacantes pueden encadenar un conjunto de vulnerabilidades en múltiples componentes del sistema de impresión de código abierto CUPS para ejecutar código arbitrario de forma remota en máquinas vulnerables.
Identificados como CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) y CVE-2024-47177 (cups-filters) y descubiertos por Simone Margaritelli, estos fallos de seguridad no afecta a los sistemas en su configuración predeterminada.
Uno de sus componentes es el demonio de navegación de CUPS, que busca impresoras compartidas en la red. 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 está habilitado, lo cual no está en la mayoría de los sistemas, este escucha en el puerto UDP 631. También, de forma predeterminada, permitirá conexiones remotas desde cualquier dispositivo en la red para crear una nueva impresora.
Margaritelli descubrió que podía crear una impresora PostScript Printer Description (PPD) maliciosa que podía anunciarse manualmente en un servicio de navegación de CUPS expuesto en el puerto UDP 631. Esto hace que la máquina remota instale automáticamente la impresora maliciosa y la ponga a disposición. Si el usuario de ese servidor expuesto imprime en la nueva impresora, el comando malicioso en el PPD se ejecutará localmente en la computadora.
El comando a ejecutar al imprimir se agrega a través de un filtro foomatic-rip, que ejecuta comandos en un dispositivo para que un trabajo de impresión se represente correctamente.
Si bien se trata de una cadena de ejecución remota de código, cabe señalar desde el principio que los atacantes deben superar algunos obstáculos para explotar las vulnerabilidades y lograr la ejecución remota de 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. Luego, el atacante tiene que engañar al usuario para que imprima desde un servidor de impresora malicioso en su red local que aparece de repente en su máquina.
Entonces, buenas noticias: es un RCE pero con varias mitigaciones, incluido el hecho de que el atacante necesita poder conectarse a una computadora a través de UDP, que está ampliamente deshabilitado en el ingreso a la red y el servicio generalmente no está activado de manera predeterminada. Parece que el el impacto en el mundo real es bajo.
La lista de vulnerabilidades es la siguiente:
- Proveedor afectado: OpenPrinting
- Producto afectado: Varios componentes del sistema de impresión CUPS: cups-browsed, libppd, libcupsfilters y cups-filters.
- Versión afectada: Todas las versiones <= 2.0.1 (última versión) y master.
- CVE-2024-47176: cups-browsed <= 2.0.1 se vincula en UDP INADDR_ANY:631 y confía en cualquier paquete de cualquier fuente para activar una solicitud IPP Get-Printer-Attributes a una URL controlada por el atacante.
- CVE-2024-47076: libcupsfilters <= 2.1b1 cfGetPrinterAttributes5 no valida ni desinfecta los atributos IPP devueltos desde un servidor IPP, proporcionando datos controlados por el atacante al resto del sistema CUPS.
- CVE-2024-47175: libppd <= 2.1b1 ppdCreatePPDFromIPP2 no valida ni desinfecta los atributos IPP cuando los escribe en un archivo PPD temporal, lo que permite la inyección de datos controlados por el atacante en el PPD resultante.
- CVE-2024-47177: cups-filters <= 2.0.1 foomatic-rip permite la ejecución de comandos arbitrarios a través del parámetro PPD FoomaticRIPCommandLine.
Por estas razones, Red Hat ha calificado las fallas como de impacto de gravedad "Importante" en lugar de crítica. RHEL, en un aviso, dijo que todas las versiones del sistema operativo se ven afectadas por las cuatro fallas, pero señaló que no son vulnerables en su configuración predeterminada. Etiquetó los problemas como Importantes en cuanto a gravedad, dado que es probable que el impacto en el mundo real sea bajo.
Por ahora no hay parche, pero hay medidas de mitigación disponibles:
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 "Active: inactive (dead)", entonces la cadena de explotación se detiene y el sistema no es vulnerable. Si el resultado muestra "running" o "enabled" y la directiva "rowseRemoteProtocols" contiene el valor "cups" en el archivo de configuración /etc/cups/cups-browsed.conf, entonces el sistema es vulnerable.
La empresa de ciberseguridad Rapid7 señaló que los sistemas afectados son explotables, ya sea desde Internet pública o a través de segmentos de red, solo si se puede acceder al puerto UDP 631 y el servicio vulnerable está escuchando.
Fuente: SecurityOnline
Ojito
ResponderBorrar