Wladimir Serbinenko, einer der drei Hauptverwalter des Bootloaders GRUB2, der mehr als 5000 Änderungen am Code vorgenommen hat, hat die Diskussion über die Möglichkeit eröffnet, Module für GRUB2 unter Verwendung der Sprache Rust zu schreiben. Wladimir hat die ersten Ergebnisse seiner Experimente zur Unterstützung von Rust in GRUB2 und zur Erstellung der erforderlichen Bindings vorgestellt. Zudem wurden Änderungen für GRUB vorbereitet, die die Verwendung von Shared Libraries («.so», ET_DYN) für Module ermöglichen, anstelle von Bindungen auf der Ebene von Objektdateien («.o», ET_REL).
Die Initiative wird vorerst als separates Experiment positioniert, das keinen Einfluss auf die Entwicklung von GRUB2 haben wird. Als optimale Anwendung von Rust in GRUB wird das Schreiben von Modulen für neue Dateisysteme genannt. Auch eine Neuschreibung des Codes für die Arbeit mit Partitionen und GPT in Rust wird nicht ausgeschlossen.
Die Nutzung von Rust soll dazu beitragen, die Wahrscheinlichkeit bestimmter Fehlertypen im Projekt zu reduzieren, insbesondere im Code von Modulen, die zahlreiche umfangreiche und komplexe Parsing-Prozeduren enthalten. Im Februar wurden während eines Audits des Codebestands von GRUB 72 Sicherheitsprobleme identifiziert, von denen 21 als gefährliche Sicherheitsanfälligkeiten eingestuft wurden, die den Mechanismus der verifizierten UEFI Secure Boot-Bootloader umgehen können. 20 der 21 Sicherheitsanfälligkeiten resultierten aus Speicherfehlern, die zu Pufferüberläufen oder dem Zugriff auf bereits freigegebenen Speicher führten.
Zusätzlich ist die Veröffentlichung des Projekts GNU Boot 0.1 RC6 erwähnenswert, das die oben genannten Sicherheitsanfälligkeiten behebt (in GRUB2 werden die Korrekturen weiterhin als Patches ohne separate Veröffentlichung verteilt). Das Projekt GNU Boot entwickelt eine Alternative zu proprietären UEFI- und BIOS-Firmware, die auf CoreBoot basiert, jedoch strengere Anforderungen an die Einbindung binärer Komponenten stellt. GNU Boot wird als „coreboot-libre“ präsentiert, d.h. als eine Version von CoreBoot, die von Blobs und nicht-freien Komponenten befreit ist, ähnlich wie das Projekt Linux-libre eine bereinigte Variante des Linux-Kernels entwickelt. Ähnliche Projekte wie Libreboot und Canoeboot werden separat entwickelt.
Quelle: opennet.ru
