Comunidad Tecnología

¿Vulnerabilidad, funcionalidad o simplemente una mala configuración?

enero 17, 2020

¿Vulnerabilidad, funcionalidad o simplemente una mala configuración?

El post está disponible también en : Inglés

¿Vulnerabilidad de Pandora FMS? A veces las cosas no son lo que parecen…

Recientemente hemos recibido la notificación de un usuario preocupado porque había encontrado una “vulnerabilidad” en Pandora FMS. Además, no cualquier vulnerabilidad sino una que daba acceso ¿root? al sistema. Seguidamente, este usuario k4m1ll0 escribió un post en Medium informando a la comunidad de esta vulnerabilidad. Si quieres leer el post original en inglés haz click aquí.

Evidentemente, en cuanto lo leímos una de nuestras ingenieras intento explicar a k4m1ll0 que no es una vulnerabilidad de Pandora FMS, sino que es un asunto relacionado con la configuración y que, por tanto, está contemplado. Después de intercambiar un par de respuestas en el post nos dimos cuenta de que, aunque k4m1ll0 ha estado usando y analizando nuestra aplicación en profundidad, de lo cual nos sentimos orgullosos y agradecidos, sufre de lo que me gusta llamar “verdades a medias”. Se ha topado con un determinado comportamiento de la aplicación, pero no sabe cómo ni porqué sucede, así que rellena los espacios en blanco con suposiciones.

Por ello, en lugar de seguir respondiendo en el post de Medium, hemos decidido escribir un artículo en el que demostraremos que no es un fallo de seguridad y así aprovechamos esta oportunidad y explicamos el funcionamiento de la infraestructura de Pandora FMS para los que aún no la conozcan. Vamos, que nos ha venido bien, ¿no?

Descripción

En primer lugar, voy a explicar con nuestras propias palabras (y para los que no estén muy duchos en inglés), lo que ha descubierto nuestro amigo k4m1ll0.

La vulnerabilidad de Pandora FMS comienza con loguearse u obtener acceso al entorno de la consola web de Pandora FMS con un usuario administrador global; sí, así comienza. Una vez entras como administrador, debes usar el sistema de alertas para crear un comando que se ejecuta al cumplirse las condiciones o al forzar la alerta desde la consola.

Técnicamente, lo que ha descubierto k4m1ll0 es la funcionalidad de alertas. Podéis ver el funcionamiento en nuestra documentación oficial: https://pandorafms.com/docs/index.php?title=Pandora:Documentation_es:Alertas

Para los que no queráis entrar en los detalles más técnicos os explicare brevemente lo que sucede.

Si eres administrador, en la consola web puedes configurar un Comando, que como su propio nombre indica es un comando de sistema, o incluso un script o binario compilado, cualquier ejecución en el sistema. Ya sabéis que en Pandora FMS nos encanta dar todas las opciones posibles (la F es de flexibilidad).

Este comando luego puede ser usado por una Acción que, grosso modo, define la forma en la que se ejecutará este comando y los parámetros que tendrá. Si el comando fuese un ping, en la acción definiríamos cuántos paquetes enviaríamos y la IP a la que apuntaríamos, por poner un ejemplo muy sencillo.

Después tenemos que definir una Plantilla, que son las reglas para disparar la alerta. Hay muchas reglas posibles y una de ellas es, obviamente, poder disparar la Alerta de forma manual, ejecutando así la Acción definida.

Si nos quedamos aquí, parece peligroso, ¿no? ¿Pondría en riesgo nuestro entorno? ¿Y si ese comando que define el administrador fuera malicioso? Aquí se ha quedado nuestro amigo k4m1ll0 y es por eso que lo defino como una “media verdad”, porque efectivamente es tan peligroso como si le doy las llaves de mi casa a alguien que pudiera hacer algo malicioso en ella; recuerda que la primera condición es que debemos ser administradores de la herramienta para crear un comando. Un usuario estándar no tiene las llaves de mi casa, evidentemente, por lo que no puede crear un comando.

Pero aún no confíes en mí, todavía hay más. Podrás ver por ti mismo cómo no es una vulnerabilidad desde ningún punto de vista.

Ahora vamos a describir el proceso para lanzar ese comando; no hay nada mejor que saber cómo funcionan las cosas para sacar nuestras conclusiones.

Como sabemos, Pandora FMS consta de 3 elementos principales: consola web, base de datos y servidor. Que pueden o no estar en la misma máquina. Pandora FMS es una aplicación diseñada para ofrecer flexibilidad y escalabilidad como principio.

