Múltiples vulnerabilidades en OpenPrinting CUPS

Fecha de publicación 27/09/2024
Importancia
5 - Crítica
Recursos Afectados
  • CVE-2024-47176: cups-browsed, versiones 2.0.1 y anteriores;
  • CVE-2024-47076: libcupsfilters, versiones 2.1b1 y anteriores;
  • CVE-2024-47175: libppd, versiones 2.1b1 y anteriores;
  • CVE-2024-47177: cups-filters, versiones 2.0.1 y anteriores.

En el artículo del investigador aporta también información sobre sistemas afectados.

Para que un sistema sea vulnerable, debe tener habilitado el daemon de cups-browsed, que por defecto aparece no habilitado, para exponer sus puertos UDP en la red. Además, el atacante debería engañar a un usuario para que realizase una impresión desde un servidor de impresión malicioso en su red local.

Descripción

El investigador, Simone EvilSocket Margaritelli, ha publicado un artículo en el que describe 4 vulnerabilidades, 1 de severidad crítica y 3 altas, que afectan a OpenPrinting CUPS (Common UNIX Printing System), un sistema de impresión de código abierto presente en la mayoría de las distribuciones Linux actuales. La explotación de estas vulnerabilidades podría permitir a un atacante remoto ejecutar código, lo que podría conducir al robo de datos confidenciales y/o dañar sistemas de producción críticos. En concreto, el atacante podría reemplazar URL de IPP (Internet Printing Protocol) de impresoras ya existentes (o instalar nuevas) por otras maliciosas, permitiendo la ejecución de comandos arbitrarios cuando se inicia el trabajo de impresión.

Solución

En el artículo del investigador se aportan unas medidas de mitigación para abordar estas vulnerabilidades.

El equipo de seguridad de Canonical ha publicado actualizaciones para los paquetes cups-browsed, cups-filters, libcupsfilters y libppd para todas las versiones de Ubuntu LTS bajo soporte estándar.

Existen medidas de mitigación compartidas por RedHat, para detener la ejecución del servicio cups-browsed y evitar que se inicie al reiniciar:

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

Asimismo, para comprobar si cups-browsed está en ejecución en el sistema (el sistema no será vulnerable si el comando muestra la salida por pantalla Active: inactive (dead)):

sudo systemctl status cups-browsed

Adicionalmente, Ubuntu recomienda actualizar todos los paquetes, y seguidamente reiniciar el daemon de CUPS:

sudo apt update && sudo apt upgrade
sudo systemctl restart cups.service

Si esto no es posible, se pueden seleccionar los componentes afectados:

sudo apt update && sudo apt install --only-upgrade cups-browsed cups-filters cups-filters-core-drivers libcupsfilters2t64 libppd2 libppd-utils ppdc

sudo systemctl restart cups

Detalle

Las vulnerabilidades identificadas se describen a continuación, siendo las 3 primeras de severidad alta y la última crítica:

  • Debido a la vinculación del servicio a *:631 ( INADDR_ANY ), múltiples fallos en cups-browsed podrían ser explotados para introducir una impresora maliciosa en el sistema, permitiendo a un atacante ejecutar comandos arbitrarios de forma remota en la máquina de destino sin autenticación cuando se inicia un trabajo de impresión. Se ha asignado el identificador CVE-2024-47176 para esta vulnerabilidad.
  • La función cfGetPrinterAttributes5 en libcupsfilters no sanea los atributos IPP devueltos desde un servidor IPP. Cuando estos atributos IPP se utilizan, se pueden proporcionar datos controlados por un atacante al resto del sistema CUPS. Se ha asignado el identificador CVE-2024-47076 para esta vulnerabilidad.
  • La función ppdCreatePPPDFromIPP2 de libppd no sanea los atributos IPP al crear el búfer PPD (PostScript Printer Description). Cuando se utiliza en combinación con otras funciones como cfGetPrinterAttributes5, podría conllevar una ejecución de código a través de Foomatic. Se ha asignado el identificador CVE-2024-47175 para esta vulnerabilidad.
  • Cualquier valor pasado a FoomaticRIPCommandLine a través de un fichero PPD será ejecutado como un comando controlado por el usuario en cups-filters, permitiendo a un atacante remoto ejecutar código. Se ha asignado el identificador CVE-2024-47177 para esta vulnerabilidad.