Honda Civics und bösartiges Valet-Parking
(juniperspring.org)- Das Headunit des Honda Civic Modelljahr 2021 kann über den USB-Update-Pfad Updates akzeptieren, die mit öffentlich bekannten AOSP-Testschlüsseln signiert sind, sodass ein Angreifer mit physischem Zugriff beliebigen Code ausführen kann
- Hondas Updates werden über Android Recovery eingespielt, und selbst wenn das
recovery-Binary modifiziert wurde, entspricht dieverify_file-Logik zur Signaturprüfung dem Standard von AOSP - Wenn man mit dem öffentlichen AOSP-Testschlüssel signiert und das USB-Laufwerk passend formatiert, lässt sich gewünschter Code auch ohne
suundsetuidinstallieren; dieser Angriff wird EvilValet genannt - Das neue Tool ota-builder erleichtert die Vorbereitung von Update-Dateien, die vom Headunit akzeptiert werden, und apk-rebuilder wandelt Update-Dateien in einen Ausgabebaum um, der für Reverse Engineering benötigt wird
- Das Projekt hat den Großteil der Untersuchungsarbeit abgeschlossen, aber das Repository ist nicht eingestellt; Beiträge zu Versionsinformationen, Toolchain, Custom Themes und Verbesserungen beim AIDL-Mapping werden benötigt
Hintergrund zum Projekt-Update
- Vor drei Jahren wurden erste Arbeiten veröffentlicht, um das Headunit des Honda Civic Modelljahr 2021 zu verstehen und per Reverse Engineering zu analysieren; dieses Update fasst die seitherigen Fortschritte zusammen
- Die anfängliche Reaktion war sehr ermutigend, und der größte Fortschritt ergab sich bei der Analyse des Update-Prozesses
Der Schlüssel zum Königreich
- Honda unterstützt Headunit-Updates per USB; letztlich werden signierte AOSP-Update-Dateien auf dem USB-Laufwerk über Android Recovery vorbereitet und eingespielt
- Es gibt mehrere Honda-spezifische Prüfungen, aber in
res/keyswaren öffentlich bekannte AOSP-Testschlüssel verblieben, und auch die Signaturlogikverify_fileim modifiziertenrecovery-Binary stimmt mit dem Standard von AOSP überein - Wenn das USB-Laufwerk passend formatiert und mit dem öffentlichen AOSP-Testschlüssel signiert wird, kann beliebiger Inhalt auf dem Headunit installiert werden, ohne bestehenden Root-Zugriff zu benötigen
- Ein typischer Root-Zugriff über das Setzen von
setuidaufsuist nicht erforderlich - Wenn das Headunit mit Strom versorgt ist und der Angreifer physischen Zugriff auf den vordersten USB-Port hat, ist über den Update-Pfad die Ausführung beliebigen Codes auf dem Headunit möglich
- Ein typischer Root-Zugriff über das Setzen von
- Dieser Angriff ähnelt einem evil maid attack mit physischem Zugriff auf ein Hotelzimmer, wird hier aber EvilValet genannt, da Zugang zum Fahrzeuginnenraum nötig ist
- Im Beispielszenario installiert ein Hotel-Valet per USB ein Update; nach Rückgabe des Fahrzeugs bemerkt der Fahrer die Änderungen am Headunit nicht
- Dieser Beitrag ist keine technische Detaildokumentation; weitere Informationen finden sich im Dokument Display Audio Update Files
- Das neue Tool ota-builder erleichtert die Vorbereitung von Update-Dateien, die vom Headunit akzeptiert werden
- Es befindet sich noch in einem frühen Stadium, aber beispielsweise ist es inzwischen trivial, eine Update-Datei zu erzeugen, die ein
su-Binary mit gesetztemsetuidinstalliert
- Es befindet sich noch in einem frühen Stadium, aber beispielsweise ist es inzwischen trivial, eine Update-Datei zu erzeugen, die ein
- Es gibt starke Gründe für die Annahme, dass alle Updates mit öffentlichen AOSP-Testschlüsseln signiert wurden, aber es gab keinen Zugriff auf alle möglichen offiziellen Update-Dateien und alle Dateisysteme sämtlicher Headunit-Varianten
- Bei den überprüften Headunits befanden sich AOSP-Testschlüssel in
res/keys, allerdings könnte durch eine frühere Installation von HondaHack auch ein Schlüssel in den Keystore injiziert worden sein - Die öffentlich verfügbare EU-Software-Update-Datei
MRC_EU_SW_v12_4.zipist mit dem Testschlüssel signiert und wurde unverändert aus einem öffentlichen Forum heruntergeladen - Es ist sehr wahrscheinlich, dass alle Updates mit AOSP-Testschlüsseln signiert sind, aber Beiträge werden benötigt, um diese Hypothese zu stützen oder zu widerlegen
- Bei den überprüften Headunits befanden sich AOSP-Testschlüssel in
Werkzeuge aufbauen
- Neben dem Update-Prozess war die Entwicklung von apk-rebuilder die nützlichste Arbeit
- apk-rebuilder nimmt Honda-Civic-Update-Dateien aus dem Internet als Eingabe und erzeugt einen sauberen Ausgabebaum, der Arbeiten automatisiert, die Reverse Engineers sonst manuell erledigen müssten
- Führt Ressourcenauflösung durch
- Führt Rekonstruktion von
.smali-Code durch - Führt Repackaging von APK-Dateien durch
- Führt Extraktion der Ramdisk durch
- Führt weitere Aufgaben aus
- Da der eigentliche Honda-Quellcode nicht veröffentlicht werden kann, übernimmt apk-rebuilder die Funktion, Update-Dateien als Eingabe zu verarbeiten, die das öffentliche Repository nicht hostet, und daraus unter anderem Honda-
.smali-Code und Bild-Assets auszugeben - Die erzeugten Ausgaben folgen einer klaren Verzeichnisstruktur und können in der Dokumentation referenziert werden, ohne die sensiblen Dateien selbst hochzuladen
Verbleibende Arbeit und Bitte um Beiträge
-
Bekannte Versionen
- Der Update-Prozess ist verwundbar und hängt stark von der Versionsnummer ab
- Die Versionsnummer kann gefälscht werden und beschränkt daher die Möglichkeit, unsignierten Code auszuführen, nicht
- Um Update-Dateien zu erstellen, muss bekannt sein, welche Version das Headunit erwartet
- Änderungen an der Headunit-Software, die nicht zum verwendeten Build passen, können zu unerwartetem Verhalten und Recovery-Loops führen
- Technikaffine Fahrer eines Honda Civic der 10. Generation können zum Abschnitt Known Versions, Display Audio Software im Repository beitragen
- Besonders mutige Nutzer können den Code von
ota-builderlesen und versuchen, ein Update zu flashen, aber wenn das Headunit nicht dem Referenzgerät entspricht, kann es in einen Recovery-Loop geraten und softgebrickt werden
-
Toolchain
- Auf dem lokalen Rechner existiert eine experimentelle, noch unfertige Toolchain
- Diese Toolchain nimmt Kandidaten-
.c-Code und kompiliert ihn mit derselben Compiler-Version und denselben Build-Flags wie das ursprüngliche Vendor-Binary für ARMv7 - Für das Verständnis des Update-Prozesses war diese Toolchain unverzichtbar
- In ihrer aktuellen Form verwendet sie viel Docker, ist aber unordentlich und stark auf einen bestimmten Workflow zugeschnitten; Ziel ist es, eine saubere Implementierung zu veröffentlichen
-
Custom Themes
- Beim vibe-coding an apk-renderer wurden Custom Themes teilweise untersucht
- Custom Themes befinden sich im Mitsubishi-Fork des AOSP-Frameworks, und die Headunit-Apps sind offenbar so verkleinert, dass sie hartcodierte Ressourcen-IDs erwarten, was die Verteilung vermutlich erschwert
- Um Custom Themes zu verteilen, müsste wahrscheinlich das Vendor-Framework chirurgisch modifiziert und ein Tool zur Automatisierung dieses Vorgangs geschrieben werden
- Diese Arbeit ist nicht einfach und möglicherweise den Aufwand nicht wert, aber Mitwirkende sind willkommen
-
Verbesserungen für aidl-rebuilder
- Es wurde begonnen, an einem Tool zu arbeiten, das
.smali-Dateien parst und sämtliche AIDL-Schnittstellen des Headunits erzeugt und abbildet - Das Tool funktioniert, aber die Genauigkeit konnte noch nicht ausreichend geprüft werden
- Diese Arbeit eröffnet Möglichkeiten für Custom Apps wie virtuelle Tachometer
- Es wurde begonnen, an einem Tool zu arbeiten, das
Gedanken zu Dokumentation und LLMs
- Der Schwerpunkt liegt stärker auf Tooling als auf Referenzdokumenten
- Wenn zuverlässige, deterministische Tools den Headunit-Code in besser verständliche Formen überführen, können Nutzer diese Formen mit LLMs abfragen, um konkrete Fragen zu beantworten
- Da der Headunit-Code die Quelle der Wahrheit ist, lässt sich der Aufwand verringern, Referenzdokumente zu pflegen, die vom tatsächlichen Code abweichen könnten
- Eine Nutzeranleitung zum Verbinden mit dem Headunit per ADB bleibt weiterhin nützlich
- Wenn Java-Code selbst für LLMs nutzbar ist, wird es zum Wartungsaufwand, zusätzlich separate Dokumentation über das Verhalten dieses Java-Codes zu pflegen
Abschluss
- Der Großteil der beabsichtigten Untersuchungsarbeit zum Headunit ist abgeschlossen
- Es bleibt ein Projekt, an dem man weiterarbeiten könnte, aber künftig ist wahrscheinlich ein Wechsel zu anderen Projekten geplant
- Das Repository ist nicht eingestellt, und PRs sind jederzeit willkommen
1 Kommentare
Hacker-News-Kommentare
Diese Versionsprüfung lässt sich täuschen, und das Paket ist mit dem öffentlichen AOSP-Testschlüssel signiert, sodass man bei physischem Zugriff auf den vorderen USB-Port ein beliebiges Paket signieren und flashen und auf der Headunit beliebigen Code ausführen kann
root/su ist nicht nötig, ich habe das auf einem Civic von 2021 komplett durchgespielt, und ich habe außerdem bestätigt, dass auch die offiziellen EU-Update-Dateien mit dem AOSP-Testschlüssel signiert sind
In das Information Security Manual der australischen Regierung vom März 2026 wurde eine Vorgabe aufgenommen, Regierungsgeräte nicht mit dem Fahrzeug-Infotainment zu verbinden und in vernetzten Fahrzeugen oder in deren Nähe keine sensiblen Unterlagen anzusehen oder sensible Gespräche zu führen
https://www.cyber.gov.au/business-government/asds-cyber-secu...
Menschen, die für solche Angriffe anfällig sein könnten, haben für ihre Arbeit ohnehin eigene Verfahren und vertrauenswürdige Geräte, und US-Polizeibehörden hatten seit dem Aufkommen von OnStar ähnliche Regeln für Mietwagen
Die meisten für normale Menschen riskanten Telematikdaten werden ohnehin bereits verkauft
Im Sicherheitsmodell der Technik galt immer die Annahme, dass alles verloren ist, wenn ein Angreifer physischen Zugriff auf das Gerät und genügend Zeit hat
Dieser Mittelzustand wie jetzt — ein die Privatsphäre verletzendes Gerät, das den Nutzer während der gesamten Fahrt überwacht, und zugleich ein unsicheres Gerät, das diese Daten jedem mit nur etwas Interesse preisgibt — ist am schlimmsten
Wenn etwas beschlagnahmt werden kann, ist es besser, die Daten nicht lokal zu speichern, und je nach Rechtslage kann man zur Entsperrung gezwungen werden, aber in den USA sollte man geschützt sein, selbst wenn man die Herausgabe des Passworts verweigert
Technisch haben Google und Apple die physische Sicherheit stark verbessert, und GrapheneOS geht darauf aufbauend noch einen Schritt weiter, indem es die Angriffsfläche reduziert und sinnvolle Funktionen ergänzt. Vor allem durch die breite Einführung von Auto-Reboot muss man bei Smartphones das Fazit „physischer Zugriff bedeutet Game Over“ inzwischen relativieren
https://grapheneos.org/features#auto-reboot
https://discuss.grapheneos.org/d/35728-demystifying-phone-un...
Nur weil ein ausreichend fortgeschrittener und hartnäckiger Angreifer mit physischem Zugriff letztlich jedes Gerät kompromittieren kann, heißt das nicht, dass man es beliebigen Personen leicht machen sollte
Ein böswilliger Parkservice-Mitarbeiter mit physischem Zugriff auf das Auto würde seine Zeit nicht damit verschwenden, die Headunit zu hacken, sondern einfach irgendwo im Fahrzeug eine Wanze verstecken
Außerdem dürfte ein Civic-Fahrer kaum zum Ziel eines Nachrichtendienstes werden
Auf einer Headunit liegen oft Verlaufsdaten wie die nach einer Synchronisierung verbliebene Kontakte-SQLite-Datenbank, Standortverläufe oder ältere Daten, die in Telemetrie- oder Log-Dateien zurückgeblieben sind
Außerdem hat die Headunit oft Zugriff auf die internen Fahrzeugbusse, und selbst wenn es eine Firewall wie ein Gateway-Modul gibt, ist sie meist schwach. Wie der bekannte Honda-Fall zeigte, bei dem Entriegelung und Startfreigabe ohne kryptografisches Material über denselben CAN-Bus wie die Scheinwerfer möglich waren, kann Infotainment weit mächtiger sein als ein bloßes Tracking-Gerät
Zudem hinterlässt das Einschleusen von Code in die Headunit oder das Auslesen bereits vorhandener Daten deutlich weniger Spuren als das Anbringen eines separaten Trackers
Der Civic ist eines der häufigsten Autos und eignet sich gut, um in der Masse unterzugehen, und auch „gewöhnlich wirkende“ Menschen wie Wissenschaftler, Ingenieure, Journalisten oder Anwälte können sehr gut einen Honda Civic fahren
Eine im Auto versteckte Wanze kann entdeckt werden, aber etwas, das direkt in der Fahrzeug-Firmware installiert ist, wird mit geringerer Wahrscheinlichkeit gefunden
Die eigentliche Frage war aber, ob die Firmware im Hinblick auf interne Compliance-Anforderungen signiert wurde, nicht, ob das Firmware-Update-Verfahren die Signatur überhaupt prüft, und tatsächlich wurde sie überhaupt nicht geprüft
„Wie sollte man sonst den Signaturalgorithmus aktualisieren?“, lautete die Argumentation, und das Schlimmste daran ist, dass es zeitweise einmal korrekt umgesetzt war.
Als das Sicherheitsteam „postquanten-sichere“ Signaturen verlangte, wurde das Signaturverfahren geändert, und dabei kam es durch einen Regressionsfehler hinein.
Wenn diese Autos aber nach mehr als 10 Jahren in die Hände von Leuten gelangen, die daran herumtüfteln wollen, ist die Möglichkeit, die Software zu öffnen und anzupassen, ein großer Vorteil.
Es wäre schön, wenn eine Community entstünde, die nützliche Modifikationen entwickelt und die Lebensdauer der Geräte verlängert. Das erscheint deutlich besser, als wenn Endnutzer die originale Headunit herausreißen und eine AliExpress-artige „Android-Tablet“-Einheit einbauen, deren Sicherheit und technische Qualität wahrscheinlich schlechter ist als die des Honda-Geräts.
Wenn man Updates nicht standardmäßig vollständig vertrauen will, hätte es einen Mechanismus geben müssen, mit dem der tatsächliche Eigentümer Updates genehmigen kann.
Wäre es wirklich Absicht gewesen, hätte es wohl einen entsperrbaren Bootloader gegeben, der einen speziellen Schlüssel erfordert, oder etwas wie einen schwer zugänglichen Schalter.
Das funktioniert bei mehr Marken als nur bei einer Honda-Civic-Generation und geht beim Einbau wahrscheinlich auch schneller.
Dass zu irgendeinem Zeitpunkt die gesamte Projektdokumentation vollständig mit dem Code abgeglichen und aktuell ist, ist wirklich unwahrscheinlich.
Grundsätzlich stimme ich dieser Richtung zu, aber die Voraussetzung ist eben, dass der Code gut gestaltet ist.
Tests können die beabsichtigte Nutzung und interessante Randfälle zeigen, und weil sie fortlaufend ausgeführt werden und bestehen, weiß man auch, dass sie aktuell sind.
Das ist ein stark unterschätzter großer Vorteil, wenn man mehr Tests hinzufügt.
Wenn Entwickler voraussichtlich nach einem bestimmten Verhalten oder Randfall fragen werden, kann es sinnvoll sein, einen Test zu haben, der die Antwort direkt beweist, statt sie erneut herleiten zu lassen.