1 puntos por GN⁺ 2024-09-27 | Aún no hay comentarios. | Compartir por WhatsApp

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.

Aún no hay comentarios.