Skip to content

Thunderstrike - Via Thunderbolt in die Firmware des Macs, Teil 2

Auch in dieser Folge geht es um den von Trammell Hudson entwickelten Thunderstrike-Angriff, den er auf dem 31. Chaos Communication Congress (31C3) vorgestellt hat. Er wird detailliert in einer kommentierten Version des 31C3-Vortrags (den es auch als Video auf YouTube gibt) vorgestellt. Außerdem gibt es eine FAQ.

Im ersten Teil haben Sie erfahren, dass und wie die EFI-Firmware des Mac manipuliert werden kann, wenn der Angreifer sich direkten Zugriff auf den ROM-Chip verschafft. Also das Gerät öffnet und eigene Hardware mit dem Chip verbindet. Viel interessanter wäre der Angriff jedoch, wenn das Gerät nicht geöffnet werden müsste. Und das ist auch tatsächlich nicht nötig, denn...

Teil 2: Thunderbolt kommt in Spiel

... das ist der Moment, in dem der Thunderbolt-Anschluss ins Spiel kommt. Während des Boot-Vorgangs fragt die EFI-Firmware bei jedem Thunderbolt-Gerät nach, ob es ein Option-ROM enthält, dass ausgeführt werden muss. Ein OS X Rootkit, dass über ein Thunderbolt Option-ROM eingeschleust wird, wurde bereits 2012 auf der Black Hat USA von Loukas K ("Snare") vorgestellt. Und die damals ausgenutzte Schwachstelle ist nach wie vor in aktuellen MacBooks vorhanden.

Der Angriff von Loukas K über das Option-ROM funktioniert so:
Wenn die EFI-Firmware den PCIe-Bus initialisiert, lädt sie die im Option-ROM angeschlossener Thunderbolt-Geräte enthaltenen Treiber und führt sie aus. Das ist ein normaler und notwendige Bestandteil des Initialisierungsprozesses, da die Firmware im primären EFI-ROM auf dem Motherboard nicht zwingend korrekte Treiber für alle angeschlossenen Geräte enthält. Enthält das Option-ROM Schadcode, wird der natürlich ebenfalls ausgeführt. Und kann sich dann in jede EFI- oder Systemfunktion einhängen und zum Beispiel Firmware-Passwörter umgehen, eine Hintertür im Kernel installieren, ...

Kann man über Thunderbolt in die Firmware schreiben?

Der Angreifer kann über ein manipuliertes Thunderbolt-Gerät also ein Rootkit installieren, der Angriff erfolgt aber zu spät, um das Firmware-ROM des Rechners zu überschreiben. Dessen Schreibschutz wird vor dem Laden der Option-ROMs aktiviert. Das Firmware-ROM bleibt nur beschreibbar, wenn das System ein Firmware-Update installiert. Und das erfolgt in der gleichen Phase, in der auch die Option-ROMs der Thunderbolt-Geräte ausgeführt werden.

Was zur nächsten Frage führt: Werden die Option-ROMs auch bei einem Firmware-Update geladen? Wie sich herausstellte, ist das der Fall: Option ROMs werden beim Booten im Recovery Mode geladen, aber erst nachdem die Signatur der SCAP-Datei von einer anderen als der zuvor gefundenen Routine geprüft wurde.

Für einen Angriff muss also auch diese zusätzliche Signaturprüfung umgangen werden. Wie Trammell Hudson herausfand, ist das möglich: Die zu installierende Firmware wird über den Funktionsaufruf ProcessFirmwareVolume geladen, dessen Pointer sich im RAM und nicht im ROM befindet. Indem die Funktion durch eine ersetzt wird, die das Firmware-Laufwerk nach der Signaturprüfung, aber vor seinen mounten ändert, kann ein Angreifer die korrekt signierte Original-Firmware vor dem Schreiben ins Firmware-ROM durch seine eigene unsignierte Firmware ersetzen.

Ein Angreifer, der genug Platz im Option-ROM seines Thunderbolt-Geräts hat, kann die manipulierte Firmware also darin speichern und sie nach dem Austricksen der Signaturprüfung von Apples Firmware-Update-Code von dort aus ins Firmware-ROM schreiben lassen.

Ups... zu wenig Platz. Das ist schlimm. Für das Opfer!

Der von Trammell Hudson für den Angriff ausgewählte Gigabit Ethernet Thunderbolt Adapter von Apple (der auch schon von Loukas K verwendet wurde) hat dummerweise nur ein paar KB Speicher, nicht die benötigten MB. Diese Einschränkung macht den Angriff aber nur schlimmer, denn statt die komplette Firmware auszutauschen, werden nur Teile davon manipuliert. Die, die nötig sind, um danach Apples eigene Update-Tools für den Angriff zu missbrauchen.

Dazu müssen lediglich 256 Bytes im ROM manipuliert werden: Apples öffentlicher RSA-Schlüssel, der für die Signaturprüfung verwendet wird, wird durch einen eigenen öffentlichen Schlüssel des Angreifers ersetzt.

Der Angriff läuft damit folgendermaßen ab:

  • Über bless wird eine gültige SCAP-Datei installiert und der Rechner im Firmware Revovery Mode gebootet.
  • Dabei ist das Thunderbolt-Gerät mit dem manipulierten Option-ROM angeschlossen.
  • Apples ROM prüft die Signatur der SCAP-Datei und ruft die Funktion zur Verarbeitung des Firmware-Volumes ProcessFirmwareVolume auf.
  • Die Funktion wurde vom Schadcode im Option-ROM manipuliert und überschreibt den öffentlichen RSA-Schlüssel in der RAM-Kopie der SCAP-Datei mit einem eigenen Schlüssel, bevor sie die Kopie an den Code zum Ändern des Firmware-Boot-ROMs übergibt.
  • Im Boot-ROM landet nun die manipulierte Original-Firmware mit dem Public Key des Angreifers.
  • Bei jedem späteren Firmware-Update wird die Signatur der Firmware mit Hilfe des öffentliche Schlüssels des Angreifers geprüft. Es kann also nur noch vom Angreifer signierte Firmware installiert werden. Bis jemand anders den gleichen Angriff durchführt und seinen öffentlichen Schlüssel einschleust - aber um das zu verhindern, entfernt der Thunderstrike-PoC sofort das Laden der Option-ROMs.

Einmal installiert, kann der Public Key des Angreifers von Software nicht mehr geändert werden. In der nächsten Folge erfahren Sie, welche Folgen das hat, wie der Angriff durchgeführt werden kann, und wie er sich verhindern lässt.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : Thunderstrike - Via Thunderbolt in die Firmware des Macs, Teil 3

Vorschau anzeigen
Noch einmal geht es um den von Trammell Hudson entwickelten Thunderstrike-Angriff, den er auf dem 31. Chaos Communication Congress (31C3) vorgestellt hat. Er wird detailliert in einer kommentierten Version des 31C3-Vortrags (den es auch als Vid