Una red privada virtual más conocidas por sus siglas en inglés VPN (Virtual Private Network) es una de las mejores soluciones que un usuario normal puede usar para proteger su privacidad y datos en Internet, pero debe estar muy atento al elegir un servicio de VPN que realmente respete su privacidad.
Por ejemplo si está utilizando el popular servicio de VPN Hotspot Shield para preservar su privacidad cuando está en Internet, es posible que inadvertidamente esté filtrando su dirección real de IP y otra información confidencial.
Desarrollado por la empresa alemana AnchorFree GmbH, Hotspot Shield es un servicio de VPN disponible de forma gratuita en Google Play Store y Apple Mac App Store con aproximadamente 500 millones de usuarios alrededor del planeta.
De acuerdo a su publicidad el servicio que ofrece Hotspot Shield promete “proteger todas las actividades en línea“, ocultar las direcciones IP de los usuarios, su identidad y protegerlos del seguimiento realizado por los diferentes servicios de Internet, enrutando todo su su tráfico de Internet y navegación a través de un canal encriptado que ellos proveen.
Pero, una ‘supuesta’ vulnerabilidad descubierta en el servicio VPN de Hotspot Shield permite acceder a los datos de los usuarios, como el nombre de la red Wi-Fi (si se usa este medio para la conexión a Internet), sus direcciones IP reales, que podrían revelar su ubicación y otra información sensible .
La vulnerabilidad se le ha asignado el código CVE-2018-6460, ha sido descubierta y reportada a la compañía por un investigador de seguridad independiente, Paulos Yibelo, que el lunes dio detalles de la vulnerabilidad al público en su blog personal, luego de no recibir una respuesta de la compañía.
De acuerdo con el investigador de seguridad, la falla reside en el servidor web local (se ejecuta en un host codificado 127.0.0.1 y en el puerto 895) que Hotspot Shield instala en la máquina del usuario.
Este servidor aloja múltiples puntos finales JSONP (llamadas a las API del servidor local), que son sorprendentemente accesibles para las solicitudes no autenticadas (ya que asumen que todas las solicitudes son ‘locales’) y que en respuesta podrían revelar información confidencial sobre el servicio VPN activo, incluidos sus detalles de configuración.
Aquí esta la explicación de cómo funciona la vulnerabilidad descrita por Yibelo en su blog:
Hotspot Shiled cuando incia ejecuta su propio servidor web para comunicarse con su propio cliente VPN. El servidor se ejecuta en un host con IP 127.0.0.1 y en el puerto 895. Aloja puntos finales sensibles JSONP que devuelven múltiples valores interesantes y datos de configuración.
por ejemplo, http://localhost:895/status.js genera una respuesta JSON sensible que revela si el usuario está conectado a la VPN, a qué VPN está conectado qué y cuál es su dirección IP real y otra información sensible del sistema. Hay otros puntos finales múltiples que devuelven datos confidenciales, incluidos los detalles de configuración.
$ curl -si http://127.0.0.1:895/status.js
HTTP/1.0 200 OK
{
“connect_state”: “CONNECTED”,
“daemon_state”: {“timestamp”: “1517471953”, “state_name”: “”, “description”: “HYDRA”, “tun_ip”: “[reducted]”, “remote_ip”: “[reducted]”, “network_name”: “shitcakes”, “, “country_code”: “ET”}
}
Mientras ese punto final se presenta sin ninguna autorización, status.js es en realidad un punto final JSON, por lo que no hay funciones sensibles que sobrescribir, pero cuando enviamos el parámetro func con $_APPLOG.Rfunc, devuelve esa función como un nombre JSONP. Obviamente, podemos anular esto en nuestra página maliciosa y robar su contenido mediante el suministro de una marca de tiempo de parámetro tm, de esa manera podemos proporcionar un tiempo de registro.
$ curl -si http://127.0.0.1:895/status.js?func=$_APPLOG.Rfunc&tm=1511564738932
HTTP/1.0 200 OK
$_APPLOG.Rfunc({
“connect_state”: “CONNECTED”,
“daemon_state”: {“timestamp”: “1517471953”, “state_name”: “”, “description”: “HYDRA”, “tun_ip”: “[reducted]”, “remote_ip”: “[reducted]”, “network_name”: “shitcakes”, “, “country_code”: “ET”
}})
Aunque muchos podrían decir que este ataque está limitado a la LAN debido a la dirección del servidor, pero aquí es donde se puede usar un ataque llamado DNS rebining. En una reenlace de DNS, cualquier sitio web simplemente puede crear un nombre de DNS con el que está autorizado a comunicarse y luego hacer que se resuelva en localhost o 127.0.0.1 (haciéndolo accesible desde la WAN). Les sugiero que lean el error de Tavis Ormandy en Blizzard aquí.
Puede usar https://lock.cmpxchg8b.com/rebinder.html para generar un nombre de host para su uso. Este se puede alternar entre 127.0.0.1 y 191.241.34.54, por ejemplo.
Yibelo también ha lanzado públicamente un código de prueba de concepto PoC (por sus siglás en inglés) de la vulnerabilidad que encontró, en ella se puede observar que con sólo unas pocas líneas de código JavaScript, este script podría permitir a un atacante remoto no autenticado extraer información confidencial y los datos de configuración de la VPN.
Aunque, el reportero Zack Whittaker de ZDNet intentó verificar lo que el investigador había anunciado en su blog y descubrió que el código PoC solo revelaba el nombre de la red Wi-Fi y el país, pero no la dirección IP real.
De acuerdo a ZDNet, un portavoz oficial de AnchorFree consultado sobre el problema, reconoció la vulnerabilidad, pero negó la divulgación de la dirección IP real tal como afirma Yibelo en su blog:
Hemos encontrado que esta vulnerabilidad no expone la dirección IP real del usuario, ni ninguna información personal, pero puede exponer cierta información genérica, como el país del usuario.
El investigador también afirma que fue capaz de aprovechar esta vulnerabilidad para lograr la ejecución remota de código.
Hotspot Shield también ocupó los titulares en agosto del año pasado, cuando el Centro para la Democracia y la Tecnología (CDT), un grupo estadounidense de defensa de los derechos digitales, acusó al servicio de supuestamente rastrear, interceptar y recopilar los datos de sus clientes.