Ataque a sistemas UNIX: ataque a través de CUPS, Parte I
Resumen
- CVE-2024-47176:
cups-browsed <= 2.0.1 se enlaza en UDP INADDR_ANY:631, lo que puede activar solicitudes IPP Get-Printer-Attributes hacia una URL controlada por un atacante
- CVE-2024-47076:
cfGetPrinterAttributes5 de libcupsfilters <= 2.1b1 no valida ni sanea los atributos IPP devueltos por el servidor IPP, por lo que puede entregar datos controlados por un atacante al sistema CUPS
- CVE-2024-47175:
ppdCreatePPDFromIPP2 de libppd <= 2.1b1 no valida ni sanea los atributos IPP al escribirlos en un archivo PPD temporal, lo que permite inyectar datos controlados por un atacante
- CVE-2024-47177:
foomatic-rip de cups-filters <= 2.0.1 permite la ejecución de comandos arbitrarios mediante el parámetro PPD FoomaticRIPCommandLine
Impacto
- Un atacante remoto no autenticado puede reemplazar la URL IPP de una impresora existente por una URL maliciosa o instalar una nueva impresora, y ejecutar comandos arbitrarios cuando se inicie un trabajo de impresión
Punto de entrada
- WAN / Internet pública: un atacante remoto envía un paquete UDP al puerto 631. No requiere autenticación
- LAN: un atacante local puede falsificar anuncios de zeroconf / mDNS / DNS-SD para lograr RCE a través de la misma ruta de código
Sistemas afectados
- La mayoría de las distribuciones GNU/Linux
- Algunos BSD
- Google Chromium / ChromeOS (posiblemente)
- Oracle Solaris
- Otros
Solución
- Deshabilitar y eliminar el servicio
cups-browsed
- Actualizar los paquetes CUPS del sistema
- Si no es posible actualizar el sistema, bloquear el puerto UDP 631 y todo el tráfico DNS-SD
Introducción
- Hace unas semanas, mientras configuraba Ubuntu en una laptop nueva, ejecuté el comando
netstat -anu para verificar qué servicios estaban escuchando en puertos UDP
- Descubrí que
cups-browsed estaba escuchando y respondiendo por UDP en el puerto 631 en todas las interfaces de red
cups-browsed se encarga de agregar automáticamente nuevas impresoras al sistema
¿Qué es cups-browsed?
cups-browsed forma parte del sistema CUPS, descubre nuevas impresoras y las agrega automáticamente al sistema
- El archivo de configuración predeterminado está comentado y permite que cualquiera se conecte
Desbordamiento de búfer en la pila y condición de carrera
cups-browsed no está incluido en la cobertura de oss-fuzz
- En la función
process_browse_data pueden ocurrir un desbordamiento de búfer en la pila y una condición de carrera
- Estos problemas fueron reportados a los desarrolladores y a CERT, pero aún no han sido corregidos
Volviendo a found_cups_printer
- La función
found_cups_printer extrae la URL del paquete y la pasa a la función cfGetPrinterAttributes
- Esta URL se conecta a un servidor controlado por el atacante
Protocolo de Impresión por Internet (IPP)
- IPP es un protocolo para la comunicación entre dispositivos cliente e impresoras
- Al devolver atributos de impresora controlados por el atacante, se puede agregar una impresora al sistema
Resumen de GN⁺
- Este artículo explica cómo explotar vulnerabilidades del sistema CUPS para lograr ejecución remota de código
- Existen varias vulnerabilidades relacionadas con CUPS que pueden permitir a un atacante tomar control del sistema
- Estas vulnerabilidades aún no han sido corregidas, y los usuarios deben deshabilitar el servicio CUPS o actualizarlo
- Otros proyectos con funcionalidad similar incluyen
LPRng y las versiones más recientes de CUPS
Aún no hay comentarios.