Ein erstes Szenario zeigt, wie die Firmware aus einem Heim-EV-Ladegerät extrahiert werden kann, wenn man physischen Zugang dazu hat. Dieser Versuch ist wichtig, weil das Extrahieren der Firmware der erste Schritt ist, um ein Gerät genauer zu untersuchen und seine Sicherheitslücken zu entdecken.
Firmware wird in der Regel in einem persistenten Memory-Speicher wie NAND vorgehalten. Daher umfasst der Prozess das Lesen und Kopieren des im Speicher des Geräts gespeicherten Image der Firmware. Dazu setzten wir auf JTAG, ein Industriestandard und ein weit verbreitetes Protokoll, das dem Testen und Debuggen in Leiterplatten dient. JTAG hat direkten Zugriff auf den Speicher eines Geräts und erlaubt es damit einem Forscher (oder potenziellen Angreifer), alle Schutzmechanismen wie Verschlüsselung und Authentifizierung zu umgehen.
Über den physischen Zugriff auf das Gerät konnten wir die Atmel-CPU, eine serielle Konsole, den NAND-Flash und den JTAG-Debug-Port lokalisieren und auch alle Informationen sammeln, die zum Extraktion der Firmware nötig sind. Wir fanden wichtige Informationen aus dem Bootloader und der Linux-Konsole, wo wir die Start- und Endadressen im NAND jeder Partition erhalten.
Mit Hilfe von JTAG-Tools können wir mit dem Ladegerät kommunizieren.
Anschließend nutzten wir das Tool JLink, um Debug- Tools mit der Ziel-CPU zu verbinden. Dies ist wichtig, da Debug-Software zum Starten und Anhalten von Prozessoren, zum Setzen von Haltepunkten bei der Ausführung und zum Anzeigen oder Setzen von Speicher- und CPU-Registerwerten verwendet wird. Letztendlich ermöglicht der Debugger grundlegend die Manipulation der Ziel-CPU und eine Extraktion der Firmware.
Von da weiter nutzten wir alle gesammelten Informationen, um die Ausführung der Funktion nand_loadimage im Bootloader zu steuern. Wenn die CPU auf die spezifischen Haltepunkte trifft, werden Register manipuliert, um den Bootloader zu veranlassen, die Firmware im NAND in einen Puffer im SRAM zu kopieren, wo das JTAG-Tool sie zur weiteren Analyse in einer Datei speichert.
Von den sechs geprüften Ladestationen für zu Hause nutzte keine Firmware-Verschlüsselung, und nur wenige versuchten, den JTAG-Zugriff zu deaktivieren oder zu verbergen. Diese Sicherheitslücke bedarf der Aufmerksamkeit.
Ausnutzung der Privilegien-Erweiterung
In einem zweiten Szenario untersuchten wir die Möglichkeit von lokaler Privilegien-Erweiterung auf einem Ladegerät-Controller. Wir wollten herausfinden, ob ein lokales Benutzerkonto in der Lage wäre, Root-Zugriff zu erlangen.
Das untersuchte Gerät wird mit einem lokalen Benutzerkonto ausgeliefert. Dieses kann ein Skript ausführen, das einen Systembericht exportiert, der als root ausgeführt wird.
Das Export-Skript prüft weder den Zielpfad noch setzt es korrekte Berechtigungen für die Exportdatei, so dass der lokale Benutzer die Datei überschreiben kann. Es war uns möglich, ein Skript auszuwählen und eines in der „sudo“-Zulassungsliste als Ziel nennen. Alle Befehle, die in die Zieldatei geschrieben werden, können dann als root-Benutzer ausgeführt werden.
Wie schon im ersten Szenario lässt sich dies durch die Implementierung grundlegender Sicherheitsmaßnahmen oder -schritte verhindern - in diesem Fall durch eine bessere Überprüfung von System-Skripten und Sicherheitsberechtigungen.
Die Bedeutung der Aufdeckung von Schwachstellen
Die Automobilindustrie befindet sich in einer einzigartigen Situation, denn selbst alltägliche Cyberbedrohungen und Schwachstellen können insbesondere für die Verkehrssicherheit ungeahnte Folgen haben. Diese beiden Szenarien geben einen Einblick in die Art der Aufdeckung von Schwachstellenentdeckungen, wie sie auch beim Pwn2Own Automotive erfolgte. Danach haben die Anbieter Zeit und Gelegenheit, mit den Sicherheitsforschern, die die Schwachstellen entdeckt haben, zusammenzuarbeiten, um die Schwachstellen in ihren Systemen zu beheben.