Ir al contenido
Nuevo informe: Consiga su copia del Informe sobre el estado de Internet 2024. | Descargar hoy
Blogs

CVE-2022-46169: Cactus

A principios de diciembre de 2022, una solución de monitorización de red de código abierto llamada Cacti (originalmente diseñada para ser un frontend para la base de datos de gráficos de red estándar de la industria RRDTool) publicó un aviso de seguridad detallado para versiones hasta la 1.2.22 inclusive y se le asignó el número CVE CVE-2022-46169. Esta vulnerabilidad pasó desapercibida hasta que, el 2 de enero de 2023, SonarSource publicó una entrada en su blog detallando sus hallazgos, y unos días más tarde, el 7 de enero de 2023, la Fundación Shadowserver publicó que habían empezado a ver que la vulnerabilidad estaba siendo explotada para descargar e instalar malware.

Censys ha observado 6.427 hosts en Internet que ejecutan una versión de Cacti. Desafortunadamente, sólo podemos ver la versión exacta del software en ejecución cuando un tema específico(sunrise) está habilitado en la aplicación web. Pero esto nos da una idea de lo que es vulnerable y no vulnerable a este problema. Las siguientes son las versiones de Cacti que pudimos ver. Las filas resaltadas en rojo son vulnerables, mientras que las resaltadas en verde son versiones más recientes no vulnerables. Como podemos ver, la mayoría de estos servidores Cacti están ejecutando una versión muy antigua y obsoleta, con sólo 26 hosts que ejecutan una de las versiones parcheadas.

Versión Cactus Recuento de anfitriones
1.1.38 465
1.2.16 141
1.2.22 122
1.2.21 111
1.2.19 106
1.2.14 84
1.2.10 64
1.2.15 63
1.2.2 55
1.2.18 53
1.2.17 52
1.2.20 44
1.1.19 33
1.2.12 32
1.2.3 25
1.2.23 22
1.2.8 19
1.1.36 16
1.2.9 15
1.1.37 15
1.2.7 13
1.2.5 12
1.2.6 11
1.2.1 10
1.1.28 8
1.2.13 8
1.2.4 8
1.1.30 7
1.1.27 7
1.1.24 6
1.2.11 6
1.1.35 6
1.2.0 4
1.3.0 4
1.1.29 4
1.1.26 3
1.1.25 3
1.1.20 3
1.1.33 2
1.1.21 1

La mayoría de los hosts que ejecutan Cacti se encuentran en Brasil, con 1.320 hosts, seguido de Indonesia, con 795 hosts, y Estados Unidos, con 254.

País alberga
Brasil 1,320 20.54%
Indonesia 795 12.37%
Estados Unidos 254 3.95%
China 193 3.0%
Bangladesh 104 1.62%
Rusia 99 1.54%
Ucrania 93 1.45%
Filipinas 70 1.09%
Tailandia 65 1.01%
Reino Unido 56 0.87%

Detalles de la vulnerabilidad

La vulnerabilidad más importante se encuentra en la forma en que Cacti procesa una consulta HTTP específica para un tipo concreto de "acción" de sondeo definida en la base de datos. En el software, los usuarios pueden definir acciones para monitorizar un único host (llamado "poller"). Uno de estos tipos de sondeo ejecutará un script PHP con la expectativa de que los datos devueltos estén formateados correctamente. Pero uno de los argumentos de consulta utilizados para ejecutar estos scripts PHP no se desinfecta correctamente y se pasa a la llamada de ejecución, dando lugar a la inyección de comandos. Aunque esta función sólo debería estar disponible para usuarios autenticados, se ha descubierto otro error que permite al atacante saltarse la autenticación por completo.

A continuación podemos ver una inyección de comando exitosa que lleva a la ejecución remota de código (RCE):

El blog de SonarSource tiene un excelente artículo con más detalles sobre la vulnerabilidad. Se ha escrito un exploit de prueba de concepto para inyectar y ejecutar comandos en un servidor Cacti vulnerable.

¿Quién vigila a los vigilantes?

Cacti no es la única aplicación utilizada para monitorizar la salud de un conjunto de servicios o de una red; hay muchos más ejemplos. Este tipo de herramientas de monitorización son objetivos excelentes para los atacantes. Dado que estos sistemas son, en muchos sentidos, bases de datos de inventario de activos, contienen información valiosa sobre la disposición y la arquitectura de una red. Dado que estos sistemas suelen tener algún nivel de acceso por defecto (normalmente, como mínimo, de sólo lectura) a puntos finales (de monitorización) de organizaciones enteras, comprometer un host de este tipo podría ser el primer paso para infiltrarse en todo.

Aunque no todo el software de monitorización como Cacti tiene una vulnerabilidad conocida (actualmente), esto no es excusa para dejarlos expuestos públicamente en Internet si no tienen que estarlo, especialmente porque los datos que contienen son muy valiosos. Censys siempre sugiere habilitar la autenticación y colocar los servicios de monitorización detrás de una VPN o segmento VPC, junto con reglas de filtrado de IP adecuadas para garantizar que Internet no tenga ningún acceso a sus recursos críticos.