Vulnerabilidad de Pandora FMS 1

Es muy sencillo: la consola es una interfaz web, que está desarrollada en PHP sobre un servidor Apache, que por defecto corre con un usuario limitado apache. Como sabemos, el usuario apache no tiene prácticamente ningún privilegio en el sistema, por lo que no tiene sentido que la alerta la ejecute la consola.

No, lo que hace la consola es escribir los valores que hemos definido en los formularios web directamente a la base de datos. Al lanzar una alerta manual en la consola, lo que hace es poner un flag en la base de datos para indicar que la alerta debe ejecutarse. Yo no veo hasta ahora ningún peligro.

La base de datos MySQL almacena datos, nos da una interfaz para insertar, modificar y consultar estos datos y… ya, eso hace. Por lo que aquí tampoco hay ningún peligro.

Por último está nuestro servidor, el Pandora Server, que es el encargado de ejecutar la motorización. Desarrollado en Perl, con servidores modulares para diferentes casos, gestión de hilos independiente por cada servidor, con más configuraciones y posibilidades que un móvil moderno. Vamos, una maravilla, una obra de arte de la ingeniería del software.

Entre las tareas de nuestro servidor está la ejecución de las alertas, las cuales lee de la base de datos, ejecutándolas cuando las condiciones de disparo se cumplen o cuando forzamos la alerta desde la consola. Y es aquí donde está la posibilidad de ejecutar comandos como root. Ojo, dependerá del proceso de instalación y configuración del sistema a la hora de definir el usuario que ejecutará el servidor. Si el servidor corre como root, por supuesto los comandos de las alertas se ejecutarán como root, pero si el usuario que corre el servidor (el cual se puede definir al instalar el paquete o cambiarlo en el script de arranque, si ya está instalado) es user1, solo podrá ejecutar lo que user1 tenga permisos de ejecutar, y será imposible tener acceso root al sistema, que además no es el sistema de la consola, es el sistema del servidor, el cual puede, a diferencia de la consola, no estar expuesto al usuario.

Vulnerabilidad de Pandora FMS 3

Veamos un ejemplo.

En este entorno se accede a la consola web por medio de un reverse proxy que va a un balanceador que balancea entre 3 consolas.

Vulnerabilidad de Pandora FMS 3

A su vez, estas consolas conectan con una base de datos que está detrás de un firewall, que a su vez conecta con el servidor de Pandora FMS detrás de otro firewall, corriendo el servidor con un usuario restringido solo a las tareas que necesita.

Incluso si te doy permiso de administrador de la consola (recuerda que el primer paso en cuanto a seguridad es definir los perfiles correctos para cada usuario), aún así, supongamos que eres admin, no hay ninguna forma de que puedas obtener acceso root, ni siquiera podrás ejecutar ningún comando al que el administrador de sistemas no haya dado permisos de ejecución al usuario restringido User 1.

Si defines un comando que no esté dentro de la lista de comandos que tiene el User 1, el servidor no va a ser capaz de ejecutarlo, por lo que toda la teoría de la vulnerabilidad de Pandora FMS, en este sentido, queda desmontada con unas buenas prácticas de seguridad.

Por último, me gustaría destacar un par de detalles. Es verdad que, por defecto, si no lo configuras o lo defines explícitamente en la instalación, el servidor correrá como root.

Esto es intencionado, en entornos pequeños y medianos y en redes aisladas no hay necesidad de tener una política de restricción de ejecución de usuarios de sistema y su ejecución de comandos y el esfuerzo administrativo que conlleva. Con mantener una política adecuada de creación de perfiles en la consola, se evitan el 99.9% de los problemas de seguridad.

Pero, si aun así quieres más seguridad, no te preocupes. Como hemos visto, puedes correr el servidor de una forma restrictiva con un usuario al que tú le definas qué permisos tiene y sobre qué los tiene. Lo dicho, la “F” es de flexibilidad, por lo que con Pandora FMS tienes todas las herramientas a tu disposición.

Si te queda alguna duda respecto al funcionamiento del sistema de alertas y sus posibles configuraciones, deja un comentario, o mejor pásate por nuestro foro donde una extensa comunidad te ayudará a resolver todas tus dudas.


One comment
  1. Leo

    Una vulnerabilidad (en términos de informática) es una debilidad o fallo en un sistema de información que pone en riesgo la seguridad de la información pudiendo permitir que un atacante pueda comprometer la integridad, disponibilidad o confidencialidad de la misma. Según (INCIBE, 2017)

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.