Vulnerabilidades críticas en Apache Guacamole permitirían a un atacante la ejecución remota de código

Apache Guacamole es una herramienta libre y Open-Source que nos permite conectarnos remotamente a un servidor mediante el navegador web sin necesidad de utilizar un cliente, soporta protocolos como VNC, RDP, SSH, etc.

¿Qué pasó?

Recientemente un grupo de investigadores de seguridad ha descubierto múltiples vulnerabilidades que afectan a Apache Guacamole 1.1.0 y anteriores.

Entre ellas se encuentran, tres fallos de filtración de información, la primera en el canal rdpsnd (RDP Sound) utilizado para procesar paquetes de audio desde el servidor. Este fallo se da concretamente en la función guac_rdpsnd_formats_handler() del archivo rdpsnd-messages.c y es debido a una validación incorrecta de los mensajes rdpsnd. Lo que permitiría a un atacante remoto enviar un mensaje rdpsnd especialmente diseñado, llevando a una vulnerabilidad de out-of-bounds read. A continuación la porción de código vulnerable:

El segundo fallo, también en el mismo canal se encuentra en la función guac_rdpsnd_process_receive() del archivo rdpsnd.c y se da debido a una validación incorrecta de los mensajes rdpsnd, lo que lleva a una vulnerabilidad de out-of-bounds read.

A continuación la porción de código vulnerable:

El tercer fallo se da en el canal Guacai encargado del procesamiento de entrada de audio. Y se trata otra vulnerabilidad de out-of-bounds read en la funcion guac_rdp_ai_read_format() del archivo guacai-messages.c, similar a las descritas anteriormente, solo que en este caso el canal Guacai se encuentra desactivado por defecto.

A continuación la porción de código vulnerable:

La explotación exitosa de estas vulnerabilidades podría resultar en la filtración de información dentro de la memoria del proceso guacd si el usuario víctima se conecta a un servidor RDP malicioso. A estos fallos se les ha asignado un único identificador, el CVE-2020-9497 de riesgo critico.

Por otro lado, la vulnerabilidad identificada como CVE-2020-9498 de riesgo critico, se encuentra en el archivo guac_common_svc.c de los canales rdpsnd y rdpdr (Device Redirection), y es debido a un manejo incorrecto de los punteros involucrados en el procesamiento de datos recibidos a través de los canales, lo que llevaría a una corrupción de memoria.

A continuación la porción de código vulnerable:

La explotación en conjunto de las vulnerabilidades CVE-2020-9497 y CVE-2020-9498, permitiría a un atacante tomar control del proceso guacd cuando el usuario realice una conexión con el servidor RDP malicioso, llevando a una ejecución remota de código. Además de esto, los investigadores afirmaron que también es posible tomar control de todas las conexiones en el gateway desde un solo proceso guacd, permitiendo escalar privilegios en el servidor e incluso iniciar nuevas sesiones para controlar el resto de los ordenadores de la organización.

Además de esto, es posible también que los atacantes saquen provecho de vulnerabilidades de ejecución remota de código ya abordadas en FreeRDP 2.0.0-rc4 soportada sólo en las versión 1.1.0 y superiores de Apache Guacamole (lanzada en Enero de 2020). Esto significa que todas las versiones de Apache Guacamole lanzadas antes de Enero de 2020 utilizan versiones vulnerables de FreeRDP.

Recomendaciones:

  • Actualice Apache Guacamole a la versión 1.2.0, desde la página web oficial de Apache.
  • En caso de utilizar FreeRDP, actualizar a la última versión disponible (2.1.2) desde el siguiente enlace.

Referencias:

Compartir: