Nissan Leaf – Carwings – faille ou faute ? [mis à jour le 05/04/2016]

Article originel publié le 27 février 2016.

L’information est tombée hier matin avec des titres, plus ou moins, racoleurs :

  • automobile-propre.com : Nissan Leaf : une faille la rend vulnérable aux hackers
  • 01net.com : La Nissan Leaf, proie facile pour les hackers
  • autonet.ca : L’application mobile de la Nissan Leaf piratable
  • tomsguide.fr : Les Nissan Leaf sont incroyablement faciles à pirater
  • zdnet.fr : Un hack enfantin sur la Nissan Leaf
  • mac4ever.com : La Nissan Leaf peut être piratée avec un simple lien internet

Tous parlent de piratage ou de hacking, pourtant, pour moi, il s’agit principalement d’une énorme erreur de développement, donc pour reprendre le titre de l’article, je me tournerai davantage vers une faute… qui entraine une faille dans leur application.

Carwings, késako ?

Avant de reprendre les faits, un petit rappel sur l’application Carwings, maintenant renommée Nissan EV. Cette application iOS, Android, ou directement accessible depuis n’importe quel navigateur Web, permet d’avoir un certain nombre d’informations en provenance direct de la voiture (le niveau de batterie ou le statut actuel de rechargement), et permet également d’interagir avec le véhicule. Il est possible de déclencher la recharge, déclencher l’allumage de la clim, préparer un itinéraire et le transmettre à la voiture. Il n’est donc pas possible de déverrouiller les portes, de démarrer le « moteur », ou de baisser les vitres ; cela peut sembler inutile de définir ce que ne fait pas l’application, mais ça a du sens avec la suite de l’article. Bien sûr, pour accéder à ces fonctionnalités, il est nécessaire de se connecter avec un identifiant créé lors de la récupération du véhicule, dans le but que tout le monde ne puisse « contrôler » ma propre voiture.

Maintenant que vous connaissez davantage l’application, on va pouvoir aborder ce qui agite la toile à son sujet, à juste titre.

Techniquement, quel est le problème ?

Le 24 février 2016, un chercheur en sécurité, Troy Hunt, a mis en ligne, sur YouTube et sur son blog, une vidéo sur laquelle il montre qu’il est possible de contrôler un certain nombre de fonctionnalités de l’application Carwings, sans en connaitre ses identifiants (login et mot de passe). Il serait nécessaire de ne connaître, ou déterminer (pour les plus joueurs), que le numéro de châssis, ou VIN, du véhicule. Ensuite, il suffit d’interroger un serveur avec les bons paramètres (numéro de châssis, zone géographique, fuseau horaire, …) et c’est tout! En plus, le site est en HTTPS, donc normalement sécurisé, mais comme tous les paramètres sont présents dans l’adresse du site, ça ne sert à pas grand chose…

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

C’est un peu comme si, pour accéder à votre compte sur le site de l’Assurance Maladie, on vous demande de vous rendre sur une adresse du type https://www.assurance-maladie.fr/mon-compte/?nom=Tartampion&numero-de-secu=123456789012345&mot-de-passe=secret. C’est juste hallucinant!

Du coup, deux questions se posent :

  • à quoi ça sert de demander un login et mot de passe pour se connecter à Carwings ?
  • et d’ailleurs, pourquoi passer par Carwings ? On tant que Geek, et hacker (dans son véritable sens), je préfère « interroger » la voiture comme ça. C’est plus simple pour automatiser les tâches… 🙂

Voici, ce qu’il est possible d’avoir comme retour du serveur, lorsqu’on lui demande l’état de recharge des batteries (image récupérée depuis le blog de Troy Hunt) :

Leaf_battery_status

Statut de la batterie d’une Leaf

On retrouve donc les indications suivantes :

  • le statut 200 et le message, pour dire que le serveur répond bien
  • les 12 niveaux de la recharge sont atteints et que la voiture est actuellement connectée à la prise électrique
  • si la clim est allumée, la voiture peut parcourir 135 km (l’unité n’est peut être pas bonne, mais vous aurez compris le principe)
  • si la clim est éteinte, la voiture peut parcourir 157 km

Et c’est le même principe pour déclencher la climatisation, ou la recharge du véhicule ; seuls changent l’adresse et le fichier PHP appelé.

C’est si grave que ça ?

Donc au final, en ne connaissant que le numéro de châssis, qui est obligatoirement affiché sur le pare-brise pour tous les véhicules récents, je peux embêter mon voisin (à qui j’ai dit que prendre une Leaf est un bon choix! Toutes mes excuses s’il me lit…) en déclenchant sa ventilation ou arrêter la recharge de sa voiture, sans qu’il ne le sache. Oui, parce qu’au final, ça ne va pas beaucoup plus loin! Je ne peux même pas m’amuser à chauffer sa voiture en été, ou rafraîchir son habitacle en hiver, puisque la consigne de température est définie dans les paramètres de la voiture (non accessible depuis l’application Carwings). De plus, le lancement de la ventilation/climatisation depuis l’application ne dure que quinze minutes ; et même si je refais l’action toutes les quinze minutes, il y a un moment où la Leaf ne l’enclenche plus (à 30% si je ne me trompe pas), privilégiant la motricité au confort (ce qui, dans tous les cas, est une bonne chose). On est donc bien loin de la prise de contrôle du véhicule, ou du piratage complet de la voiture. Cette anomalie, on va appeler ça comme ça, n’a également aucun impact sur le comportement routier du véhicule, ou sur la sécurité de ses passagers.

