- Pour participer au bug bounty de Tesla, achat sur eBay de la MCU et de l’ordinateur Autopilot d’une Model 3, puis tentative de les faire fonctionner dans un environnement desktop
- En ajoutant une alimentation 12 V et un module d’écran tactile, le démarrage a réussi, avec accès au réseau interne via le port Ethernet
- À l’intérieur de la MCU, un serveur SSH et l’API REST ODIN (port 8080) étaient ouverts, mais l’accès SSH nécessitait une clé signée par Tesla
- Au départ, des problèmes de compatibilité de câbles et des dommages au PCB ont imposé le remplacement de la puce contrôleur d’alimentation, avant une restauration réussie du système
- Au final, le raccordement du Dashboard Wiring Harness a permis un démarrage complet de l’écran tactile et de l’OS du véhicule, rendant possibles la manipulation de l’interface et l’analyse du firmware
Faire tourner sur un bureau l’ordinateur d’une Tesla Model 3
- Pour participer au programme de bug bounty de Tesla, il fallait du vrai matériel de véhicule ; des pièces de MCU (Media Control Unit) et d’ordinateur Autopilot (AP) de Model 3 ont donc été achetées sur eBay
- L’ordinateur embarqué du véhicule est constitué de deux cartes superposées, situées derrière la boîte à gants côté passager, dans un boîtier métallique refroidi par liquide
- Des pièces ont été trouvées sur eBay dans une fourchette de 200 à 300 dollars, la plupart provenant de démonteurs de véhicules accidentés
- Pour démarrer le système, il fallait aussi une alimentation DC 12 V, un module d’écran tactile et un câble d’affichage
- Une alimentation réglable 0–30 V / 10 A a été utilisée, et l’écran a été acheté 175 dollars
Problèmes de câbles et informations de câblage électrique
- Les câbles reliant la MCU et l’écran étaient généralement vendus coupés juste après le connecteur, ce qui a nécessité de fabriquer un câble séparé
- Tesla publie la documentation Electrical Reference de tous ses véhicules, ce qui a permis de vérifier le brochage et les informations de câblage de chaque connecteur
- L’écran nécessite un câble 6 broches utilisant un connecteur Rosenberger 99K10D-1D5A5-D (2 broches pour le 12 V/la masse, 4 broches pour les données)
- Comme ce connecteur ne peut pas être acheté à l’unité par les particuliers, un câble LVDS pour BMW a été commandé comme solution de remplacement
Alimentation et accès réseau
- En se basant sur les schémas Tesla et des ressources en ligne pour repérer les broches 12 V et masse, le branchement de l’alimentation a lancé le démarrage avec allumage d’une LED rouge
- Sans écran, l’interaction restait limitée, mais une connexion à un ordinateur portable était possible via le port Ethernet
- Le réseau n’utilise pas DHCP ; il faut configurer manuellement une IP dans la plage
192.168.90.X/24
- Un fichier
/etc/hosts publié sur Reddit a permis d’identifier les IP des hôtes internes, dont la MCU, la passerelle et l’Autopilot
- Sur la MCU (
192.168.90.100), les services SSH (port 22) et serveur web (port 8080) étaient ouverts
Services internes et architecture de la MCU
- Le serveur SSH affichait le message « SSH allowed: vehicle parked » et l’accès nécessitait une clé signée par Tesla
- Dans le bug bounty de Tesla, les chercheurs ayant trouvé une vulnérabilité root reçoivent un certificat SSH permanent
- Le port 8080 exposait une API REST appelée ODIN (On-Board Diagnostic Interface Network), utilisée par l’outil de diagnostic Toolbox
- Après retrait du blindage métallique, il a été possible d’observer l’intérieur, où la MCU et la carte Autopilot sont disposées en structure empilée
Échec du câble et dommages au circuit
- Le câble LVDS pour BMW n’étant pas physiquement compatible, une tentative de câblage direct a été faite
- Un fil fin s’est cassé, provoquant un court-circuit sur le PCB et endommageant la puce contrôleur d’alimentation
- L’identification de la puce endommagée était difficile, mais le collaborateur Yasser a confirmé qu’il s’agissait d’un contrôleur step-down MAX16932CATIS/V+T
- Une nouvelle puce a été commandée puis remplacée dans un atelier de réparation PCB, ce qui a permis de restaurer la MCU
- Un deuxième ordinateur a ensuite été obtenu comme unité de secours
Solution finale et démarrage complet
- Faute de pouvoir se procurer le câble Rosenberger, c’est finalement le Dashboard Wiring Harness complet (80 dollars) qui a été acheté
- Dans le véhicule réel, le système n’est pas câblé avec des cordons individuels mais sous la forme d’un grand faisceau électrique (loom)
- Une fois le faisceau raccordé, l’écran tactile a fonctionné normalement et le système d’exploitation du véhicule a démarré complètement
- Il est alors devenu possible de manipuler l’interface, explorer les interfaces réseau, analyser le bus CAN et tenter une extraction du firmware
2 commentaires
Le plus intéressant, c’est ça.
"Le programme d’accès root de Tesla"
Si l’on trouve ne serait-ce qu’une vulnérabilité de root valide, on peut obtenir un "certificat SSH permanent" pour son propre véhicule et se connecter en root.
Ah, j’en veux un !!
Commentaires sur Hacker News
Le programme d’accès root de Tesla est intéressant
Si un chercheur trouve ne serait-ce qu’une vulnérabilité de root valide, il peut recevoir un certificat SSH permanent pour son propre véhicule et se connecter en root
C’est similaire à l’Apple Security Research Device Program, avec des critères d’éligibilité clairs
Donner les droits root à tout le monde faciliterait la recherche de vulnérabilités pour des acteurs malveillants, donc l’approche de Tesla se comprend
J’ai autrefois travaillé dans une entreprise qui fabriquait des outils de scan tiers
Nous testions en connectant des ECU sur un rack plutôt que sur de vrais véhicules, et nous avions découvert un problème d’offset d’octets non standard chez BMW. L’outil d’un concurrent ne détectait pas le problème, mais l’outil officiel BMW affichait le DTC
En configurant un autre modèle, je peux quand même effacer les DTC de l’ECU, donc je m’en sers provisoirement ainsi. Ce domaine a vraiment besoin d’une approche open hardware / logiciel
Je me demande encore si je dois publier le résultat produit à l’aide d’un logiciel commercial coûteux, mais je pense que les informations comme la définition des protocoles de communication des véhicules devraient être ouvertes à tous
C’est amusant de voir le LVDS présenté comme un câble automobile. À l’origine, on le voyait surtout pour relier les écrans d’ordinateurs portables à la carte mère
Voir l’article Low-voltage differential signaling
L’application UI de Tesla, QtCar, peut être exécutée dans QEMU
Il suffit d’avoir le firmware ; si cela vous intéresse, demandez-moi en DM
Vidéo de démonstration
Quelqu’un partage son expérience d’installation d’un contrôleur de frein de remorque sur une Tesla Model Y
Il a trouvé un contrôleur compatible avec une tension de 14,4 V, fabriqué les câbles et acheté les connecteurs sur eBay pour l’installer
Il a tracté plusieurs fois une remorque de camping l’an dernier sans aucun problème, et trouve que cet esprit de hack DIY est génial
Il est intéressant de voir que le cœur du problème était simplement un connecteur 6 broches
Il y avait des plans et des dimensions, donc il est surprenant que personne n’ait pensé à fabriquer directement le connecteur en impression 3D
Ce projet est vraiment génial
Je me demande si c’est plug-and-play, et où sont stockées les informations d’autonomie
Si c’est possible, j’aimerais essayer de transplanter une suspension adaptative sur un ancien modèle. Il y a aussi l’idée de créer un système de contrôle séparé avec un Raspberry Pi
Il est étonnant que le système d’exploitation démarre complètement même sans les périphériques attendus autour
Quoi qu’on pense de Tesla, du point de vue du hack, c’est vraiment un super projet
Il était dit qu’il fallait acheter tout le faisceau de câbles pour 80 dollars ; aux États-Unis, on appelle cela un wiring harness. Le terme loom désigne le matériau de gaine
Lien AliExpress