Warum offene Firmware für die Sicherheit wichtig ist

Kürzlich habe ich bei GoTo Chicago einen Vortrag zu diesem Thema gehalten und dachte, es wäre schön, einen Artikel mit Schlussfolgerungen zu schreiben. In diesem Beitrag geht es darum, warum Open Source-Firmware für die Sicherheit wichtig ist.

Berechtigungsstufen


In einem typischen Stapel haben Sie unterschiedliche Berechtigungsstufen.

  • Ring 3. Anwendungen: Mindestberechtigungen, mit Ausnahme der Sandbox im Benutzerbereich, die noch eingeschränkter ist.
  • Ring 0. Kernel: Der Kernel des Betriebssystems. Bei einem Open Source-Betriebssystem wird der Code angezeigt.
  • Ring −1. Hypervisor: Virtual Machine Monitoring (VMM) erstellt und führt virtuelle Maschinen aus. In Open Source-Hypervisoren wie Xen, KVM, bhyve und anderen wird der Code angezeigt.
  • Ring −2. System Management Mode (SMM), UEFI-Kern: proprietärer Code, mehr dazu weiter unten.
  • Ring −3. Control Engine: proprietärer Code, mehr dazu weiter unten.

Negative Ringe zeigen Ebenen mit Berechtigungen größer als Null an.

Aus dem Vorstehenden geht hervor, dass wir in den Ringen von -1 bis 3 die Möglichkeit haben, Open-Source-Software zu verwenden, um sie weitgehend zu sehen und zu steuern. Für Level unter dem -1-Ring haben wir weniger Kontrolle, aber die Situation verbessert sich dank der Open-Source-Firmware-Entwicklung und der Community.

Dies ist eine widersprüchliche Situation: Der geschlossenste Code hat die meisten Berechtigungen in unserem System. Dieses Paradoxon sollte Open Source-Firmware beheben.

Ring −2. SMM, UEFI-Kern


Dieser Ring steuert alle CPU-Ressourcen.

Der System Management Mode (SMM) ist für den Rest des darüber liegenden Stapels nicht sichtbar. Es hat den halben Kern. Ursprünglich für die Energieverwaltung und die Steuerung der Systemhardware verwendet. Es enthält viel proprietären Code und ist der Ort, an dem Lieferanten neue proprietäre Funktionen hinzufügen. Es behandelt Systemereignisse wie Speicher- oder Chipsatzfehler sowie eine Reihe anderer Logik.

Der UEFI-Kern ist mit Millionen von Codezeilen äußerst komplex. UEFI-Anwendungen sind nach dem Download aktiv. Der Kern wurde nach dem Prinzip "Sicherheit durch Dunkelheit" entwickelt. Die Spezifikation ist absolut verrückt, wenn Sie herumwühlen möchten.

Ring −3. Motor steuern


Der privilegierteste Ring. Bei Intel (x86) ist dies die Intel Management Engine. Dieses System kann Knoten leise einschalten und Festplatten überschreiben, der Kernel startet Minix 3 sowie einen Webserver und den gesamten Netzwerkstapel. Es stellt sich heraus, dass Minix dank dessen das beliebteste Desktop-Betriebssystem ist. Die Steuermaschine hat viele Funktionen. Ich werde wahrscheinlich einen ganzen Tag brauchen, um sie aufzulisten. Wenn Sie möchten, gibt es viele Ressourcen für eine detailliertere Studie.

Zwischen Ring −2 und Ring −3 in unserem Stack befinden sich mindestens zweieinhalb weitere Kernel sowie eine Reihe von proprietären und unnötigen Komplexitäten. Jeder dieser Kerne verfügt über eigene Netzwerkstapel und Webserver. Der Code kann sich selbst ändern und nach dem Ausschalten und erneuten Installieren bestehen bleiben. Wir haben nur sehr wenige Informationen darüber, was der Code in diesen Ringen tatsächlich tut, was schrecklich ist, da diese Ringe die meisten Privilegien haben.

Sie alle haben Heldentaten


