¿Qué pasaría si pudiéramos controlar un coche que está en la otra punta del mundo desde un ordenador en nuestra casa? Es justo lo que ha conseguido hacer Troy Hunt, un investigador de seguridad informática y hacker, usando un navegador web, una conexión a Internet y un Nissan LEAF normal y corriente.

El experimento comenzó en una charla de Hunt durante una conferencia de seguridad para desarrolladores, cuando un asistente se dio cuenta de que su coche, un Nissan LEAF, podía ser controlado a través de Internet usando la aplicación para móviles de Nissan. Si se imitaban los métodos de la app, cualquier otro Nissan LEAF podría ser controlado de la misma forma, desde cualquier lugar. El control se limita al sistema de climatización, pero saber que algo así es posible resulta cuanto menos revelador.

Advertisement

Advertisement

Hunt se puso en contacto con otro investigador de seguridad y dueño de un LEAF, Scott Helme. Helme vive en el Reino Unido y Hunt en Australia. Entre ambos organizaron un experimento en el que el LEAF de Helme sería controlado por Hunt, literalmente desde la otra punta del mundo. Aquí tienes el vídeo que hicieron durante el experimento:

Como puedes ver, Hunt fue capaz de acceder al LEAF del Reino Unido sin que Helme tuviera siquiera que arrancarlo. Desde Australia, pudo recopilar una gran cantidad de datos que guardaba el ordenador del coche sobre los viajes recientes, las distancias de esos viajes (registrados en yardas, curiosamente), la información sobre el consumo de energía, el estado de la carga y mucho más. También fue capaz de hacerse con el control del sistema de climatización para encender la calefacción o al aire acondicionado y los asientos climatizados.

Tiene sentido que sean éstas las opciones disponibles porque son el conjunto de cosas que se pueden hacer desde la aplicación móvil del Nissan LEAF, que la gente usa para calentar o enfriar sus coches antes de subirse a ellos, o para comprobar el estado de las baterías y cosas así.

La app es la clave para saber cómo acceder al LEAF vía web, porque así es como lo hace la propia aplicación. El investigador original (Jan) descubrió que su usaba un ordenador como proxy entre Internet y la app, las peticiones realizadas por la aplicación a los servidores de Nissan se podían ver. Este es el aspecto de una de esas peticiones:

Advertisement

Sponsored

GET https://[redacted].com/orchestration_1111/gdc/BatteryStatusRecordsRequest.php?RegionCode=NE&lg=no-NO&DCMID=&VIN=SJNFAAZE0U60XXXXX&tz=Europe/Paris&TimeFrom=2014-09-27T09:15:21

Si te fijas en ese código, puedes ver que parte de la petición incluye una etiqueta “VIN”, que es el Número de Identificación del Vehículo o número de bastidor (aquí está oculto a propósito). Cambiar ese número VIN es todo lo que hay que hacer para acceder a cualquier Nissan LEAF en particular. Y ten en cuenta que el número de bastidor es visible a través del parabrisas de cada coche, por ley.

Advertisement

Hunt describe el proceso en su web, y señala algunos detalles alarmantes:

Lo que llamó la atención de Jan no fue que pudiera obtener el estado actual de la batería de su LEAF, sino que la petición de su móvil no parecía contener ningún dato de identidad sobre su sesión autenticada.

En otras palabras, podía acceder a la API de manera anónima. Es una petición GET así que no se pasa nada en el cuerpo de la petición ni aparece nada parecido a un token en el encabezado de la solicitud. De hecho, lo único que identifica a su vehículo es el VIN, que he ofuscado parcialmente en la URL de arriba.

Por lo tanto, no hay ningún sistema de seguridad para evitar el acceso a los datos de un LEAF, ni se producen intentos de verificar la identidad en cualquiera de los dos extremos de la conexión.

Y la cosa va a peor.

Advertisement

Después probó a arrancarlo y observo esta petición:

GET https://[redacted].com/orchestration_1111/gdc/ACRemoteRequest.php?RegionCode=NE&lg=no-NO&DCMID=&VIN=SJNFAAZE0U60XXXXX&tz=Europe/Paris

Esa petición devolvía esta respuesta:

{

status:200

message: “success”,

userId: “******”,

vin: “SJNFAAZE0U60****”,

resultKey: “***************************”

}

Esta vez aparecía información personal sobre Jan: su ID de usuario, que era una variación de su nombre real. La petición también devolvió el número de bastidor pasado en la solicitud junto con una clave resultKey.

Luego apagó el climatizador y observó que la aplicación emitía esta solicitud:

GET https://[redacted].com/orchestration_1111/gdc/ACRemoteOffRequest.php?RegionCode=NE&lg=no-NO&DCMID=&VIN=SJNFAAZE0U60XXXXX&tz=Europe/Paris

Todas estas peticiones se realizaron sin un token de autenticación de ningún tipo; fueron emitidas de forma anónima. Jan probó a cargarlas en Chrome y recibió una respuesta correcta sin problemas. Estaba bastante claro que la API tenía cero controles de acceso, pero la posibilidad de invocarla bajo la identidad de otros vehículos todavía no estaba clara.

Aunque no entiendas de programación, está claro lo que todo esto significa: cualquier persona tiene la posibilidad de obtener los datos personales y controlar algunas funciones del vehículo desde prácticamente cualquier lugar con una conexión a Internet siempre que se sepa el número de bastidor del coche objetivo.

Hunt demostró que esto era posible después de investigar un poco. Utilizo una herramienta para generar números de bastidor de LEAF (sólo los últimos 5 o 6 dígitos van cambiando) y envió una peticion de estado de la batería a todos esos números. Pronto consiguió una respuesta correcta de vuelta. Hunt explica la importancia de esto:

Advertisement

Advertisement

