Der italienische Programmierer Nicola Corna hat das Tool me_cleaner entwickelt, das die proprietäre und verschlüsselte (siehe Update 2) Firmware von Intels Management Engine (ME) aus BIOS-Images entfernt. Es handelt sich dabei letztlich um ein Python-Skript, welches einige der sogenannten Firmware-Partitionen des modularen (UEFI-)BIOS schlichtweg löscht oder überschreibt. Anschließend passt me_cleaner die Firmware Partition Table (FPT) des BIOS-Images an, damit das jeweilige System den BIOS-Code überhaupt laden und damit wieder booten kann.

Ziel der Aktion ist es, die Ausführung der ME zu verhindern oder zumindest ihre Kommunikation und Schnittstellen zu blockieren, etwa indem der Netzwerk-Stack aus dem BIOS-Code entfernt wird. Es gibt nämlich erhebliche Bedenken gegen den undokumentieren Funktionsumfang der ME, die im Prinzip in der Lage ist, auf sämtliche Daten eines laufenden Rechners zuzugreifen.

Funktionsbeschneidung

Nicola Corna weist ausdrücklich darauf hin, dass der me_cleaner zum Totalausfall eines damit behandelten Rechners führen kann und auch sonst viele unbekannte Auswirkungen auf den PC-Betrieb möglich sind. So liegt beispielsweise auf der Hand, dass die ME-Firmware ohne Netzwerk-Stack keine Fernwartung via Ethernet mehr bieten kann.

[Update 2:] Ursprünglich stand hier, dass das Entfernen der ME-Netzwerk-Firmware auch via Ethernet per PXE blockiert, aber dieser Boot-Code hat nichts mit der ME-Firmware zu tun.

me_cleaner entfernt aber wohl auch die Basis des Protected Audio/Video Path (PAVP), was auf Windows-Rechnern DRM-Systeme aushebeln dürfte, die kommerzielle Streaming-Dienste wie Netflix oder Amazon Prime Video nutzen. Schließlich dürften auch Trusted Platform Modules nach fTPM 2.0 nicht mehr funktionieren – daran hängt möglicherweise wiederum Microsoft BitLocker. Doch für Windows-Systeme mit proprietärem Code ist die Abschaltung der ME ohnehin wenig sinnvoll.

Das BIOS-Image mit dem undokumentierten ME-Code-"Blob" ist bei Weitem nicht die einzige proprietäre Firmware in PCs.

Da der volle Funktionsumfang der ME undokumentiert ist, sind aber auch Auswirkungen auf Leistungsaufnahme und Stabilität des Rechners möglich – und die treten auch auf, wie Rückmeldungen mutiger Bastler auf der GITHub-Seite des Projekts me_cleaner belegen.

Externes Flashen

Zum Einsatz des me_cleaner ist einiges Vorwissen und spezielle Hardware nötig: Mit einem externen Programmieradapter für SPI-(NOR-)Flash-Chips muss man nämlich zunächst den BIOS-Code beziehungsweise das BIOS-Image aus dem Speicherchip des (Notebook-)Mainboards extrahieren. Dann gilt es, eine Kopie des BIOS-Image auf einem anderen System mit dem me_cleaner zu bearbeiten, um es dann wieder mit dem Programmieradapter in den Chip zu schreiben.

[Update:] Selbstverständlich kann man das BIOS-Image etwa auch aus einer passenden BIOS-Update-Datei für den jeweiligen Computer extrahieren, mit me_cleaner bearbeiten und dann mit einem Flash-Tool unter DOS, Linux oder Windows in den Chip schreiben beziehungsweise mit den in vielen BIOS-Setups eingebauten Flash-Tools. Doch manches herstellerspezifische Flash-Tool prüft das BIOS-Image vor dem Schreiben, universelle Tools funktionieren wiederum nicht auf jedem System. Und wenn der Rechner mit dem mit me_cleaner bearbeitete BIOS-Image nicht mehr bootet, braucht man doch wieder ein externes Programmiergerät.

Fraglicher Erfolg

Ganz offen erklärt Nicola Corna, dass es selbstverständlich keinen Beweis dafür geben kann, dass der me_cleaner die Funktion der ME sicher unterbindet. Er entwickelt me_cleaner auf der Basis neuer Erkenntnisse von Tüftlern wie Trammell Hudson und Igor Skochinsky weiter und hofft auch auf Rückmeldungen freiwilliger Tester. Auf Systemen mit Intel Boot Guard funktioniert me_cleaner nicht, weil sie die Ausführung unsignierter Firmware verhindern.

Die ME besteht aus einem Mikrocontroller, der Bestandteil des Chipsatzes oder CPU-SoCs ist, sowie der komprimierten und verschlüsselten ME-Firmware, die mit im BIOS-Code-Image steckt. (Bild: Intel)

Letztlich ist es an Intel, endlich die Funktion und den Code der ME offenzulegen, um das angeknackste Vertrauen in die eigenen Prozessoren und Plattformen zu stärken.

[Update 3:] Die ME-Firmare ist signiert und komprimiert, aber nicht im eigentlichen Sinne verschlüsselt: Für Teile des Codes nutzt Intel herkömmliche LZMA-Kompression, für andere eine proprietäre (Huffman-)Kodierung, bei der das zugehörige Wörterbuch aber im Chipsatz gespeichert ist. Seit April 2015 gibt es dafür einen Dekomprimierer für ME-Firmware bis zur Haswell-Generation (ME-Versionen 6 bis 10). Mit Skylake (ME-Version 11) hat Intel bei der ME auf einen anderen Mikrocontroller umgesattelt als den zuvor verwendeten ARC-Kern.

Links zum Thema:

(ciw)