- Um am Tesla Bug Bounty teilzunehmen, wurden auf eBay die MCU und der Autopilot-Computer eines Model 3 gekauft und der Betrieb in einer Desktop-Umgebung versucht
- Durch den zusätzlichen Anschluss eines 12-V-Netzteils und eines Touchscreen-Moduls gelang der Bootvorgang; über den Ethernet-Port war Zugriff auf das interne Netzwerk möglich
- Im Inneren der MCU waren ein SSH-Server und die ODIN-REST-API (Port 8080) offen; für den SSH-Zugang wird ein von Tesla signierter Schlüssel benötigt
- Anfangs mussten wegen Kabelkompatibilitätsproblemen und PCB-Schäden der Power-Controller-Chip ersetzt werden, nach der Reparatur konnte das System wiederhergestellt werden
- Schließlich wurde durch Anschluss des Dashboard Wiring Harness ein vollständiger Boot des Touchscreens und des Fahrzeug-OS erreicht, wodurch UI-Bedienung und Firmware-Analyse möglich wurden
Teslas Model-3-Computer auf dem Schreibtisch betreiben
- Für die Teilnahme am Tesla Bug-Bounty-Programm wurde echte Fahrzeughardware benötigt, daher wurden auf eBay Teile der MCU (Media Control Unit) des Model 3 und des Autopilot-(AP)-Computers gekauft
- Der Fahrzeugcomputer besteht aus zwei übereinanderliegenden Boards, sitzt hinter dem Handschuhfach auf der Beifahrerseite und ist von einem flüssigkeitsgekühlten Metallgehäuse umgeben
- Auf eBay wurden Teile im Bereich von 200 bis 300 Dollar beschafft; die meisten stammten von Verwertern verunfallter Fahrzeuge
- Zum Starten des Systems wurden zusätzlich ein 12-V-Gleichstromnetzteil, ein Touchscreen-Modul und ein Display-Kabel benötigt
- Als Netzteil kam ein regelbares 0–30-V-/10-A-Modell zum Einsatz, der Bildschirm wurde für 175 Dollar gekauft
Kabelprobleme und Informationen zur Verdrahtung
- Die Kabel zur Verbindung von MCU und Bildschirm wurden meist direkt hinter dem Stecker abgeschnitten verkauft, daher musste ein eigenes Kabel angefertigt werden
- Tesla veröffentlicht die Electrical-Reference-Dokumente aller Fahrzeuge, sodass sich die Pinbelegung und Verdrahtungsinformationen der einzelnen Stecker nachvollziehen ließen
- Das Display benötigt ein 6-poliges Kabel mit dem Stecker Rosenberger 99K10D-1D5A5-D (2 Pins für 12 V/Masse, 4 Pins für Daten)
- Da dieser Stecker für normale Endkunden nicht einzeln erhältlich ist, wurde als Ersatz ein LVDS-Kabel für BMW bestellt
Stromversorgung und Netzwerkzugriff
- Mithilfe von Tesla-Schaltplänen und Online-Materialien wurden die 12-V- und Masse-Pins identifiziert; nach dem Anschluss startete der Bootvorgang mit roter LED
- Ohne Bildschirm war die Interaktion eingeschränkt, eine Verbindung mit dem Laptop war jedoch über den Ethernet-Port möglich
- Im Netzwerk gibt es kein DHCP, daher ist eine manuelle IP-Konfiguration nötig; verwendet werden muss der Bereich
192.168.90.X/24
- Über eine auf Reddit veröffentlichte Datei
/etc/hosts wurden die internen Host-IP-Adressen für MCU, Gateway, Autopilot und weitere Komponenten ermittelt
- Auf der MCU (
192.168.90.100) waren SSH (Port 22) und ein Webserver (Port 8080) offen
Interne Dienste und Struktur der MCU
- Der SSH-Server zeigt die Meldung „SSH allowed: vehicle parked“ an; für den Zugriff wird ein von Tesla signierter Schlüssel benötigt
- Forschende, die im Tesla Bug Bounty eine Root-Schwachstelle finden, erhalten ein dauerhaftes SSH-Zertifikat
- Auf Port 8080 läuft eine REST-API namens ODIN (On-Board Diagnostic Interface Network), die im Toolbox-Diagnosetool verwendet wird
- Nach Entfernen der Metallabschirmung ließ sich die interne Stapelstruktur von MCU- und Autopilot-Board erkennen
Fehlgeschlagene Kabelversuche und beschädigte Schaltung
- Das BMW-LVDS-Kabel war physisch nicht kompatibel, daher wurde versucht, die Verdrahtung direkt herzustellen
- Dabei brachen dünne Leitungen, es kam zu einem Kurzschluss auf dem PCB, und der Power-Controller-Chip wurde beschädigt
- Die Identifizierung des defekten Chips war schwierig, doch der Mitwirkende Yasser erkannte ihn als MAX16932CATIS/V+T Step-down-Controller
- Nach Bestellung eines neuen Chips und Austausch in einer PCB-Reparaturwerkstatt konnte die MCU wiederhergestellt werden
- Anschließend wurde vorsorglich noch ein zweiter Computer als Reserve beschafft
Endgültige Lösung und vollständiger Boot
- Da das Rosenberger-Kabel nicht aufzutreiben war, wurde schließlich der komplette Dashboard Wiring Harness (80 Dollar) gekauft
- Im realen Fahrzeug wird nicht mit Einzelkabeln gearbeitet, sondern mit einem großen Kabelbaum (loom)
- Nach dem Anschluss des Kabelbaums funktionierte der Touchscreen ordnungsgemäß, und das Fahrzeugbetriebssystem bootete vollständig
- Danach waren UI-Bedienung, Erkundung der Netzwerkschnittstellen, Analyse des CAN-Bus und Versuche zur Firmware-Extraktion möglich
2 Kommentare
Das Interessanteste ist für mich das hier.
"Teslas Root-Access-Programm"
Wenn man auch nur eine gültige Rooting-Sicherheitslücke findet, erhält man für das eigene Fahrzeug ein "permanentes SSH-Zertifikat" und kann sich als Root anmelden.
Ah, das will ich haben!!
Hacker-News-Kommentare
Teslas Root-Access-Programm ist interessant
Wenn ein Forscher auch nur eine gültige Rooting-Sicherheitslücke findet, kann er ein permanentes SSH-Zertifikat für sein eigenes Fahrzeug erhalten und sich als root anmelden
Das ist ähnlich wie Apples Security Research Device Program, wobei die Voraussetzungen klar definiert sind
Wenn man allen Root-Rechte gibt, wird es für böswillige Akteure leichter, nach Schwachstellen zu suchen, daher ist Teslas Ansatz nachvollziehbar
Ich habe früher bei einem Unternehmen gearbeitet, das Drittanbieter-Scan-Tools entwickelt hat
Statt echter Fahrzeuge wurden ECUs in einem Rack angeschlossen und getestet, und dabei wurde ein Problem mit nicht standardisierten Byte-Offsets bei BMW gefunden. Das Tool eines Konkurrenten erkannte das Problem nicht, aber das offizielle BMW-Tool zeigte den DTC an
Wenn man das Modell anders einstellt, lassen sich die ECU-DTCs immerhin löschen, daher wird es vorerst so genutzt. In diesem Bereich braucht es dringend einen Open-Hardware-/Open-Source-Software-Ansatz
Es wird überlegt, ob die mit teurer kommerzieller Software erzeugten Ergebnisse veröffentlicht werden sollen, und es wird die Ansicht vertreten, dass Informationen wie Definitionen von Fahrzeug-Kommunikationsprotokollen allen offenstehen sollten
Es ist interessant, dass LVDS als Kabel für Autos bezeichnet wird. Ursprünglich kannte man das eher von der Verbindung zwischen Laptop-Displays und Mainboards
Siehe den Artikel zu Low-voltage differential signaling
Teslas UI-App QtCar lässt sich in QEMU ausführen
Man braucht nur die Firmware; wer Interesse hat, soll per DM Bescheid geben
Demo-Video
Jemand teilt seine Erfahrung damit, in einem Tesla Model Y selbst einen Bremscontroller für Anhänger installiert zu haben
Es wurde ein Controller für 14,4 V gesucht, ein Kabel angefertigt und über eBay passende Stecker gekauft und eingebaut
Im letzten Jahr wurde damit mehrfach problemlos ein Campinganhänger gezogen, und dieser DIY-Hacking-Geist wird als großartig empfunden
Interessant ist, dass der Kern des Problems einfach ein 6-Pin-Stecker war
Obwohl Zeichnungen und Maße vorhanden waren, überrascht es, dass niemand daran gedacht hat, den Stecker selbst per 3D-Druck herzustellen
Dieses Projekt ist wirklich großartig
Man fragt sich, ob es Plug-and-Play ist und wo die Reichweiteninformationen gespeichert werden
Wenn möglich, würde man gern eine adaptive Federung in ein älteres Modell nachrüsten. Es gibt auch die Idee, mit einem Raspberry Pi ein separates Steuerungssystem zu bauen
Erstaunlich ist, dass das Betriebssystem vollständig bootet, selbst wenn die erwarteten Peripheriegeräte fehlen
Was auch immer man über Tesla sagen mag, aus Hacking-Sicht ist das wirklich ein cooles Projekt
Es hieß, man habe für 80 Dollar den kompletten Kabelsatz kaufen müssen; in den USA nennt man das wiring harness. loom bezeichnet eher das Ummantelungsmaterial
AliExpress-Link