Es sollte niemanden überraschen, dass die Ringe −2 und −3 Schwachstellen aufweisen. Wenn sie gefunden werden, ist es wirklich schrecklich. Nur als Beispiel, obwohl Sie selbst nach anderen Beispielen suchen können, gab es einen Fehler im Intel Management Engine-Webserver, von dem der Entwickler sieben Jahre lang nichts gewusst hatte .

Wie kann die Situation verbessert werden?


NERF: Nicht erweiterbare reduzierte Firmware


NERF ist das, woran die Community arbeitet. Ziel ist es, die Firmware weniger schädlich zu machen und ihre Aktionen sichtbarer zu machen. Sie bemühen sich, alle Komponenten der Laufzeit zu entfernen, aber dies ist in der Intel Management Engine immer noch schwierig. Sie können jedoch den Webserver und den IP-Stack von dort entfernen. Entwickler möchten auch den UEFI-IP-Stack und andere Treiber entfernen und die Intel Management / UEFI-Selbstfirmware-Funktion entfernen.

me_cleaner


Projekt zum Reinigen der Intel Management Engine auf die minimal erforderliche Funktionalität ( auf GitHub ).

U-Boot und Coreboot


u-boot und coreboot sind Open Source Firmware. Sie übernehmen die Chip-Initialisierung und den DRAM. Chromebooks verwenden beide, Coreboot auf x86 und U-Boot auf dem Rest. Dies ist einer der Schritte, die sie auf Laden prüfen .

Die Designphilosophie von Coreboot besteht darin, „das für die Verwendung der Hardware erforderliche Minimum festzulegen und die Steuerung dann auf ein anderes Programm zu übertragen, das als Nutzlast bezeichnet wird . In diesem Fall handelt es sich um Linuxboot.

Linuxboot


Linuxboot verwaltet Gerätetreiber und den Netzwerkstapel und bietet eine Multitasking-Umgebung für mehrere Benutzer. Es basiert auf Linux, sodass ein einzelner Kern auf mehreren Boards ausgeführt werden kann. Linux wurde bereits ausreichend getestet und viele Leute folgen dem Code, da er ziemlich weit verbreitet ist. Es ist besser, einen offenen Kern mit einer großen Anzahl von "Controllern" zu verwenden als zweieinhalb andere Kernel, unterschiedlich und geschlossen. Dies bedeutet, dass wir die Angriffsfläche aufgrund weniger Codevarianten reduzieren und uns auf Open Source Code verlassen. Linux verbessert die Boot-Zuverlässigkeit, indem schlecht getestete Firmware-Treiber durch erweiterte Linux-Treiber ersetzt werden.

Mit dem Kernel verfügen wir bereits über Firmware-Tools: Entwickler können vertraute Tools verwenden, wenn sie Logik schreiben müssen, um Signaturen zu überprüfen, eine Festplatte zu verschlüsseln usw. All dies in einer modernen, getesteten, unterstützten und leicht lesbaren Sprache.

U-Wurzel


u-root ist das Golang Userspace Toolkit und der Bootloader. Es wird als initramfs für den Linux-Kernel in Linuxboot verwendet.

Sie sagen, dass der NERF-Stack die Startzeit um das 20-fache reduziert hat. Aber dies ist ein Sicherheitsartikel, also kehren wir zur Sicherheit zurück ...

Der NERF-Stack verbessert die Sichtbarkeit vieler Komponenten, die zuvor vollständig proprietär waren. Geräte haben jedoch noch viele andere Firmware.

Was ist mit anderer Firmware?


Wir benötigen eine offene Firmware für den Network Interface Controller (NIC), die Solid State Drives (SSD) und den Basic Management Controller (BMC).

Das Open Compute-Projekt arbeitet an der NIC 3.0- Firmware. Es wird interessant sein zu sehen, was sie tun.

Es gibt sowohl OpenBMC als auch u-bmc für BMC . Ich habe in einem früheren Artikel ein wenig darüber geschrieben.

Wir benötigen alle Open Source-Firmware, um die vollständige Sichtbarkeit auf dem Stack zu gewährleisten und den Status der Software auf dem Computer zu überprüfen.

