Encuentran docenas de vulnerabilidades en software VNC de código abierto
Investigadores han encontrado un total de 37 vulnerabilidades de seguridad que afectan a cuatro implementaciones de Virtual Network Computing (VNC) de código abierto, y han estado presentes durante los últimos 20 años, desde 1999.
Las fallas se encontraron en las soluciones LibVNC, TightVNC 1.X, TurboVNC y UltraVNC VNC.
Estas fueron analizadas por el investigador de seguridad del Equipo de Respuesta a Emergencias de Sistemas Industriales (ICS CERT) de Kaspersky, Pavel Cheremushkin.
El programa muy popular RealVNC no se analizó porque no permite ingeniería inversa.
Estos sistemas VNC se pueden usar en una amplia gama de sistemas operativos, incluidos, entre otros, Windows, Linux, macOS, iOS y Android.
Una implementación de VNC consta de dos partes, un cliente y un servidor, lo que permite a los usuarios acceder de forma remota a una máquina que ejecuta el servidor VNC con la ayuda de un cliente VNC.
Este último utiliza el protocolo RFB para transmitir “imágenes de pantalla, movimiento del mouse y eventos de pulsación de teclas”.
Puedes encontrar más detalles sobre las implementaciones de VNC analizadas por Cheremushkin a continuación:
- LibVNC: una biblioteca multiplataforma de código abierto para crear una aplicación personalizada basada en el protocolo RFB. El componente del servidor de LibVNC se usa, por ejemplo, en VirtualBox para proporcionar acceso a la máquina virtual a través de VNC.
- UltraVNC: una popular implementación de VNC de código abierto desarrollada específicamente para Windows. Recomendado por muchas compañías de automatización industrial para conectarse a interfaces HMI remotas a través del protocolo RFB.
- TightVNC 1.X : una implementación más popular del protocolo RFB. Recomendado por muchos proveedores de sistemas de automatización industrial para conectarse a interfaces HMI desde máquinas * nix.
- TurboVNC: una implementación de VNC de código abierto. Utiliza la biblioteca libjpeg-turbo para comprimir imágenes JPEG para acelerar la transferencia de imágenes.
Más de 600,000 servidores VNC potencialmente expuestos
En base a esta información, el investigador ICS CERT de Kaspersky descubrió más de 600,000 servidores VNC a los que se puede acceder de forma remota a través de Internet.
Lo anterior en función de la información recopilada utilizando el motor de búsqueda Shodan para dispositivos conectados a Internet: esta estimación no cubre los servidores VNC que se ejecutan en redes de área local.
Las fallas de seguridad de VNC que encontró Cheremushkin están causadas por el uso incorrecto de la memoria, con ataques que los explotan y conducen a estados de denegación de servicio, mal funcionamiento, así como acceso no autorizado a la información de los usuarios y la opción de ejecutar código malicioso en el dispositivo de un objetivo.
“Aunque el enfoque de nuestros colegas estaba en el uso de VNC en empresas industriales, las amenazas son relevantes para cualquier negocio que implemente esta tecnología”, agrega el informe de Kaspersky .
Si bien la mayoría de las vulnerabilidades de corrupción de memoria de VNC reveladas por los investigadores a los equipos de desarrollo fueron reparadas, en algunos casos no se han abordado hasta el día de hoy.
Este es el caso de TightVNC 1.X, cuyos desarrolladores dijeron que no solucionarán los problemas de seguridad encontrados ya que la primera versión del software “ya no es compatible con la primera versión de su sistema [..]”. Actualmente mantienen el producto comercial TightVNC 2.X.
Errores encontrados en soluciones VNC
Cheremushkin encontró desbordamientos de búfer basados en la biblioteca LibVNC que podrían permitir a los atacantes “evitar ASLR y usar el desbordamiento para lograr la ejecución remota de código en el cliente”.
Cuando se trata de UltraVNC, el investigador dice que pudo descubrir “un ‘zoológico’ completo de vulnerabilidades en UltraVNC, desde desbordamientos triviales de búfer en strcpy y sprintf hasta vulnerabilidades más o menos curiosas que rara vez se pueden encontrar en proyectos del mundo real. “.
De todas las fallas de UltraVNC que detectó, el flujo inferior del búfer se identificó como CVE-2018-15361 que puede desencadenar un DoS en el 100% de los ataques.
Pero también puede usarse para la ejecución remota de código. La CVE-2019-8262 está asignado a múltiples vulnerabilidades de desbordamiento del búfer de almacenamiento dinámico, que pueden provocar la ejecución remota de código.
La lista completa de vulnerabilidades VNC descubiertas encontradas por Pavel Cheremushkin de Kaspersky se enumeran en la tabla a continuación:
Implementación de VNC | Vulnerabilidades |
LibVNC |
|
TightVNC 1.X |
|
TurboVNC |
|
UltraVNC |
|
“En el lado positivo, la autenticación de contraseña a menudo se requiere para aprovechar las vulnerabilidades del lado del servidor, y el servidor puede no permitir a los usuarios configurar un método de autenticación sin contraseña por razones de seguridad.”
Este es el caso, por ejemplo, con UltraVNC.
Medidas de protección
“Como protección contra ataques, los clientes no deben conectarse a servidores VNC desconocidos y los administradores deben configurar la autenticación en el servidor utilizando una contraseña segura única”.
Kaspersky ofrece las siguientes recomendaciones para impedir que los atacantes exploten estas fallas de seguridad de VNC:
- Comprobar qué dispositivos pueden conectarse de forma remota y bloquear las conexiones remotas si no son necesarias.
- Haz un inventario de todas las aplicaciones de acceso remoto, no solo VNC, y verifica que tus versiones estén actualizadas.
- Si tienes dudas sobre su fiabilidad, deja de usarlos. Si tienes la intención de continuar implementándolos, asegúrate de actualizar a la última versión.
- Protege tus servidores VNC con una contraseña segura. Esto hará que atacarlos sea mucho más difícil.
- No te conectes a servidores VNC no confiables o no recomendados.
Puedes encontrar más información y más detalles sobre las vulnerabilidades de VNC descubiertas por Cheremushkin en el informe completo aquí.