Programmier-Tipps für die BIOS-Backdoor

Der Hacker Cr4sh erklärt, wie er eine Hintertür in die UEFI-Firmware eines Intel-Mainboards einbaut. Dabei zeigen sich einmal mehr kritische Lücken in der x86-Plattform, vor allem beim System Management Mode.

In Pocket speichern vorlesen Druckansicht 56 Kommentare lesen
System Management Mode (SMM) bei x86-Plattformen

Der System Management Mode (SMM) läuft bei jedem x86-System parallel mit.

(Bild: Intel)

Lesezeit: 5 Min.
Inhaltsverzeichnis

Wieder einmal öffnet der System Management Mode (SMM) aus der PC-Frühzeit eine Sicherheitslücke, mit der böswillige Angreifer und Lauscher eine gut getarnte Hintertür in x86-Computer einbauen können. Der Hacker Cr4sh alias Dmytro Oleksiuk erläutert in einem langen Blog-Eintrag, wie er ins UEFI-BIOS des Intel-Mainboards DQ77KB eine Backdoor implantiert. Die wesentlichen Teile des Codes stellt er gleich noch bei GitHub bereit.

Ein unmittelbares Risiko für Angriffe mit dem Code besteht nicht, wie Cr4sh selbst erklärt. So benutzt er einen Hardware-Adapter, um den manipulierten UEFI-Code in den Flash-Chip des Mainboards zu schreiben. Für Angriffe aus dem Netz müsste man andere Sicherheitslücken nutzen, um den UEFI-Code einzuschleusen.

Außerdem ist der Schad-Code, den Cr4sh geschrieben hat, systemspezifisch: Außer auf dem Intel DQ77KB würde er auf anderen Systemen nur funktionieren, wenn deren Firmware den APIC-Timer auf gleiche Weise ansteuert.

Cr4sh beschreibt sehr gut, weshalb der nach heutigen Maßstäben schlecht gegen Angriffe gesicherte SMM Hacker geradezu einlädt: Diesen Betriebsmodus von x86-Prozessoren kann man sich ähnlich wie eine Virtuelle Maschine (VM) vorstellen, die parallel zum Betriebssystem läuft. Schlimmer noch: Der SMM ist nicht nur für das Betriebssystem und darin laufende Virenscanner unsichtbar, sondern arbeitet auch noch mit den allerhöchsten Zugriffsrechten. Darin ist der SMM einem Hypervisor vergleichbar – bloß, dass ein System Management Interrrupt (SMI), der den Prozessor in den SMM schaltet, noch höhere Priorität besitzt als ein Non-Maskable Interrupt (NMI).

Und während AMD und Intel den Hypervisor immer stärker gegen Angriffe abschotten, etwa mit zusätzlichen Sicherheitsfunktionen in VT-x und kryptografischen Schutzmaßnahmen bis hin zur Verankerung von Schlüsseln im TPM, gab es beim SMM kaum Fortschritte in Bezug auf höhere Sicherheit. Erst für die Haswell-Plattform hat Intel SMM External Call Trap (SECT) eingeführt: Wenn das BIOS SECT aktiviert, kann ein SMI Handler keinen Code mehr im User Memory aufrufen.

Das UEFI Driver Execution Environment (DXE) kommt nur während der Konfigurationsphase beim Systemstart zum Einsatz, damit die Firmware Hardware-Komponenten in Betrieb nehmen kann.

(Bild: Intel)

Für den SMM reserviert die Firmware einen kleinen Teil des physischen RAM, der für das Betriebssystem unsichtbar ist. Im SMRAM läuft vor allem Code, der im (UEFI-)BIOS enthalten ist und den das System für die Konfiguration und die Systemverwaltung benötigt. Dazu gehören auch ACPI-Funktionen wie die Energieverwaltung, also das Umschalten verschiedener P-States – letztlich Taktfrequenzen und Kernspannungen – der CPU und auch der C-States, also der CPU-Schlafmodi.

Wenn aber beispielsweise außer dem Schreibprogramm keine weitere Software CPU-Leistung fordert, schlafen moderne Prozessoren sogar zwischen zwei Tastaturanschlägen kurzzeitig ein, wechseln also den C-State. Dabei schaltet die CPU stets kurz in den SMM – also mehrere Dutzend Mal pro Sekunde. Tatsächlich verbringen moderne Rechner einen durchaus erheblichen Teil ihrer Betriebszeit im SMM, wie Forscher der Uni Portland erläutern.

Die wesentliche Idee des Cr4sh-Hacks ist die Kommunikation zwischen Schad-Code, der unter dem normalen Betriebssystem läuft, und Code, den die CPU im SMM ausführt. So lässt sich die unsichtbar im SMM verankerte Hintertür nutzen, um Informationen abzuzapfen. Als Proof-of-Concept hat Cr4sh Code geschrieben, der vom Betriebssystem aus den SMM ansteuert, um Daten über den RS-232-(COM-)Port auszugeben.

Der Code des UEFI-BIOS liegt in einem SPI-Flash-Chip wie diesem von Winbond.

Zuerst hat Cr4sh einen ohnehin vorhandenen UEFI-Treiber manipuliert, also ihm zusätzliche Funktionen eingepflanzt. Dabei hat er einen Treiber ausgewählt, der sowohl in der Phase der Plattform-Initialisierung durch das UEFI-BIOS läuft, also im Driver Execution Environment (DXE), als auch im System Management Mode. Diesen kombinierten DXE/SMM-Treiber hat er aus der Firmware des Intel DQ77KB extrahiert, erweitert und wieder in die Firmware verpackt. Dann hat er die manipulierte Firmware mit einem USB-SPI-Programmiergerät in den Flash-Chip geschrieben.

Auf der Seite des Betriebssystems hat Cr4sh zunächst versucht, die Daten mit sogennanten SMI-Handlers abzusetzen. Dazu sind aber Administrator-Rechte im Betriebssystem nötig. Doch dann kam er auf die Idee, manipulierte Aufrufe des APIC-Timers zu verwenden: Das klappt auch ohne erhöhte Rechte. Schließlich erklärt Cr4sh, wie man über diese Aufrufe die Backdoor nutzen kann, um eine Shell aufzurufen.

Links zum Thema:

(ciw)