Zum Hauptinhalt Zur Navigation Zur Suche

Nvidia Tegra X2: Hack bringt eigene Software auf alte Tesla-Autopilots

39C3
Hardware-Sicherheitsfunktionen sind nur so sicher wie ihre Software. Das zeigt der Hack eines älteren Nvidia-Chips, den auch Tesla nutzte.
/ Johannes Hiltscher
Kommentare Auf Google folgen (öffnet im neuen Fenster)
Den Tegra TX2 verbaute Nvidia in seinen Drive-PX2-Systemen - und verkaufte den an Automobil-OEMs. (Bild: Martin Wolf/Golem.de)
Den Tegra TX2 verbaute Nvidia in seinen Drive-PX2-Systemen - und verkaufte den an Automobil-OEMs. Bild: Martin Wolf/Golem.de

Ein eigener Boot and Power Management Processor (BPMP) sowie im Chip integrierte Boot-Firmware sollen bei Nvidias Tegra X2 das Ausführen eigener Software verhindern. Doch die hat Lücken, wie die Hackerin Elise Amber Katze beim 39. Chaos Communication Congress in Hamburg zeigte(öffnet im neuen Fenster). Eigentlich wollte sie damit die Magic Leap One (Test) nach Abschaltung der Server des Herstellers frei nutzbar machen. Aber der Chip steckt auch in Teslas Autopilot Hardware 2.

Da der Boot-Prozess mehrere Schritte umfasst, fand die Hackerin gleich drei Angriffspunkte: Zunächst über die dritte Stufe des Bootloaders namens Cboot, aber auch über die Firmware des BPMP, die fest im System-on-Chip (SoC) integriert ist. Im Bootloader Cboot, dessen Quellcode Nvidia veröffentlichte, ist eine Sicherheitslücke, die das Überschreiben des Stacks ermöglicht.

Über das Protokoll Fastboot(öffnet im neuen Fenster) kann eigener Code eingeschleust werden. Der ermöglichte es, den Code von Cboot und Teile der BPMP-Firmware auszulesen. Über eine manipulierte Partition für den Device Tree (DTB) kann Cboot auf dem TX2 zudem dazu gebracht werden, sich mit beliebigem Code selbst zu überschreiben – was das Laden eines eigenen Bootloaders ermöglicht.

Teil der Firmware versteckt

An die vollständige BPMP-Firmware gelangte die Hackerin mittels Voltage Glitching. Hierbei wird die Versorgsspannung kurzzeitig gezielt abgesenkt, um bewusst Fehler herbeizuführen.

Das hatten bereits im Jahr 2023 Sicherheitsforscher genutzt, um den Sicherheitschip von Teslas Autopilot-Hardware zu überlisten. Beim Tegra X2 wird damit verhindert, dass ein Register gesetzt wird, um einen Teil der BPMP-Firmware aus dem Speicher auszublenden. Damit konnte dieser vollständig ausgelesen werden – und auch er lässt sich kapern.

Dem BPMP eigene Software unterzujubeln, war allerdings komplizierter als bei Cboot.

Nvidia spart auf Kosten der Sicherheit

Einen Angriffsvektor auf die BPMP-Firmware stellt deren USB Recovery Mode zusammen mit einem besonderen Feature des Boot-ROMs dar. Der Recovery Mode ermöglicht es, Daten an das SoC zu übertragen, ähnlich wie Fastboot. Auch hier ist die Software fehlerhaft, daher können beliebig viele Daten übertragen werden. Die schreibt die USB-Hardware dann Stück für Stück in den Adressraum.

Durch einen Fehler in der USB-Hardware kann damit der gesamte 32-Bit-Adressraum überschrieben werden. Dies zum Ausführen eigener Software nutzen, ist allerdings nicht trivial: Der USB-Controller kann nur in den System-RAM schreiben, der BPMP hält aber seinen Stack in einem eigenen, getrennten Speicher. Das verhindert ein einfaches Überschreiben von Rücksprungadressen.

Der isolierte Speicher des BPMP lässt sich teilweise manipulieren, indem die vom USB-Controller verwendeten Datenstrukturen durch diesen selbst überschrieben werden. Das kann genutzt werden, um den Bootloader eine neue Datenstruktur an einer beliebigen, an 16 Byte ausgerichteten Adresse anlegen zu lassen – auch im isolierten Speicher.

Kaputt gepatcht

Die Möglichkeiten sind damit allerdings eingeschränkt, der Inhalt der neuen Datenstruktur kann nicht frei kontrolliert werden. Den BPMP zur Ausführung von Code aus dem RAM zu bewegen, funktioniert aber aufgrund einer weiteren Sicherheitslücke.

Die befindet sich in einem Feature, mit dem sich Nvidia kostspielige Hardware-Revisionen ersparen wollte: Um Fehler in der integrierten Firmware zu korrigieren, kann diese mittels Patches verändert werden. Die werden zwar im Rahmen der Produktion konfiguriert, können aber für komplexere Änderungen Systemrufe auslösen – und der entsprechende Handler lässt sich nutzen, um den BPMP-Code zum Sprung an eine Adresse im System-RAM zu bringen.

Dafür wird ein Teil des Codes manipuliert, was in Kombination mit einem passenden Aufruf – den ergibt das Auslesen des Device Descriptors des USB Control Endpoints – für einen Sprung an eine Adresse im System-RAM genutzt werden kann. Eine Beschreibung aller Sicherheitslücken ist im Codeberg-Repository von Elise Amber Katze(öffnet im neuen Fenster) nachzulesen.

Ein Problem sollte der Hack derweil nicht darstellen. Nvidia stellte die Produktion des 2016 vorgestellten Tegra TX2 aus der Pascal-Generation ein. Bei späteren Tegra-Varianten wurden zumindest die Sicherheitslücken in Cboot korrigiert.


Relevante Themen