Como resultado, el atacante logró obtener acceso root al sistema de información de cualquier automóvil a través de la infraestructura de Tesla o transmitir remotamente comandos de control al automóvil. Entre otras cosas, se demostró la capacidad de enviar comandos como arrancar el motor y desbloquear las puertas del coche. Para acceder, todo lo que se necesitaba era conocer el número VIN del coche de la víctima.
La vulnerabilidad fue identificada a principios de 2017 por el investigador de seguridad Jason Hughes.
(
El análisis de los problemas de la infraestructura de Tesla comenzó con la descompilación de las herramientas ofrecidas para su descarga desde el sitio web.
Después de descompilar los módulos resultantes en código Python, el investigador descubrió que el código contenía credenciales integradas para varios servicios de Tesla ubicados en la red interna de la empresa, a la que se accedía a través de VPN. En particular, en el código pudimos encontrar las credenciales de usuario de uno de los hosts en el subdominio “dev.teslamotors.com” ubicado en la red interna.
Hasta 2019, para conectar los coches a los servicios de Tesla se utilizaba una VPN basada en el paquete OpenVPN (luego sustituido por una implementación basada en websocket) utilizando una clave generada para cada coche. Se utilizó VPN para garantizar el funcionamiento de una aplicación móvil, obtener una lista de estaciones de carga de baterías y otros servicios similares. El investigador intentó escanear la red accesible después de conectar su automóvil a través de VPN y descubrió que la subred accesible a los clientes no estaba adecuadamente aislada de la red interna de Tesla. Entre otras cosas, se podía acceder a un host en el subdominio dev.teslamotors.com, para el cual se encontraron credenciales.
El servidor comprometido resultó ser un nodo de gestión del clúster y era responsable de entregar aplicaciones a otros servidores. Al iniciar sesión en el host especificado, pudimos obtener parte del código fuente de los servicios internos de Tesla, incluidos mothership.vn y firmware.vn, que son responsables de transmitir comandos a los automóviles de los clientes y entregar firmware. También se encontraron en el servidor las contraseñas e inicios de sesión para acceder a los DBMS PostgreSQL y MySQL. En el camino, resultó que el acceso a la mayoría de los componentes se puede obtener sin las credenciales que se encuentran en los módulos, resultó que era suficiente enviar una solicitud HTTP a la API web desde la subred accesible a los clientes.
Entre otras cosas, se encontró un módulo en el servidor, dentro del cual se encontraba el archivo good.dev-test.carkeys.tar con las claves VPN utilizadas durante el proceso de desarrollo. Las claves especificadas resultaron funcionar y nos permitieron conectarnos a la VPN interna de la empresa vpn.dev.teslamotors.com.
En el servidor también se encontró el código del servicio de la nave nodriza, cuyo estudio permitió determinar los puntos de conexión a muchos servicios de gestión. Se descubrió que la mayoría de estos servicios de administración están disponibles en cualquier automóvil, si se conecta mediante las claves VPN encontradas por los desarrolladores. Mediante la manipulación de los servicios, fue posible extraer claves de acceso actualizadas diariamente para cualquier automóvil, así como copias de las credenciales de cualquier cliente.
La información especificada permitió determinar la dirección IP de cualquier automóvil con el que se haya establecido una conexión a través de VPN. Dado que la subred vpn.dev.teslamotors.com no estaba separada adecuadamente por el firewall, mediante simples manipulaciones de enrutamiento era posible llegar a la IP del cliente y conectarse a su automóvil a través de SSH con derechos de root, utilizando las credenciales obtenidas previamente por el cliente.
Además, los parámetros obtenidos para la conexión VPN a la red interna permitieron enviar solicitudes a cualquier automóvil a través de la API web mothership.vn.teslamotors.com, que fueron aceptadas sin autenticación adicional. Por ejemplo, durante las pruebas fue posible demostrar la determinación de la ubicación actual del automóvil, desbloquear las puertas y arrancar el motor. El número VIN del vehículo se utiliza como identificador para seleccionar un objetivo de ataque.
Fuente: opennet.ru