Inicio / Blog / Vulnerabilidad authentication bypass en OpenVAS

Vulnerabilidad authentication bypass en OpenVAS

Publicado el 19/12/2013, por Antonio Sánchez (INCIBE) comentarios
OpenVAS

El 3 de agosto de 2013 se comunicó al equipo de OpenVAS el descubrimiento de una vulnerabilidad de salto de autenticación (authentication bypass) en OpenVAS que permitiría la ejecución de comandos propios del sistema.

OpenVAS

OpenVAS es una solución completa de escaneo y gestión de vulnerabilidades que se distribuye como software libre bajo la licencia GNU General Public License (GNU GPL).

La arquitectura de Openvas comprende varios servicios distribuidos y una serie de herramientas que facilitan su manejo y gestión. Los distintos servicios se ofrecen y se comunican a través de protocolos XML que se sirven securizados con SSL.

 

Figura 1 - Arquitectura OpenVAS

Como puede apreciarse en la Figura 1 - Arquitectura OpenVAS el sistema se compone de tres servicios: OpenVAS Administrator, OpenVAS Manager y OpenVAS Scanner, sobre los que se puede interactuar utilizando cualquiera de las herramientas disponibles: Greenbone Security Desktop, Greenbone Security Assistant y OpenVAS CLI.

El escáner (OpenVAS Scanner) es el servicio encargado de ejecutar las pruebas de vulnerabilidades (NVT - Network Vulnerability Test) contra los objetivos fijados. Este escáner recibe las configuraciones de OpenVAS Manager, que es el servicio central que contiene toda la inteligencia del sistema, gestionando las planificaciones, ejecuciones e informes de las distintas evaluaciones. OpenVAS Manager se comunica con OpenVAS Scanner utilizando el protocolo OTP (OpenVAS Transfer Protocol) y, al mismo tiempo, ofrece el protocolo OMP (OpenVAS Management Protocolo) para poder controlar el sistema.

Por otro lado, OpenVAS Administrator, que ofrece el servicio a través del protocolo OAP (OpenVAS Administration Protocol), se encarga de la gestión de usuarios y de las configuraciones de sincronización.

Una de las características más interesantes de OpenVAS a efectos prácticos es la configuración maestro-esclavo del sistema. Esta configuración posibilita comunicar un OpenVAS Manager maestro con varios OpenVAS Manager esclavos, de forma que cada evaluación de seguridad se puede asignar a un esclavo para que éste la realice. De cara a la ejecución de los diferentes tests, esto posibilita que, disponiendo de un OpenVAS Manager en cada segmento de nuestra red, las diferentes pruebas que se ejecuten se hagan en ese segmento de red, por lo que la electrónica de red que une varios segmentos no tendría que gestionar el alto tráfico que se puede generar en su ejecución.

 

Figura 2 - Arquitectura maestro-esclavo OpenVAS

Vulnerabilidad

La vulnerabilidad descubierta afecta a los servicios OpenVAS Manager y OpenVAS Administrator, y concretamente afecta a la gestión de los protocolos OMP y OAP, pudiéndose saltar la autenticación que proporciona el propio protocolo y ejecutar comandos que proporcionan dichos protocolos para la gestión de OpenVAS Manager y OpenVAS Administrator.

El error se produce por una incorrecta validación de una variable en los archivos omp.c y oap.c que provoca que la condición afectada siempre sea cierta, por lo que se ejecutarán las instrucciones correspondientes en cualquier situación, como si se tratase de un usuario autenticado.

El código que soluciona esta vulnerabilidad y que se encuentra en las últimas revisiones publicadas de OpenVAS sería el siguiente:

Para poder explotar esta vulnerabilidad de forma remota, los servicios tienen que estar publicados en las interfaces accesibles a través de la red, mientras que por defecto OpenVAS está configurado para escuchar comunicaciones entrantes solamente en la interfaz local (localhost, 127.0.0.1).

Sin embargo, si se utiliza una arquitectura maestro-esclavo, todos los esclavos tendrán los servicios OMP accesibles remotamente, por lo que se podrá utilizar esta vulnerabilidad para ejecutar comandos en ellos.

Explotación de la vulnerabilidad

Para la explotación se puede hacer uso de la herramienta openssl, y de su comando s_client, ya que de este modo se puede controlar la conexión con el servicio y los comandos que se ejecutan en cada momento.

En este ejemplo se realiza la conexión a un OpenVAS Manager escuchando en la dirección IP 192.168.0.10 y en el puerto 9390 (puerto por defecto):

Como se puede apreciar en el código anterior, si se intenta utilizar un comando OMP que requiere autenticación el sistema informa que se tiene que ejecutar uno de los tres comandos que permiten su ejecución sin necesidad de autenticar, como son:

  • AUTHENTICATE: Comando que autentica un usuario y, si la autenticación ha sido exitosa, le permite ejecutar el resto de comandos.
  • COMMANDS: Comando que agrupa una serie de comandos para su ejecución en bloque.
  • GET_VERSION: Comando que devuelve la versión de OpenVAS que se está utilizando.

Por último, el sistema cierra la conexión, con lo que se debe volver a establecer para ejecutar nuevos comandos.

La explotación de esta vulnerabilidad se realiza mediante el comando GET_VERSION.

En este caso la conexión establecida no se cierra, con lo que se puede seguir ejecutando comandos en OpenVAS como si se tratase de un usuario autenticado. Se puede comprobar, por ejemplo, utilizando el comando GET_CONFIGS de la siguiente manera:

 

Ahora bien, para que esta vulnerabilidad sea de utilidad, es necesario entender el funcionamiento básico de una evaluación con OpenVAS y qué comandos se pueden utilizar para obtener información útil.

Figura 3 - Esquema de una evaluación de seguridad con OpenVAS y comandos OMP

Según está estructurado el protocolo OMP, se podría utilizar cualquier comando get_COMANDO para obtener información que se encuentra almacenada en OpenVAS Manager, dependiendo de qué datos se quiere recuperar. Si se quisiera realizar nuevas evaluaciones (Task según convención de OpenVAS) contra los sistemas conectados al servicio, se debería encadenar ejecuciones de create_COMANDO o get_COMANDO, según si se utilizase información almacenada o se creasen nuevos datos para utilizar en los comandos posteriores.

En las respectivas páginas de los comandos OMP y OAP se encuentran todos los comandos disponibles, así como ejemplos del uso de cada uno de ellos.

Histórico

El pasado 3 de agosto de 2013 se contactó por primera vez con el equipo de OpenVAS para informar de la vulnerabilidad descubierta mediante el proceso de notificación de vulnerabilidades que ellos mismos aconsejan.

Debido a problemas de disponibilidad del equipo de OpenVAS (tal y como ellos confirmaron posteriormente) no se obtuvo respuesta, por lo que se realizaron otros intentos a diferentes correos electrónicos disponibles hasta que el aviso fue respondido y la vulnerabilidad pudo ser reproducida por su equipo.

El 8 de noviembre se anunció públicamente la vulnerabilidad de salto de autenticación en OpenVAS, concretamente en sus módulos OpenVAS Manager y OpenVAS Administrator (aviso de seguridad OVSA20131108). En el mismo aviso, el equipo de OpenVAS anunció la disponibilidad de un parche que soluciona la vulnerabilidad.

El 9 de noviembre el MITRE asignó los códigos CVE-2013-6765 (OpenVAS Manager) y CVE-2013-6766 (OpenVAS Administrator) a esta vulnerabilidad.