Intel ME Manufacturing Mode - eine versteckte Bedrohung oder was steckt hinter der Sicherheitsanfälligkeit CVE-2018-4251 im MacBook?



Das Prinzip „ Sicherheit durch Dunkelheit “ wird seit mehreren Jahren von Experten kritisiert. Dies hindert jedoch große Elektronikhersteller unter dem Vorwand des Schutzes des geistigen Eigentums nicht daran, die Unterzeichnung von Geheimhaltungsvereinbarungen zu fordern, um technische Unterlagen zu erhalten. Die Situation verschlechtert sich aufgrund der zunehmenden Komplexität von Mikroschaltungen und der Integration verschiedener proprietärer Firmware in diese. Dies macht es tatsächlich unmöglich, solche Plattformen für unabhängige Forscher zu analysieren, was sowohl normale Benutzer als auch Gerätehersteller gefährdet.

Ein Beispiel ist die Intel Management Engine (Intel ME) -Technologie sowie deren Versionen für Server- (Intel SPS) und mobile (Intel TXE) Plattformen (siehe [5] , [6] für weitere Informationen zu dieser Technologie. In diesem Artikel werden wir darauf eingehen Wie Sie undokumentierte Befehle verwenden (wenn der Begriff "dokumentiert" allgemein für Intel ME gilt), können Sie den SPI-Flash-Speicher überschreiben und das schlimmste Szenario implementieren - die lokale Ausnutzung einer Sicherheitsanfälligkeit in ME (INTEL-SA-00086). Die Wurzel dieses Problems war der undokumentierte Betriebsmodus von Intel ME - Herstellungsmodus.

Was ist der Herstellungsmodus?


Intel ME Manufacturing Mode - Servicemodus zum Konfigurieren, Konfigurieren und Testen der endgültigen Plattform in der Produktionsphase; Es muss ausgeschaltet sein, bevor das Gerät in den Verkauf geht und an den Benutzer versendet wird. Weder dieser Modus noch seine potenziellen Risiken sind in der öffentlichen Dokumentation von Intel beschrieben. Ein gewöhnlicher Benutzer kann es nicht selbst ausschalten, da das Dienstprogramm zur Verwaltung über das Intel ME System Tools-Paket nicht offiziell verfügbar ist. Beachten Sie, dass kein Softwareschutz den Benutzer schützen kann, wenn dieser Modus aktiviert ist, oder ihn zumindest darüber benachrichtigen kann. Selbst das Chipsec-Dienstprogramm [2] , das speziell zur Erkennung von Chipsatz- und Prozessorkonfigurationsfehlern auf UEFI-Firmware-Ebene entwickelt wurde (insbesondere falsche Konfiguration der Zugriffsrechte auf SPI-Flash-Regionen), weiß nichts über den Intel-Fertigungsmodus.

In diesem Modus können Sie kritische Plattformparameter einstellen, die im einmaligen Schreibspeicher (FUSES) gespeichert sind. Ein Beispiel für solche Parameter, die in FUSES „verkabelt“ sind, sind BootGuard-Parameter (Modus, Richtlinien, Prüfsumme für Schlüssel für digitale Signaturen für ACM- und UEFI-Module). Einige von ihnen heißen FPF (Field Programmable Fuses). Die Liste der FPFs, die in FUSES geschrieben werden können (unvollständig, tatsächlich können einige FPFs nicht direkt festgelegt werden), kann über das Dienstprogramm FPT (Flash Programming Tool) aus dem Intel ME System Tools-Paket abgerufen werden.



Abb. 1: Das Ergebnis der Option –FPFs des FPT-Dienstprogramms

Es ist zu beachten, dass FPFs nur einen Teil des gesamten FUSE-Arrays ausmachen und der größte Teil dieses Speichers von Intel selbst zum Speichern vieler Plattformparameter verwendet wird. Ein Teil des Speicherplatzes dieses Arrays wird beispielsweise als IP-Sicherungen bezeichnet und dient zum Speichern der Konfigurationsparameter einzelner Hardwaremodule (Intelligent Property). Das spezielle DFx-Aggregator-Gerät speichert in FUSE ein Zeichen dafür, ob die Plattform seriell oder testweise ist.

Zusätzlich zu FPF kann der Gerätehersteller im Fertigungsmodus Intel ME-Firmware-Parameter einstellen, die im internen Firmware-Dateisystem MFS auf SPI-Flash-Medien gespeichert sind. Diese Parameter können im Falle einer Neuprogrammierung des SPI-Blitzes geändert werden. Sie werden als CVARs (Configurable NVARs, Named Variables) bezeichnet.

Für die Installation von CVARs ist das Intel ME-Firmware-Modul mca_server verantwortlich. MCA ist die Abkürzung für Manufacture-Line Configuration Architecture, die gebräuchliche Bezeichnung für den Plattformkonfigurationsprozess während der Fertigungsphase. CVARs können wie FPFs mithilfe von FPTs definiert und gelesen werden.



Abbildung 2. Liste der vom FPT-Dienstprogramm für die Broxton P-Plattform ausgegebenen CVARs

Die Liste der CVARs variiert je nach Plattform und Intel ME-Firmware-Version. Bei Chipsätzen, die die Intel AMT-Technologie unterstützen, ist eine dieser Variablen das Kennwort für die Eingabe der MEBx (ME BIOS Extension).

Die Installation von FPFs und fast allen CVARs-Variablen ist nur möglich, wenn die Intel ME-Firmware im Fertigungsmodus ausgeführt wird. Der Installationsprozess der FPFs selbst ist in zwei Phasen unterteilt: Festlegen von FPFs (die im temporären Speicher gespeichert sind) und Übertragen von FPFs auf ein Array von Sicherungen. Gleichzeitig ist die erste Stufe nur im Manufitting-Modus möglich, und das eigentliche „Brennen“ erfolgt automatisch nach Verlassen des Fertigungsmodus, wenn der Hersteller während des Betriebs in diesem Modus FPF-Werte eingestellt hat und gleichzeitig der entsprechende Bereich nie im Fusionsarray aufgezeichnet wurde. Wenn das System im Fertigungsmodus arbeitet, werden die FPF-Variablen daher höchstwahrscheinlich nicht initialisiert.

Ein Zeichen für die Deaktivierung des Fertigungsmodus ist in der Datei / home / mca / eom auf MFS gespeichert. Wenn Sie also SPI-Flash mit Firmware mit dem Basisdateisystem neu schreiben (weitere Informationen siehe [9] ), kann die Plattform im Fertigungsmodus wieder funktionieren (FUSES können jedoch nicht überschrieben werden). .

Öffentlicher OEM-Schlüssel


Das Verfahren zum Konfigurieren von Intel-Plattformen ist daher recht komplex und besteht aus mehreren Schritten. Wenn der Gerätehersteller die Reihenfolge verletzt oder geändert hat, ist die Plattform einem ernsthaften Risiko ausgesetzt. Selbst wenn der Herstellungsmodus abgeschlossen wäre, könnte der Hersteller keine FUSES schreiben, was es einem Angreifer ermöglichen würde, dies für ihn zu tun. Er notiert seine Werte anstelle des Schlüssels zum Signieren des Bootcodes von BootGuard (ACM) - und UEFI-Modulen und erlaubt der Plattform, nur mit ihrem Schadcode zu booten laufend. Dies führt zu einem unwiederbringlichen Verlust an Ausrüstung, da der betrügerische Schlüssel für immer im permanenten Speicher registriert wird (Details zu diesem Angriff finden Sie in der Studie zum Schutz von Rootkits: Intel BootGuard von Alexander Ermolov [8] ).

In neuen Systemen (Apollo Lake, Gemini Lake, Cannon Point) in FPF wird nicht nur der Schlüssel für BootGuard gespeichert, sondern auch der öffentliche OEM-Schlüssel (oder besser SHA-256 vom öffentlichen RSA-OEM-Schlüssel), auf dem mehrere ME-Schutzmechanismen basieren. In einem speziellen SPI-Flash-Bereich namens Signed Master Image Profile (SMIP) werden beispielsweise die herstellerspezifischen PCH-Bänder (PCH-Hardwarekonfiguration) gespeichert. Dieser Abschnitt ist mit einem Schlüssel signiert, SHA-256, von dem aus eine spezielle Datei auf SPI-Flash abgelegt wird. Diese Datei heißt oem.key und befindet sich im Abschnitt FTPR. Sie enthält verschiedene öffentliche Schlüssel, die vom OEM zum Signieren einer Vielzahl von Daten bereitgestellt werden. Hier ist die vollständige Liste der Datensätze, die vom Hersteller jeweils auf einem eindeutigen Schlüssel für die Cannon Point-Plattform signiert sind:



Abbildung 3. Liste der signierten OEM-CNP-Plattformdaten

Die Datei oem.key selbst wird vom gemeinsam genutzten OEM-Stammschlüssel signiert, dessen Hash-Menge in FPFs aufgezeichnet werden muss.



Abbildung 4. OEM-Signierung

Schreibsperre im ME-Bereich umgehen


Bis vor kurzem (vor Intel Apollo Lake) befand sich die Intel ME-Firmware in einer separaten SPI-Region, die über unabhängige Zugriffsrechte für CPU, GBE und ME verfügte. Mit der korrekten Konfiguration der Zugriffsattribute seitens der CPU (Hauptsystem) war es daher weder möglich, ME-Firmware zu lesen noch zu schreiben. Moderne Intel-Chipsatz-SPI-Controller verfügen jedoch über einen speziellen Master Grant-Mechanismus. Diese Technologie weist jedem SPI-Master einen genau definierten Teil des SPI-Flashs zu. Dieser Master besitzt seine Region, unabhängig von den im SPI-Deskriptor angegebenen Zugriffsrechten. Jeder Meister hat die Möglichkeit, einem anderen Meister nach Belieben Zugang (zum Lesen oder Schreiben) zu seiner (und nur zu seiner) Region zu gewähren.



Abbildung 5. Intel-Dokumentationsauszug, der den SPI Master Grant beschreibt

Selbst wenn der Host ein Verbot des Zugriffs des Hosts auf die ME SPI-Region festlegt, kann ME dennoch Zugriff auf seine Daten gewähren. Unserer Meinung nach wurde dies durchgeführt, um die Aktualisierung der Intel ME-Firmware unter Umgehung des Standardalgorithmus zu ermöglichen.

Host ME Region Flash Protection Override


In der Intel ME-Firmware ist ein spezieller HECI-Befehl implementiert, mit dem Sie den Schreibzugriff von der CPU auf die SPI ME-Region öffnen können. Es heißt HMR FPO (Host ME Region Flash Protection Override). In einer unserer früheren Studien haben wir diesen Befehl ausführlich beschrieben [5]. Sie hat mehrere Funktionen.

Nach Erhalt des HMR-FPO-Befehls öffnet die Firmware erst nach einem Neustart den Zugriff auf ihre Region. Das ME selbst bietet auch Schutz: Der Befehl wird nur während der Ausführungsperiode des UEFI-BIOS bis zum sogenannten EOP-Moment (End of Post) akzeptiert. EOP ist ein weiterer HECI-Befehl, den das UEFI-BIOS sendet, bevor die Steuerung an das Betriebssystem (ExitBootServices) übertragen wird. In einigen BIOS-Setups finden Sie eine Option, mit der der Befehl HMRFPO an das EOP gesendet werden kann.



Abbildung 6. Öffnen der ME-Region im BIOS

Nach dem Empfang des EOP ignoriert die ME-Firmware das HMR-FPO und gibt den entsprechenden Status zurück. Dies geschieht jedoch erst nach Abschluss des Fertigungsmodus . Daher akzeptiert die ME-Firmware im Fertigungsmodus jederzeit HMR-FPO , unabhängig vom Ende der Veröffentlichung . Wenn der Hersteller den Herstellungsmodus nicht geschlossen hat, kann ein Angreifer (formal erfordert dies Administratorrechte, aber selbst der Betriebssystemkern kann die ME-Firmware zunächst nicht überschreiben) die ME-Firmware jederzeit ändern. In diesem Stadium kann der Angreifer beispielsweise das ME-Image überschreiben, um die Sicherheitsanfälligkeit INTEL-SA-00086 auszunutzen. Dies macht einen Neustart erforderlich, ist jedoch auf fast allen Plattformen außer dem MacBook kein Hindernis. Auf Apple-Computern gibt es eine zusätzliche Überprüfung in UEFI, die zum Zeitpunkt des Starts durchgeführt wird und den Start des Systems blockiert, wenn die ME-Region mit HMRFPO geöffnet wird. Wie wir später zeigen werden, wird dieser Schutzmechanismus jedoch überwunden, wenn die ME-Firmware im Herstellungsmodus arbeitet.

Neustart von ME ohne Neustart der Haupt-CPU


In modernen Computern gibt es mehrere Optionen zum Neustarten der Plattform. Darunter sind dokumentiert: globaler Neustart und Neustart nur der Haupt-CPU (ohne ME neu zu starten). Wenn es jedoch eine Möglichkeit gibt, die ME neu zu starten, ohne die Haupt-CPU neu zu starten (nachdem auch der HMRFPO-Befehl ausgeführt wurde), wird der Zugriff auf die Region geöffnet und das Hauptsystem funktioniert weiterhin.



Abbildung 7. Starten Sie die Typsteuerung neu

Bei der Untersuchung der internen ME-Firmware-Module haben wir festgestellt, dass es einen HECI-Befehl ( „80 06 00 07 00 00 0b 00 00 00 03 00“ , weitere Einzelheiten zum Senden von Befehlen siehe [ 5 ]) gibt, der nur neu gestartet werden kann (!). Der Intel ME-Kernel, die im Fertigungsmodus auch nach EOP jederzeit gesendet werden kann.



Abbildung 8. Disassembler-Liste einer Funktion, die ME HECI-Reload-Befehle verarbeitet

Somit öffnet der Angreifer, nachdem er diese beiden HECI-Befehle gesendet hat, die ME-Region und kann dort alle Daten schreiben, ohne die Plattform neu zu starten . In diesem Fall spielt es keine Rolle, was der SPI-Deskriptor enthält, dh die korrekten Schutzattribute der SPI-Regionen schützen die ME-Firmware nicht vor Änderungen, wenn das System im Fertigungsmodus arbeitet.

Fallstudie: Sicherheitsanfälligkeit CVE-2018-4251


Wir haben mehrere Plattformen verschiedener Hersteller analysiert. Unter ihnen waren Lenovo Laptops und Apple MacBook Pr®. Bei den untersuchten Computern aus der Yoga und ThinkPad-Reihe fanden wir keine Probleme im Zusammenhang mit dem Herstellungsmodus, aber Apple-Laptops, die auf Intel-Chipsätzen basieren, arbeiten im Herstellungsmodus . Nach dem Übertragen dieser Informationen an Apple wurde dieser Fehler (CVE-2018-4251) im MacOS High Sierra 10.13.5-Betriebssystemupdate behoben.

Lokaler Betrieb INTEL-SA-00086


Mit der Sicherheitsanfälligkeit CVE-2018-4251 konnte ein Angreifer also alte Versionen der ME-Firmware schreiben, die die Sicherheitsanfälligkeit INTEL-SA-00086 enthielt, und gleichzeitig benötigte er weder einen SPI-Programmierer noch Zugriff auf den HDA_SDO-Jumper (d. H. Physischen Zugriff). Somit wird der gefährlichste - lokale - Vektor dieser Sicherheitsanfälligkeit erkannt (die Ausführung von beliebigem Code in der ME-Firmware). Es ist bemerkenswert, dass Intel in den Erläuterungen zum INTEL-SA-00086-Sicherheitsbulletin den offenen Fertigungsmodus nicht als Mittel zur lokalen Ausnutzung dieser Sicherheitsanfälligkeit ohne physischen Zugriff erwähnt, sondern nur, dass eine lokale Ausnutzung nur möglich ist, wenn der Zugriff auf die SPI-Regionen falsch konfiguriert ist das ist nicht wahr Um die Benutzer zu schützen, haben wir uns entschlossen zu beschreiben, wie die Verfügbarkeit des Fertigungsmodus überprüft und deaktiviert wird.

Wie Sie sich schützen können


Das Paket von Systemdienstprogrammen für Entwickler von Geräten, die auf Chipsätzen und Intel-Prozessoren basieren (Intel System Tools), enthält das MEInfo-Dienstprogramm (TXEInfo, SPSInfo für mobile bzw. Serverplattformen), mit dem erweiterte Diagnoseinformationen zum aktuellen Status der Management Engine-Firmware und erhalten werden die gesamte Plattform als Ganzes. Wir haben diesen Nutzen in einer unserer früheren Studien zur Deaktivierung von ME und des undokumentierten HAP-Modus (High Assurance Platform) demonstriert [ 6 ]. Dieses Dienstprogramm, das mit dem Flag –FWSTS aufgerufen wird, bietet eine detaillierte Beschreibung der HECI-Statusregister und meldet den Status des Fertigungsmodus (das 4. Bit des FWSTS-Statusregisters wird gesetzt, um anzuzeigen, dass der Fertigungsmodus aktiv ist).



Abbildung 9. Beispielausgabe des Dienstprogramms MEInfo

Wir haben auch ein Programm [ 7 ] entwickelt, mit dem Sie den Status des Fertigungsmodus überprüfen können, wenn der Benutzer aus irgendeinem Grund keinen Zugriff auf Intel ME System Tools hat.



Abbildung 10. Ein Beispiel für das mmdetect-Skript

Es stellt sich die Frage, wie der Fertigungsmodus unabhängig abgeschlossen werden kann, wenn sich herausstellt, dass der Hersteller dies nicht getan hat. Um den Fertigungsmodus abzuschließen, verfügt das FPT-Dienstprogramm über die spezielle Option –CLOSEMNF, mit der Sie neben dem Hauptzweck auch die empfohlenen Zugriffsrechte für die SPI-Flash-Regionen im Deskriptor festlegen können.



Abbildung 11. Ergebnis des FTP-Dienstprogramms mit der Option –CLOSEMNF

In diesem Beispiel haben wir den NO-Parameter der Option –CLOSEMNF verwendet, um die Plattform nicht neu zu starten. Dies wird standardmäßig unmittelbar nach Abschluss des Fertigungsmodus ausgeführt.

Fazit


Unsere Untersuchungen zeigen, dass das Problem mit dem Intel ME-Firmware-Herstellungsmodus besteht und selbst große Hersteller wie Apple Fehler bei der Konfiguration von Intel-Plattformen machen können. Am schlimmsten ist, dass es zu diesem Thema keine öffentlichen Informationen gibt und den Endbenutzern nicht einmal ein derart ernstes Problem bekannt ist, das zum Verlust vertraulicher Informationen, zur Entstehung nicht entfernbarer Rootkits und zur unwiderruflichen Stilllegung von Geräten führen kann.

Darüber hinaus besteht der Verdacht, dass die Möglichkeit, ME neu zu starten, ohne die Haupt-CPU neu zu starten, aufgrund der nicht synchronen BIOS / UEFI- und ME-Zustände zu anderen Sicherheitsproblemen führen kann.

Autoren: Mark Ermolov und Maxim Goryachiy

[1] Kritisches Firmware-Update der Intel Management Engine, Intel-SA-00086
[2] GitHub - Chipsec / Chipsec: Framework zur Bewertung der Plattformsicherheit
[4] Schnelle, sichere und flexible OpenSource-Firmware, Coreboot
[5] Mark Ermolov, Maxim Goryachy, Wie Sie der alleinige Eigentümer Ihres PCs werden, PHDays VI, 2016
[6] Mark Ermolov, Maxim Goryachy, Deaktivieren von Intel ME 11 über den undokumentierten Modus, Blog von Positive Technologies
[7] Tools zur Erkennung des Intel ME-Fertigungsmodus
[8] Alexander Ermolov, Schutz von Rootkits: Intel BootGuard
[9] Dmitry Sklyarov, Intel ME: Flash-Dateisystem. Erklärt

Source: https://habr.com/ru/post/de425105/


All Articles