Vladimir Serbinenko, uno de los tres mantenedores del cargador GRUB2, que ha realizado más de cinco mil cambios en la base de código, ha propuesto la posibilidad de escribir módulos para GRUB2 utilizando el lenguaje Rust. Vladimir presentó los primeros resultados de los experimentos con la adición de soporte para Rust en GRUB2 y la creación de los enlaces necesarios. También se han preparado cambios para GRUB que permitirán el uso de bibliotecas compartidas ('.so', ET_DYN) para los módulos, en lugar de vinculación a nivel de archivos objeto ('.o', ET_REL).
La iniciativa se posiciona actualmente como un experimento separado que no afectará el desarrollo de GRUB2. Se menciona que la aplicación óptima de Rust en GRUB sería la escritura de módulos para nuevos sistemas de archivos. También se contempla la posibilidad de reescribir en Rust el código para trabajar con particiones de disco y GPT.
Se supone que el uso de Rust ayudará al proyecto a reducir la probabilidad de aparición de ciertos tipos de errores, especialmente en el código de módulos que contienen numerosos procedimientos de análisis grandes y complejos. En febrero, como resultado de una auditoría de la base de código de GRUB, se identificaron 72 problemas de seguridad, 21 de los cuales se reconocieron como vulnerabilidades críticas que podrían eludir el mecanismo de arranque verificado UEFI Secure Boot. 20 de las 21 vulnerabilidades fueron causadas por errores en el manejo de la memoria, que llevaron a desbordamientos de búfer o a acceder a la memoria después de ser liberada.
Además, se puede destacar el lanzamiento de la versión del proyecto GNU Boot 0.1 RC6, que incluye las correcciones de vulnerabilidades mencionadas anteriormente (en GRUB2, las correcciones continúan distribuyéndose como parches sin formar un lanzamiento separado). El proyecto GNU Boot desarrolla una alternativa a los firmwares propietarios UEFI y BIOS, basada en CoreBoot, pero con requisitos más estrictos para la inclusión de componentes binarios. GNU Boot se presenta como "coreboot-libre", es decir, como una edición de CoreBoot libre de blobs y componentes no libres, de manera similar a cómo el proyecto Linux-libre desarrolla una versión limpiada del núcleo de Linux. Proyectos similares, como Libreboot y Canoeboot, se desarrollan por separado.
Fuente: opennet.ru
