Владимир Сербиненко, един от тримата мейнтейнери на зареждача GRUB2, който е направил повече от пет хиляди промени в кода, предложи възможността за писане на модули за GRUB2 с използването на езика Rust. Владимир представи първоначалните резултати от експериментите с добавяне на поддръжка за Rust в GRUB2 и създаването на необходимите обвивки. За GRUB също така са подготвени промени, които позволяват използването на споделени библиотеки („.so“, ET_DYN) за модулите, вместо свързването на ниво обектни файлове („.o“, ET_REL).
Инициативата все още се позиционира като отделен експеримент, който няма да влияе на разработката на GRUB2. Като оптимално приложение на Rust в GRUB се споменава писането на модули за нови файлови системи. Също така не се изключва презаписването на кода за работа с дисковите раздели и GPT на Rust.
Предполага се, че използването на Rust ще помогне на проекта да намали вероятността от поява на някои видове грешки, особено в кода на модулите, съдържащи много големи и сложни процедури за парсинг. През февруари, в резултат на одит на кодовата база на GRUB, бяха открити 72 проблема с безопасността, от които 21 бяха признати за опасни уязвимости, подходящи за заобикаляне на механизма на удостоверено зареждане UEFI Secure Boot. 20 от 21 уязвимости са причинени от грешки при работа с паметта, водещи до препълване на буфера или достъп до памет след освобождаването й.
Допълнително може да се отбележи пускането на проекта GNU Boot 0.1 RC6, в който са включени споменатите по-горе поправки на уязвимостите (в самия GRUB2 корекциите продължават да се разпространяват като патчи без създаване на отделен релиз). Проектът GNU Boot развива замяна на собственическите фърмуерни решения UEFI и BIOS, базирана на CoreBoot, но прилагаща по-строги изисквания към включването на бинарни компоненти. GNU Boot се представя като „coreboot-libre“, т.е. като редакция на CoreBoot, освободена от блобове и несвободни компоненти, по аналогия с проекта Linux-libre, който развива почистена версия на ядрото Linux. Отделно се развиват подобни проекти Libreboot и Canoeboot.
Източник: opennet.ru
