Microsoft presentó un sistema modular abierto para crear firmware UEFI
Recientemente Microsoft ha introducido un nuevo proyecto abierto, el “Proyecto Mu”, que está desarrollando un marco para crear entornos UEFI que inicializan el hardware y proporcionan un conjunto de servicios para cargar el sistema operativo.
El firmware basado en Project Mu ya se está utilizando en productos de Microsoft como Surface y Hyper-V.
El proyecto se basa en el trabajo de la pila UEFI abierta TianoCore EDK2, pero no es una bifurcación, sino que se coloca como un complemento (módulo “MU”), recopilado sobre la base de nuevas versiones estables de TianoCore y devolviendo correcciones y cambios específicos de TianoCore al proyecto principal.
Los desarrollos del proyecto se distribuyen bajo la licencia BSD.
Una característica clave del proyecto Mu es el desarrollo de la idea de firmware como un servicio (FaaS, Firmware as a Service), cuya esencia es proporcionar mecanismos para mantener actualizados el firmware y el entorno UEFI.
FaaS le permite ver el firmware como un producto que requiere actualizaciones constantes para brindar rápidamente correcciones de errores y vulnerabilidades a los usuarios, así como para agregar nuevas funciones.
Los desarrolladores del proyecto Mu intentaron resolver los problemas que surgen en el desarrollo del firmware UEFI, causados por la participación de varios proveedores y el uso de diversos componentes propietarios, que están sujetos a estrictas restricciones de licencia.
Hasta ahora, debido a la complejidad de la organización de la interacción entre socios comerciales, los fabricantes practican la creación de una bifurcación de una base de código típica al crear un firmware con la introducción de modificaciones específicas del producto.
El mantenimiento del firmware en tales condiciones es demasiado complicado y el costo de las modificaciones y los riesgos derivados de los cambios le permiten generar actualizaciones solo en situaciones excepcionales.
Sobre el proyecto Mu
Mu proporciona un conjunto de módulos, herramientas de construcción y repositorios enfocados en la reutilización de códigos, un proceso de desarrollo colaborativo distribuido con intercambio de repositorios y un estricto control de calidad.
El firmware generado puede combinar componentes de código abierto con módulos propietarios, que se desarrollan por separado y el propio módulo se adjunta al producto final sin violar los requisitos de licencia del titular de los derechos de autor.
A diferencia de TianoCore, Project Mu incluye características adicionales para mejorar la compatibilidad con los productos de Microsoft, aumentar la escalabilidad (en el contexto del mantenimiento del firmware para muchos productos diferentes que tienen varias compañías involucradas), simplificar el mantenimiento del firmware y organizar las actualizaciones planificadas.
Los componentes del proyecto incluyen una interfaz de usuario, un teclado en pantalla, herramientas para administrar de forma segura la configuración de UEFI, un cargador de arranque de alto rendimiento y un conjunto de ejemplos de menú de BIOS.
Para aumentar la seguridad del proyecto, la base de código de TianoCore se limpió de componentes obsoletos y se realizaron cambios para reducir los posibles vectores de ataque.
Además del código, el proyecto también incluye un conjunto de especificaciones para la organización del proceso de desarrollo del firmware, de acuerdo con el paradigma FaaS, así como una colección de pruebas y herramientas para analizar y optimizar la calidad del firmware.
Las principales características de Mu
- Interfaz para configurar el firmware (DFCI, interfaz de configuración de firmware del dispositivo) y herramientas para la administración de dispositivos móviles (MDM, Mobile Device Management);
- El sistema de protección de contraseña del BIOS que utiliza PBKDF2 para el hashing de contraseñas.
- Compatibilidad con la verificación de componentes mediante firmas digitales basadas en EKU (Extended Key Usage).
- Usando el marco de Microsoft para pruebas unitarias.
- Medios para auditar, verificar la funcionalidad y evaluar el rendimiento de todas las capacidades de la plataforma.
- Sistema de compilación escalable escrito en Python.
- Complementos para realizar un seguimiento de la reescritura de información y el análisis del descriptor de flash (Descriptor de Flash, marco de programación SPI Flash).
- Sistema de gestión de paquetes binarios basado en el administrador de paquetes de NuGet.
- La posibilidad de certificación por firmas digitales de componentes transmitidos mediante el mecanismo de cápsula UEFI (medios para transferir conjuntos de datos binarios al firmware EFI)
- Compatibilidad con Visual Studio compilador.
- Soporte de codificación Base64 para objetos binarios.
- Paquete con soporte XML.
El artículo Microsoft presentó un sistema modular abierto para crear firmware UEFI ha sido originalmente publicado en Linux Adictos.