Симоне Маргарителли (Simone Margaritelli), автор межсетевого экрана OpenSnitch и сетевого анализатора bettercap, досрочно раскрыл информацию о ранее анонсированных критических уязвимостях, позволяющих удалённо атаковать дистрибутивы GNU/Linux, Solaris, FreeBSD и некоторые другие BSD-системы. Изначально публикация была запланирована на 6 октября, но из-за утечки информации сведения пришлось опубликовать досрочно, до того как большинство дистрибутивов успеет подготовить обновление пакетов. Уязвимости затрагивают сервер печати CUPS и позволяют удалённо без прохождения аутентификации добиться выполнения кода в системе.
El investigador que identificó el problema ha preparado un prototipo funcional de un exploit que utiliza una combinación de varias vulnerabilidades y permite la ejecución remota de código con los derechos del proceso de procesamiento del trabajo de impresión CUPS (normalmente el usuario "lp"). El exploit le permite reemplazar silenciosamente los parámetros de la impresora del usuario o agregar una nueva impresora asociada con un servidor IPP atacante en ejecución, que emite una descripción PPD especialmente diseñada de la impresora. El procesamiento de este PPD durante el inicio de un trabajo de impresión conduce a la ejecución de. el código del atacante (es necesario que la víctima inicie la impresión en una impresora sustituida o reemplazada por el atacante).
Sistemas con susceptibles a ataques servidor Impresión de CUPS y el proceso cups-browsed en ejecución, que acepta conexiones de red en el puerto 631 (UDP). El ataque también puede llevarse a cabo desde una red local, donde el acceso a... servidor Los protocolos zeroconf, mDNS o DNS-SD se utilizan para la impresión. Solo las configuraciones de cups-browsed con el parámetro BrowseRemoteProtocols establecido en "cups" en el archivo /etc/cups/cups-browsed.conf son vulnerables. En distribuciones basadas en systemd, puede comprobar si el servicio cups-browsed se está utilizando con el comando "sudo systemctl status cups-browsed".
Уязвимость проявляется во всех системах печати на базе CUPS, в которых используются уязвимые версии пакетов cups-filters, libcupsfilters, libppd и cups-browsed. Исправления пока доступны только в виде патчей (1, 2, 3) — актуальные версии cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 и cups-browsed 2.0.1 подвержены уязвимостям. В дистрибутивах проблема остаётся неисправленной, проследить за появлением обновлений можно на следующих страницах: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. В качестве обходного пути защиты до установки обновления можно закрыть для внешних сетей доступ к UDP-порту 631, отключить сервис cups-browsed или выставить настройку BrowseRemoteProtocols в значение «none».
Vulnerabilidades identificadas:
- CVE-2024-47176 es una vulnerabilidad en el proceso de exploración de tazas, que crea un socket de red que acepta conexiones en el puerto 631, se conecta a todas las interfaces de red del sistema y acepta solicitudes IPP "Get-Printer-Attributes" de cualquier externo. sistemas. Al manipular este servicio, es posible agregar al sistema una impresora controlada por un atacante y explotar vulnerabilidades en otros componentes de CUPS transfiriendo la configuración PPD.
- CVE-2024-47177 es una vulnerabilidad en el controlador foomatic-rip del conjunto cups-filters, que permite ejecutar el código pasando el parámetro FoomaticRIPCommandLine en un archivo PPD, que un atacante puede transmitir debido a la vulnerabilidad descrita anteriormente. en tazas navegadas. Los comandos de shell especificados en el parámetro FoomaticRIPCommandLine se ejecutan tal cual, sin tener en cuenta el hecho de que el parámetro puede ser configurado por un externo. Por ejemplo, para escribir en el archivo /tmp/VULNERABLE, puede especificar "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE".
- CVE-2024-47175 es una vulnerabilidad en libppd causada por una falta de validación del valor ppdCreatePPDFromIPP2 al escribir atributos IPP en un archivo PPD temporal. El problema le permite lograr la sustitución de datos arbitrarios en el archivo PPD resultante adjuntando atributos utilizando el carácter de avance de línea. Por ejemplo, puede omitir la verificación y, junto con los atributos permitidos, sustituir el atributo FoomaticRIPCommandLine para explotar la vulnerabilidad mencionada anteriormente en cups-filters.
- CVE-2024-47076 es una vulnerabilidad en la biblioteca libcupsfilters del paquete cups-filters debido a la falta de verificación de los valores cfGetPrinterAttributes5 devueltos por un servidor IPP externo, lo que permite a un atacante organizar el procesamiento de atributos IPP arbitrarios en otros Subsistemas CUPS, por ejemplo, al generar archivos PPD.
El escenario de ataque a CUPS se reduce a los siguientes pasos:
- Despliegue del propio servidor IPP del atacante.
- Enviar un paquete UDP a la víctima con un enlace a una impresora vinculada a un servidor IPP ejecutado por los atacantes.
- Después de recibir este paquete, el sistema de la víctima se conecta al servidor IPP del atacante y solicita atributos de impresora.
- En respuesta a la solicitud de la víctima, el servidor IPP del atacante devuelve un archivo PPD con atributos, incluido el atributo FoomaticRIPCommandLine. Este atributo se adjunta a uno de los atributos válidos utilizando el carácter "\n" en una sola línea (por ejemplo, "cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "), lo que omite el verifique y lleve a registrar FoomaticRIPCommandLine como un atributo separado al guardar los datos recibidos en un archivo temporal.
- Como resultado del procesamiento de los atributos transmitidos, se crea un archivo PPD en el sistema de la víctima: ... *cupsSNMPSupplies: False *cupsLanguages: “en” *cupsPrivacyURI: “https://www.google.com/” *FoomaticRIPCommandLine: “echo 1 > /tmp/I_AM_VULNERABLE " *cupsFilter2 : "aplicación/pdf aplicación/vnd.cups-postscript 0 foomatic-rip" *cupsSingleFile: Verdadero *cupsFilter2: "aplicación/vnd.cups-pdf aplicación/pdf 0 -" . ..
- Al imprimir en una impresora configurada por el atacante, se ejecutará el comando “echo 1 > /tmp/I_AM_VULNERABLE” en el sistema de la víctima.
El investigador que identificó las vulnerabilidades señala que le llevó un par de días encontrar la vulnerabilidad, pero luego siguió una correspondencia de 22 días con los desarrolladores del proyecto OpenPrinting, tratando de convencerlos de la importancia del problema y la necesidad de solucionarlo. preparar parches. La discusión quedó empantanada en el debate sobre si valía la pena solucionar estos problemas, y la situación sólo se cambió cuando se generó entusiasmo público sobre la identificación de un problema crítico. También es interesante la aparición de una filtración de información, durante la cual un informe confidencial y un exploit enviado al CERT aparecieron en el foro breakforums.st en el dominio público, a pesar del embargo sobre la divulgación de información.
Fuente: opennet.ru