Wurzeln des Vertrauens


Der Zweck des Vertrauensstamms besteht darin, zu überprüfen, ob auf jeder Komponente des Geräts die entsprechende Software installiert ist. Sie können sicherstellen, dass das Gerät nicht gehackt wird. Da wir jetzt in vielen Bereichen der Ausrüstung viel geschlossenen Quellcode haben, ist dies schwierig. Woher wissen Sie wirklich, dass die Komponenten-Firmware keine Schwachstellen oder Hintertüren enthält? Auf keinen Fall. Open Source ist eine andere Sache.

Es scheint, dass jede Cloud und jeder Anbieter ihre eigene Vertrauenswurzel bietet. Microsoft hat Cerberus , Google hat Titan , Amazon hat Nitro . Sie scheinen explizites Vertrauen in den proprietären Code zu implizieren (Code, den wir nicht sehen). Dies hinterlässt ein seltsames Gefühl. Wäre es nicht besser, vollständig Open Source zu verwenden? Dann können wir ohne Zweifel überprüfen, ob der aus dem Quellcode kompilierte Code derselbe ist, der auf dem Gerät funktioniert, wo immer die Firmware installiert ist. Dann können wir überprüfen, ob sich die Maschine im richtigen Zustand befindet, ohne daran zu zweifeln, dass sie anfällig ist oder eine Hintertür hat.

Sie fragen sich daher, welche kleinen Cloud-Anbieter wie DigitalOcean oder Packet als Vertrauensbasis dienen. Ich habe auf Twitter danach gefragt, aber keine anständige Antwort bekommen ...


Es gibt einen großartigen Vortrag von Paul McMillan und Matt King über die Gerätesicherheit beim Skalieren . Die Autoren beschreiben ausführlich, wie die Hardware geschützt und gleichzeitig den Kunden Zugriff darauf gewährt wird. Wenn sie Geräte von Kunden zurückerhalten, müssen sie konsequent und zuverlässig sicherstellen, dass alles unverändert bleibt und keine Überraschungen in einer Komponente verborgen sind.

Alle Cloud-Anbieter müssen sicherstellen, dass die Geräte nicht kompromittiert werden, nachdem der Client Berechnungen durchgeführt hat.

Fehlertoleranz der Plattform-Firmware


Chiphersteller scheinen jedoch ein besonderes Aussehen zu haben. Intel verfügt über Ausfallsicherheit für Plattform-Firmware und Lattice über Ausfallsicherheit für Plattform-Firmware . Sie scheinen sich mehr auf die NIST-Richtlinien für die Fehlertoleranz der Plattform-Firmware zu konzentrieren .

Ich habe versucht, im Internet zu fragen, wer es verwendet hat, aber nur wenige Antworten erhalten. Wenn Sie also Geräte mit Platform Firmware Resiliency-Technologie verwenden, lassen Sie es mich wissen!


Aus dem OCP-Vortrag über Innovationen in der Intel-Firmware geht hervor, dass Intels Platform Firmware Resilience (PFR) und Cerberus Hand in Hand gehen. Intel verwendet PFR, um die Cerberus-Zertifizierungsprinzipien zu implementieren. Danke @msw für die Klarstellung.

Es wäre schön, die Anzahl der Werkzeuge zu reduzieren, um diese Aufgabe zu erledigen. Ich würde auch gerne den Quellcode sehen, um selbst zu sehen, dass er sicher ist.

Wie man hilft


Ich hoffe, Sie haben eine Vorstellung davon, welche Projekte für die Entwicklung von Open Source-Firmware existieren und wie wichtig diese ist! Wenn Sie helfen möchten, sagen Sie es bitte anderen. Versuchen Sie es mit Open Source-Plattformen. Chromebooks sind ein gutes Beispiel, ebenso wie Purism- Computer. Sie können Ihre Lieferanten fragen, was sie tun, um Open Source-Firmware freizugeben und die Sicherheit von Geräten mit Vertrauen zu gewährleisten. Glücklicher Nerd! :) :)

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


All Articles