Ya no era el coche de Jan, era el LEAF de otra persona. Nuestra sospecha de que el número de bastidor era el único identificador necesario se confirmó y se volvió evidente que había una carencia total de autenticación por parte del servicio.

No es sólo una cuestión de conocer el estado del vehículo, recuerda que las otras APIs pueden encender y apagar el climatizador del coche. Cualquiera podría enumerar los números de bastidor y controlar una función física de todos los vehículos que respondan. Eso era un tema muy serio. Informé a Nissan un día después de haber descubierto esto (quería que Jan me proporcionara más información primero), pero a día de hoy —32 días después— el problema sigue sin resolverse. Puedes leer una cronología del problema más abajo, pero sin duda ha habido muchos mensajes y una llamada telefónica durante un periodo de más de cuatro semanas y sólo ahora he decidido desvelarlo públicamente...

(Vamos a aclarar algo: esto no es una guía de cómo hackear un LEAF ajeno. Notarás que hemos censurado algunas partes de las direcciones de los servidores para que no puedas ir a curiosear fácilmente e intentar hacer maldades).

Actualmente sólo se pueden controlar algunas funciones del aire acondicionado, calefacción y ventilación del coche, además de acceder a información como el estado de carga y su historial de conducción. Pero eso es más preocupante e importante de lo que podrías imaginar.

Advertisement

No sólo tenemos el clásico problema de privacidad de tener a disposición de cualquiera tus trayectos y destinos frecuentes, sino que si cualquiera podría, por ejemplo, hackear el aire acondicionado para que agote la batería del LEAF y así dejar a su conductor varado en alguna parte.

Por ahora no existe un control de encendido remoto o para abrir el coche, pero el LEAF sigue siendo un automóvil completamente eléctrico, o lo que es lo mismo, todas sus funciones pueden ser manipuladas de forma electrónica. Por ejemplo, el volante puede ser controlado por los motores utilizados para dar energía al cruce asistido (como pude ver cuando visitamos el lugar de pruebas de Nissan) y su aceleración es controlada mediante cableados.

Al momento de escribir estas líneas dudo que ningún LEAF en el mundo esté en peligro, más allá de la posibilidad de quedarse sin batería o que su interior esté tan frío como un refrigerador; pero eso no quiere decir que en un futuro no podrían conseguir hacer otras cosas. Esto es un fallo de seguridad enorme que Nissan debe corregir lo más pronto posible.

Advertisement

Advertisement

Ya han pasado más de 30 días y Nissan no ha resuelto el problema, según Hunt. El investigador de seguridad nos detalló todo el contacto que ha tenido con Nissan sobre este problema hasta la fecha:

Durante un mes me he acercado a Nissan en varios ocasiones para solucionar esto, pero no fue sino hasta después de los artículos publicados en los foros franceses y aquel correo electrónico canadiense que les avisé que yo mismo publicaría un artículo al respecto.

Así fue el orden de todo lo sucedido:

23 de enero: envié todos los detalles acerca de mis descubrimientos a la división de Amenazas de Seguridad e Inteligencia de Nissan en los Estados Unidos.

30 de enero: llamé por teléfono a Nissan para explicarles por completo cómo descubrí el riesgo de seguridad y las posibles consecuencias que podría tener. También les envié más detalles por correo electrónico.

12 de febrero: les envié un correo electrónico preguntándoles acerca de los avances en el tema y les ofrecí todo mi apoyo. A esto me respondieron “estamos haciendo avances en la búsqueda de una solución”.

20 de febrero: les envié más detalles que obtuve del propietario canadiense (incluyendo un enlace a la discusión en los foros públicos) y les advertí que estaría publicando este artículo “más tarde esta semana”.

24 de febrero: publiqué este artículo en el blog, 4 semanas y 4 días después de haberles notificado de la vulnerabilidad.

En total les envié diez correos electrónicos y tuve una llamada telefónica. Esta mañana casualmente recibí un correo pidiéndome “esperar algunas semanas” antes de publicar el artículo, pero tomando en cuenta que el tema ya está siendo discutido en muchas comunidades en Internet, y que ya les había dado más de un mes desde que les notifiqué del fallo, les volví a advertir que publicaría esta misma noche y no recibí otra respuesta.

No obstante, estoy dispuesto a añadir una actualización al artículo si ellos quieren añadir algún mensaje o contribuir en algo.

Aún así me gustaría aclarar que Nissan manejó este tema muy bien. Era bastante sencillo contactar a la persona indicada para tratar cada asunto y se tomaron el tiempo y la molestia de escuchar y analizar toda la información que les ofrecí. Fueron bastante atentos, y aunque me hubiese gustado ver este fallo solucionado mucho más rápido, si lo comparo con otras experiencias en materia de fallos de seguridad descubiertos, Nissan se comportó de manera ejemplar.

Está muy bien que Nissan haya sido “ejemplar” pero hubiese sido mucho mejor que ellos implementaran al menos alguna medida de seguridad básica en sus coches, antes de hacer vulnerable los datos y sus controles en Internet.

La seguridad por oscuridad simplemente no va a seguir funcionando, como ya ha demostrado Troy Hunt con su cuidadoso y metódico trabajo. No estoy seguro de por qué los fabricantes de automóviles no parecen tomarse en serio este tipo problemas de seguridad, pero es hora de que lo hagan.

Advertisement

Advertisement

Ahora los relaciones públicas de la empresa tendrán que enfrentarse a la mala prensa de esta noticia y de las próximas historias que saldrán. Seguro que tu tía de Facebook acaba comentándote que ahora los terroristas pueden controlar los Nissan LEAF para perseguirnos como perros de caza.

Hasta que los coches necesiten una recarga.

***

Psst! también puedes seguirnos en Twitter y Facebook :)