Secure Boot: Signierte ELF-Dateien sollen Linux absichern
Damit die Linux-Bootloader nicht auf Microsofts schwarzer Liste landen, müssen spezielle Funktionen des Linux-Kernels besonders abgesichert werden, darunter Kexec. Das wollen Entwickler mit signierten ELF-Dateien umsetzen.

Ausführbare ELF-Dateien sollen künftig signiert werden können. Damit soll beispielsweise verhindert werden, dass über die Kernel-Funktion Kexec weitere Kernel in einer ungesicherten Umgebung gestartet werden und damit UEFIs Secure Boot aushebeln. Entwickler Vivek Goyal hat signierte ELF-Dateien vorgeschlagen und bereits entsprechende Patches und ein Werkzeug bereitgestellt. Noch handelt es sich aber um ein RFC.
Entwickler und Secure-Boot-Experte Matthew Garrett hatte auf mögliche Schlupflöcher in dem mit UEFI umgesetzten Sicherheitssystem hingewiesen. Gegenwärtig müssten zahlreiche Funktionen im Linux-Kernel abgestellt werden, denn sie könnten dazu genutzt werden, Secure Boot auszuhebeln.
Schlupfloch Kexec
Eine davon ist der Aufruf Kexec, mit dem ein laufender Kernel einen weiteren - auch unsicheren - Kernel starten kann. Wird in einer solchen Situation mit Kexec ein Windows-Kernel gestartet, wähnt sich dieser in einer sicheren Umgebung. Bleibt Kexec unsicher, könnte das Microsoft dazu veranlassen, sämtliche Bootloader, die einen Kernel mit Kexec starten, auf die schwarze Liste zu setzen und damit die Installation von Linux auf von Microsoft zertifizierter Hardware erschweren.
Kexec zu deaktivieren, kommt für die meisten Kernel-Entwickler aber nicht infrage. Deshalb schlägt Goyal vor, binäre ELF-Dateien zu signieren. Erst wenn die Signatur vom laufenden Kernel bestätigt worden ist, kann eine ELF-Binärdatei die Funktion Kexec nutzen. Ist die Datei unsigniert, soll die Funktion Kexec gesperrt werden. Die Binärdatei kann aber weiterhin gefahrlose Funktionen aufrufen. Erst wenn die Signatur nicht verifiziert werden kann, verweigert der Kernel die Arbeit der Binärdatei gänzlich.
Eingeschränkte Funktionen
Erkennt der Kernel über seine Funktion binfmt_elf eine signierte Binärdatei, werden seine Speicherseiten solange blockiert, bis die Signatur verifiziert worden ist. Damit soll verhindert werden, dass die Datei nach der Verifizierung noch ausgetauscht werden kann.
Jede ausführbare Datei im Executable and Linking Format (ELF) besitzt einen entsprechenden Header. Darin soll die kryptographische Signatur untergebracht werden, und nicht am Ende der Binärdatei wie mit den jüngst eingeführten Signaturwerkzeugen des Kernels. Die Signatur soll aus dem Hash-Wert des Inhalts der PT_LOAD-ELF-Segmente der Datei bestehen und mit einem privaten Schlüssel signiert werden. Gegenwärtig soll das aber nur mit statisch gelinkten Dateien funktionieren, denn gemeinsam genutzten Bibliotheken kann ebenfalls nicht getraut werden.
Entwicklungsbedürftig
Noch ist Goyals Vorschlag nicht ausgereift. Denn seine Patches verhindern gegenwärtig nicht die Nutzung des Aufrufs dlopen, mit dem dynamische Bibliotheken geladen werden können, oder ptrace, mit dem nach wie vor Binärdateien manipuliert werden könnten.
Zwar besitzt Linux seit Kernel 3.7 mit der Integrity Measurement Architecture (IMA) bereits einen ähnlichen Mechanismus. Allerdings enthalte Goyals Vorschlag sinnvolle Funktionen, die es dort nicht gebe, schreibt Kernel-Entwickler Johnathen Corbet, etwa die Möglichkeit, Funktionen nur einzuschränken, wenn die Binärdatei nicht signiert ist, oder das Sperren der Speicherseite, das eine zusätzliche Sicherheitsfunktion darstellt.
Bis es eine endgültige Lösung gibt, müssten Linux-Distributionen Kexec aber deaktivieren, wenn sie nicht auf Microsofts Blacklist laden wollen.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Das wird aber bei der Masse nicht klappen und wer die Masse ha, hat die Macht.