Los atacantes pueden utilizar otros servicios como Cacti para obtener información sobre una organización. Por ejemplo, la herramienta de monitorización de sistemas Netdata proporciona en tiempo real métricas del sistema a nivel de host sobre el dispositivo en el que se está ejecutando. Tampoco viene con autenticación por defecto, lo que significa que cualquiera con un navegador web puede ver el funcionamiento interno de un servidor y todos los detalles jugosos que contiene. En el momento de escribir estas líneas, había más de 30.000 paneles de Netdata en Internet.

Traefik, un moderno proxy inverso HTTP y equilibrador de carga para microservicios, también incluye un servicio opcional de monitorización y un panel de control para sus despliegues. Cuando el servicio no está configurado con la seguridad activada, mucha información puede ser divulgada accidentalmente al público. Por ejemplo, todas las aplicaciones y servicios que se están ejecutando actualmente, los puertos y los mensajes de error que pueda tener la instancia.

(Página de inicio del panel de control de Traefik)

(Supervisión a nivel de servicio)

En el momento de escribir este post, más de 14.000 paneles de monitorización de Traefik estaban expuestos a Internet, lo que podría proporcionar información valiosa sobre la red de una organización.

Incluso los protocolos utilizados para ayudar a monitorizar los sistemas pueden configurarse mal y utilizarse para desenterrar información sobre una red; por ejemplo, SNMP (Simple Network Management Protocol) suele configurarse con un usuario público y, si sabes cómo utilizarlo, puede convertirse en una interfaz muy valiosa. Por ejemplo, puedes utilizar los servicios públicos de SNMP para recopilar información sobre las tablas de enrutamiento internas y externas de un host o router:

~$ snmpnetstat -v 2c -c public -Cr <X.X.X.X>
Routing tables (ipCidrRouteTable)
Destination                Gateway            Flags   Interface
default                    XXX.XX.XX.254      <UG>    
10/8                       10.255.1.254       <UG>    
10.255.1/24                *                  <U>     Gi2.1023
10.255.1.6                 *                  <UH>    Gi2.1023
172.XX.10/24               *                  <U>     Gi1.1017
172.XX.10.22               *                  <UH>    Gi1.1017
172.XX/16                  XXX.XX.X.254       <UG>    
172.XX.1/24                *                  <U>     Gi2.1012
172.XX.1.6                 *                  <UH>    Gi2.1012

Incluso puedes ver todas las conexiones de red actualmente establecidas que se ejecutan a través de ese dispositivo y todos los servicios de escucha que pueden o no estar detrás de un cortafuegos. Incluso puede imitar la funcionalidad del comando Unix "netstat":

 

~$ snmpnetstat -v 2c -c public -Ca X.X.X.X
Active Internet (tcp) Connections
Proto Local Address               Remote Address                    State   PID
tcp4  *.*                         *.*                                   0     0
Listening Internet (tcp) Connections
Proto Local Address                 PID
tcp4  *.*                             0
Active Internet (udp) Connections
Proto Local Address               Remote Address                PID
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  *.*                         *.*                             0
udp4  XX.XXX.XXX.XX.snmp          ?.35504                         0
udp4  XXX.10.10.22.bootps         XXX.XX.X.XXX.bootps           331
udp4  XXX.10.10.22.ntp            *.ntp                           0
udp4  XXX.10.10.22.snmp-tra       *.*                             0
udp4  XXX.10.10.22.isakmp         *.*                             0
udp4  XXX.10.10.22.ipsec-na       *.*                             0
udp4  XXX.10.10.22.50834          *.*                             0

SNMP está tan ampliamente desplegado que Censys puede ver más de 1,5 millones de estos servicios en Internet, y si sumamos todas las interfaces físicas de red de todos estos servicios (sumando todos los valores del OID, que contiene el número de interfaces), obtenemos 2.197.202.422 interfaces físicas. Podría seguir y seguir sobre la utilidad de SNMP desde la perspectiva de un atacante, pero eso es para otro post en otro día.

Estos son sólo algunos ejemplos de herramientas de monitorización mal configuradas o inseguras por defecto que hemos encontrado en Censys; el punto principal que queremos destacar es que este tipo de servicios deberían estar bloqueados y lejos de las manos indiscretas de posibles atacantes.

¿Qué se puede hacer?

  • Actualizar a la última versión de Cacti (v1.2.23 y v1.3.0)
  • Restrinja el acceso a esta aplicación (y a todas las aplicaciones de supervisión de red) mediante reglas de cortafuegos, segmentación VPN o segmentación VPC para hacerla inaccesible desde Internet.
  • Censys Los clientes de ASM tienen acceso a varios riesgos de Cacti.

Referencias

Soluciones de gestión de la superficie de ataque
Más información