aus dem Netzwerk Insider März 2024
Vor wenigen Tagen wurde eine Sicherheitslücke in einem weit verbreiteten Bootloader für Linux bekannt. Diese lässt sich interessanterweise auch remote ausnutzen. Aber Moment mal: Wofür braucht ein Bootloader einen Netzzugriff?
In diesem Standpunkt sollen kurz der Bootloader, sein Ursprung und die Funktionen dargestellt werden, die zu der Sicherheitslücke geführt haben, sowie die Sicherheitslücke selbst.
Der Linux-Bootloader „shim“
Schon seit einiger Zeit benötigt Linux ein Stück zusätzliche Software, um auf aktuellen Systemen starten zu können. Dies betrifft insbesondere physische Systeme mit Secure Boot. Dazu kommt bei vielen verbreiteten Distributionen das Werkzeug „shim“ zum Einsatz, mit dem ein Linux gestartet werden kann, auch ohne sich groß um Secure Boot Gedanken machen zu müssen.
Doch was hat es mit Secure Boot auf sich? Es handelt sich dabei um eine Technik, die nur das Starten von als vertrauenswürdig eingestuften Betriebssystemen erlaubt. Wie aber weiß die Hardware, dass das Betriebssystem vertrauenswürdig ist? Über hinterlegte Signaturen im UEFI des Motherboards. Für weit verbreitete Betriebssysteme, allen voran die (mehr oder weniger) aktuellen Versionen von Microsoft Windows, ist das relativ einfach. Es gibt einen Hersteller, der den Bootloader signiert, und diese Signatur kann einfach überprüft werden.
Bei weniger verbreiteten und besonders anpassbaren Betriebssystemen, hier in Form von Linux, ist dies schwieriger. Ja, man kann eigene Signaturen hinzufügen, doch das ist kompliziert und fehleranfällig. Das würde in letzter Instanz bedeuten, dass man Secure Boot abschalten müsste, um ein Linux zu installieren. Und wirklich toll ist die Idee nicht, eine Sicherheitsfunktion abzuschalten. Das war übrigens einer der wichtigsten Punkte, warum Secure Boot zu Anfang von der Linux-Community sehr kritisch gesehen wurde und häufig auch heute noch gesehen wird.
Um dem entgegenzuwirken, gibt es das oben genannte „shim“. Hierbei handelt es sich um ein Stück Software, das von Microsoft signiert ist und den eigentlichen Linux-Bootloader (in den meisten Fällen GRUB) laden kann, ohne dass Secure Boot Probleme bereitet.
Der Bootloader mit Netzwerk-Zugriff
Auch wenn es sich angeblich um ein einfaches Stück Software handelt, so kann shim doch sehr viel mehr, als man auf den ersten Blick vermuten würde. Eine besonders interessante Funktion: shim kann auch ISO-Dateien per HTTP herunterladen und diese starten wie ein lokales Betriebssystem oder einen lokalen USB-Stick. Für Experimentierfreudige durchaus eine interessante Funktion, jedoch auch eine, die man nicht mit einem „minimalen“ Bootloader in Verbindung bringen würde.
Und genau bei dieser Funktion gab es eine Sicherheitslücke, über die ein Angreifer mittels präparierter HTTP-Antworten ein System übernehmen und somit Secure Boot ad absurdum führen konnte, da ein zentrales Element der Vertrauenskette von Secure Boot – der Bootloader – Schadcode ausführen konnte. Die Ursache für diese Lücke ist, wie so häufig in der Welt von Webanwendungen und HTTP, eine fehlende Überprüfung der Antworten.
Eine Abkehr von der ursprünglichen Linux-Philosophie
Mit diesem erweiterten Funktionsumfang bewegt sich shim auch von der ursprünglichen Unix- (und Linux-)Philosophie von einfachen, für einen bestimmten Zweck optimierten Programmen weg. Das alte Prinzip „Keep it Simple and Stupid“ (KISS) bleibt hier ein Stück weit auf der Strecke. Das ist ein zweischneidiges Schwert. Einerseits erleichtert es den Nutzern und Administratoren die Installation von Systemen, auf der anderen Seite ergeben sich zusätzliche Risiken. Denn je komplexer ein Stück Software ist, desto größer die Wahrscheinlichkeit für Sicherheitslücken.
Komplexe Software und die Risiken
Das betrifft allerdings nicht nur Linux und shim, sondern sehr viele aktuelle Software-Lösungen. Je mehr man mit einem Programm machen kann, desto wahrscheinlicher ist es, dass ein Angreifer oder Sicherheitsforscher Wege findet, ungewollte Abläufe im Programm auszulösen.
Wird das Entwickler und Hersteller davon abhalten, immer komplexere Software zu entwickeln, die immer mehr Funktionen mitbringt? Natürlich nicht. Egal ob Bootloader, Betriebssystem, Office-Paket, UCC-Anwendung oder etwas anderes: Je mehr Funktionen man bieten kann und je besser ein Stück Software alle Funktionen intuitiv integriert, desto interessanter ist es für Anwender. Denken wir nur an all die Funktionen, die ein UCC-Client bietet und die einem das Leben leichter machen (können).
Aber man sollte sich immer darüber im Klaren sein: Je mehr eine Software kann, desto mehr kann auch schiefgehen. Und wir sprechen hier aktuell nur von Sicherheitslücken in der Software selbst. Aspekte wie Datenschutz und die Rolle der Cloud lasse ich bewusst außen vor!
Fazit
Selbst so etwas „Einfaches“ wie ein Bootloader unter Linux kann zu einem Sicherheitsrisiko werden, wenn viele Funktionen integriert werden. Auch wenn man bei „klassischen“ Anwendungen wie Office oder einem Webbrowser schon längst gewöhnt ist, über Sicherheitslücken zu lesen, überrascht dieser Fall schon. Doch es ist ein gutes Beispiel, warum man sich immer mit den Funktionen und möglichen Risiken einer Software auseinandersetzen sollte, egal wofür sie eingesetzt wird.