Verwenden von Whitelists zur Verbesserung der Firmware-Sicherheit

Firmware ist in der Welt der Computersicherheitsforschung immer beliebter geworden. Angriffe, die auf Firmware-Ebene ausgeführt werden, können schwer zu erkennen sein und selbst in Bare-Metal-Wiederherstellungsszenarien bestehen bleiben. Diese Art von Hack wurde durch Untersuchungen des HackingTeam und Vault7 Exploits gut dokumentiert.

Glücklicherweise gibt es Methoden zur Erkennung und Abwehr solcher Angriffe. Firmware-basierte Angriffe versuchen normalerweise, im NVRAM gespeicherte Systemfirmwaremodule hinzuzufügen oder zu ändern. Tools, die vom Open-Source-CHIPSEC-Projekt bereitgestellt werden, können verwendet werden, um Hashes dieser Module zu generieren und zu überprüfen, sodass Benutzer nicht autorisierte Änderungen erkennen können.

CHIPSECCHISPEC wurde im März 2014 eingeführt und ist ein Framework zur Analyse der Sicherheit von Hardware, Geräten, Systemfirmware, Low-Level-Schutzmechanismen und der Konfiguration verschiedener Plattformkomponenten auf Plattformebene. Es enthält eine Reihe von Modulen, einschließlich einfacher Tests für Hardwareschutz und korrekte Konfiguration, Tests für Schwachstellen in Firmware- und Plattformkomponenten, Sicherheitsbewertungs- und Fuzzing-Tools für verschiedene Plattformgeräte und -schnittstellen sowie Tools zum Erfassen kritischer Firmware- und Geräteartefakte.

Das Whitelist-Modul (Werkzeuge.uefi.whitelist) verwendet CHIPSEC, um eine Liste der ausführbaren EFI-Dateien aus einem binären Firmware-Image zu extrahieren, und erstellt eine Liste der “erwarteten” ausführbaren Dateien und der entsprechenden Hashes (.JSON-Datei), die später zum Vergleich verwendet werden soll. Die Dokumentation ist als Teil des Modul-Quellcodes auf Github und im CHIPSEC-Handbuch verfügbar.

Der Prozess setzt voraus, dass Sie von einem “bekannten guten Firmware-Image” ausgehen, vorzugsweise einer Produktionsversion der vom Hersteller bereitgestellten Firmware, und dass Sie CHIPSEC verwendet haben, um nach bekannten Problemen zu suchen, bevor Sie versehentlich etwas Böses auf die Whitelist setzen. In diesem Beispiel wird die Open-Source-UEFI-Firmware für den MinnowBoard Turbot (Release 0.97) verwendet, um einen besseren Einblick in den Prozess zu erhalten.

Die folgende CHIPSEC-Befehlszeile erstellt eine Whitelist mit dem Namen efilist.json basierend auf einem “bekannten guten Image” (platform_fw.bin):

python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin

 CHIPSEC in Ubuntu Linux

Wenn Sie diesen Prozess auf die x64-Images “Release” und “Debug” der Firmware MinnowBoard Turbot 0.97 anwenden, werden die folgenden Whitelists erstellt:

  • MNW2MAX1.X64.0097.Modell: D01.1709211100.bin (UEFI x64 Firmware, Debug-Modus) – X64D97_whitelist.json
  • MNW2MAX1.X64.0097.R01.1709211052.bin (UEFI x64 Firmware, Release-Modus) – X64R97_whitelist.json

( übung für den Leser: laden Sie die Firmware-Images herunter, führen Sie CHIPSEC aus und prüfen Sie, ob Ihre Whitelist übereinstimmt)

Es ist wichtig zu beachten, dass die resultierende JSON-Whitelist-Datei nicht nur ein Hash der Binärdatei ist, sondern Hashes der ausführbaren Module des Firmware-Images enthält. CHIPSEC kann einzelne Firmware-Komponenten scannen und katalogisieren, mit denen bestimmte ausführbare Dateien auf die Whitelist oder Blacklist gesetzt werden können.

Whitelists veröffentlichen

Wenn Sie ein Systemhersteller wären, könnten Sie diese Whitelists zur Kundenüberprüfung veröffentlichen. Es ist jedoch am besten, Dateien zu Überprüfungszwecken zu signieren. Um sicherzustellen, dass die von einem Endbenutzer erhaltene Whitelist die offizielle Whitelist ist, kann sie mit GPG mit einer separaten Signatur signiert werden:

gpg –detach-sign <file>

Darüber hinaus sollten Benutzer Zertifikate für einen bekannten Domänennamen für den Systemhersteller authentifizieren, wenn sie über HTTPS bereitgestellt werden. Es ist auch ratsam, dass IT-Organisationen intern generierte Whitelists signieren, um zu verhindern, dass nicht autorisierte Listen in Audits verwendet werden.

Überprüfen von Whitelists

Wenn eine separate Signatur verfügbar ist, kann GPG verwendet werden, um die Whitelist-Datei zu überprüfen:

gpg –verify <file>

Sobald die Authentizität der Whitelist überprüft wurde, muss der Benutzer ein Image der Plattformfirmware mit CHIPSEC aufnehmen. Diese Befehlszeile verwendete den Befehl ‘dump’, um user_fw zu generieren.bin:

python chipsec_util.py spi dump user_fw.bin

Jetzt kann CHIPSEC verwendet werden, um das Plattform-Firmware-Image anhand der zugehörigen Whitelist zu überprüfen. Dieses Beispiel würde anhand des x64-Images “release” für Minnowboard Turbot überprüft 0.97:

python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin

Zu diesem Zeitpunkt gibt CHIPSEC den Status “BESTANDEN” oder “WARNUNG” zurück. Wenn der Test “BESTANDEN” zurückgibt, wurden alle Hashes in der Whitelist gefunden und stimmen mit den erwarteten Werten überein. Wenn der Test “WARNUNG” zurückgibt, war dann etwas anders. Beachten Sie, dass ein “WARNING” -Image nicht sofort auf eine Sicherheitsbedrohung hinweist (z. B.: Der Benutzer hat möglicherweise auf die neueste Firmware des Herstellers aktualisiert), aber es erfordert eine Untersuchung, um sicherzustellen, dass das geänderte Firmware-Image nicht auf einen versuchten Angriff zurückzuführen ist.

Einschränkungen

Mit Tools wie CHIPSEC kann dies die Sicherheit verbessern, aber kein System kann absolut sicher sein, und diese Verfahren können nicht gegen alle möglichen Angriffe verteidigen. Bei der Interpretation von Whitelist-Ergebnissen sind eine Reihe von Einschränkungen zu berücksichtigen:

  • Möglicherweise gibt es angepasste oder proprietäre Image-Packaging-Methoden, die CHIPSEC nicht versteht. Dies kann dazu führen, dass einige Module ausgeschlossen werden, sodass entsprechende Änderungen bei einem Whitelist-Vergleich übersehen werden können.
  • Software, die auf einem bereits kompromittierten System ausgeführt wird, kann getäuscht werden. Wenn ein System bereits kompromittiert ist, erzeugen CHIPSEC und ähnliche Software möglicherweise keine zuverlässigen Indikatoren.

Zusammenfassung

Die Möglichkeit für CHIPSEC, Whitelists zu generieren, bietet eine Methode zur Validierung der Firmware-Lieferkette. Hersteller können diese Tools nutzen, um Benutzer bei der Überprüfung offizieller Firmware-Versionen zu unterstützen, und IT-Administratoren können Whitelists für interne Audits basierend auf vertrauenswürdigen Images erstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.