Wladimir Serbinienko, einer der drei Hauptverantwortlichen für den GRUB2-Lader, der über fünftausend Änderungen am Code vorgenommen hat, hat die Möglichkeit zur Diskussion gestellt, Module für GRUB2 mit der Programmiersprache Rust zu schreiben. Wladimir stellte die ersten Ergebnisse seiner Experimente zur Unterstützung von Rust in GRUB2 und zur Erstellung der erforderlichen Wrapper vor. Für GRUB wurden ebenfalls Änderungen vorbereitet, die die Verwendung von geteilten Bibliotheken (».so«, ET_DYN) für Module anstelle der Verknüpfung auf Objektdateiebene (».o«, ET_REL) ermöglichen.
Die Initiative wird bisher als separates Experiment positioniert, das keinen Einfluss auf die Entwicklung von GRUB2 haben wird. Als ideale Anwendung von Rust in GRUB wird die Erstellung von Modulen für neue Dateisysteme erwähnt. Es ist auch nicht ausgeschlossen, den Code für die Arbeit mit Festplattenpartitionen und GPT in Rust neu zu schreiben.
Es wird angenommen, dass die Verwendung von Rust dem Projekt helfen wird, die Wahrscheinlichkeit bestimmter Fehlerarten zu verringern, insbesondere im Modulcode, der viele große und komplexe Parsing-Prozeduren umfasst. Im Februar wurden im Rahmen einer Prüfung der GRUB-Codebasis 72 Sicherheitsprobleme festgestellt, von denen 21 als gefährliche Schwachstellen anerkannt wurden, die in der Lage sind, den Mechanismus der verifizierten UEFI Secure Boot zu umgehen. 20 der 21 Schwachstellen wurden durch Fehler im Umgang mit dem Speicher verursacht, die zu Pufferüberläufen oder Zugriffen auf bereits freigegebenen Speicher führten.
Zusätzlich kann der Release des GNU Boot 0.1 RC6 erwähnt werden, der die zuvor genannten Sicherheitskorrekturen enthält (die Korrekturen für GRUB2 werden weiterhin in Form von Patches verteilt, ohne ein separates Release zu bilden). Das GNU Boot-Projekt entwickelt eine Alternative zu proprietären UEFI- und BIOS-Firmware, die auf CoreBoot basiert, aber strengere Anforderungen an die Einbeziehung binärer Komponenten stellt. GNU Boot wird als „coreboot-libre“ präsentiert, d.h. als eine Version von CoreBoot, die von Blobs und proprietären Komponenten befreit ist, analog dazu, wie das Projekt Linux-libre eine bereinigte Version des Linux-Kernels entwickelt. Ähnliche Projekte wie Libreboot und Canoeboot werden ebenfalls separat entwickelt.
Quelle: opennet.ru