Par contre, mais là ça aurait été préjudiciable pour Nissan, en utilisant cette adresse, il aurait peut être été envisageable de faire l’équivalent d’une attaque DDoS, en utilisant un script qui demande l’état de toutes les Leaf en même temps. De part sa nomenclature, le code VIN peut être déterminé à quelques numéros prêts, ce n’est pas ça qui aurait arrêter un pirate. De la même manière, il aurait également été possible de déclencher les ventilations de toutes les Leaf, et là ça aurait été une vague de mécontentement de la part des clients à laquelle Nissan aurait dû faire face.

Nissan : « innover autrement » (son slogan), ça voulait dire ça ?

Par contre, un point sur lequel je suis plutôt furieux c’est la réaction de Nissan face au problème. Le 23 janvier, soit un mois avant la publication de ce comportement sur son blog, Troy Hunt a envoyé toutes les informations nécessaires à Nissan USA. Pourtant, entre cette date et hier, rien n’avait été fait : aucune publication, aucune mise à jour de l’application, aucune correction. Maintenant qu’ils sont au pied du mur, l’application Carwings a, purement et simplement, été rendue inaccessible, dans l’attente d’une correction. Pourtant, sur son site Internet, Nissan ne fait aucune communication à ce sujet, et met toujours en avant l’application Carwings dans les avantages de la Leaf.

Le problème c’est que la correction de cette faute risque de leur prendre du temps, et peut être même de leur coûter de l’argent… Il ne s’agit pas d’une faille, comme on peut en trouver sur d’autres applications et sur laquelle il suffit d’appliquer un patch. Généralement, ces failles font suite à l’utilisation d’une librairie qui possède elle-même une faille, ou bien une erreur de développement. Mais ici, c’est tout le comportement de l’application, et des interactions entre le véhicule, l’application et les serveurs de Nissan qui sont à revoir. Il n’est pas exclu que Nissan doive rappeler toutes les Leaf en circulation pour mettre à jour leur logiciel interne.

D’un certain côté, c’est l’exemple parfait de ce qu’il ne faut absolument pas faire lorsqu’on développe une application industrielle, surtout si elle a pour vocation d’être installée par des centaines de milliers d’utilisateurs. Il ne serait d’ailleurs pas étonnant que ce soit déjà enseigné dans les écoles de développement, tellement le comportement est incompatible avec la sécurité de l’application. Aujourd’hui, alors que la Sécurité Informatique prend une part de plus en plus importante, il n’est normalement plus concevable qu’une application transmette des requêtes à un serveur Web avec aussi peu de sécurité (sans contrôle et en envoyant les paramètres en clair!).

Une image de marque entachée ?

En tant que propriétaire d’une Nissan Leaf et membre du réseau d’ambassadeurs Leaf, comment puis-je, maintenant, mettre en avant les qualités de la voiture ? En faisant cette économie de sécurité, Nissan se tire une balle dans le pied ! Etant donné la façon dont ont été pensés les échanges entre l’application et les serveurs de Nissan, on peut se demander si ce n’est pas la partie immergée de l’iceberg. Est-ce qu’on ne risque pas de trouver un autre problème prochainement ? D’ailleurs, ce n’est pas la première fois que Nissan doit faire face à un problème quasi-similaire, également sur la Leaf. En 2012/2013, il avait été démontré que lorsque la Leaf se connectait sur Internet pour récupérer des flux RSS (comme je l’utilise dans mon article pour envoyer des SMS, ou contrôler sa domotique depuis la Leaf), elle envoyait ses propres coordonnées GPS au serveur, ce qui est depuis corrigé. Au moins, dans le cas présent, comme on le voit sur la vidéo, les coordonnées GPS ne s’affichent pas.

Personnellement, je n’ai aucun reproche à faire à la voiture, son confort et son comportement routier. De même, ça fait des années que je roule en Nissan, j’ai même appris à rouler sur une Nissan (ha, que de souvenirs avec la Micra K10 de mes parents !). Mais maintenant que l’affaire commence à prendre de l’ampleur, ça va être difficile de mettre en avant l’application Carwings et la synergie entre la voiture et l’application. J’espère que Nissan saura apporter une bien meilleure communication, qu’elle ne l’a fait depuis le début de l’affaire.

 

Donc, comme on dit, affaire à suivre…

[29/02/2016] Suite à la découverte de la « faille », Nissan a fermé tout accès à l’application. En soit, c’est une bonne chose, pour éviter que ça ne s’envenime. Par contre, il leur aura fallu quatre jours avant de communiquer, auprès des clients, sur la raison de l’arrêt de service. Tous les propriétaires de Leaf, ou de e-NV200, ont reçu aujourd’hui un mail leur indiquant que NissanConnect EV, anciennement Carwings, n’est plus disponible et que leurs équipes travaillent sur le rétablissement de l’application. Bien sûr, en toute logique, il n’y a aucune information technique sur la raison de l’indisponibilité, ça aurait surprenant qu’ils communiquent dessus. 
Par contre, on y apprend qu’il est possible d’interagir avec la voiture en passant par le navigateur Web (j’ai testé et effectivement, ça fonctionne). Cela signifie que le problème semble se concentrer exclusivement sur l’application mobile. C’est donc rassurant dans le sens où la mise à jour ne devrait donc concerner que cette application et que les échanges avec la voiture ne semblent pas être touchés. 

[04/04/2016] Nissan vient d’annoncer le retour de leur application. En effet, l’utilisation de NissanConnect EV est maintenant possible … malgré quelques messages d’erreurs…

Laisser un commentaire

Votre adresse mail ne sera pas publiée. Champs requis *

Vous pouvez utiliser ces balises HTML et attributs: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Vous pourriez être intéressé par