Solucionaron 7 vulnerabilidades en GRUB2 que incluso permitían inyectar malware
Hace poco se dio a conocer la noticia de que se han corregido 7 vulnerabilidades en el cargador de arranque GRUB2 que permiten eludir el mecanismo de arranque seguro UEFI y permitir la ejecución de código no verificado, por ejemplo, inyectando malware que funciona a nivel del cargador de arranque o del kernel.
Además, hay una vulnerabilidad en la capa shim, que también permite omitir UEFI Secure Boot. El grupo de vulnerabilidades recibió el nombre en código de Boothole 3, similar a problemas similares identificados previamente en el gestor de arranque.
Los metadatos especificados están firmados digitalmente y se pueden incluir por separado en las listas de componentes permitidos o prohibidos para UEFI Secure Boot.
La mayoría de las distribuciones de Linux utilizan una pequeña capa de corrección, firmada digitalmente por Microsoft, para el arranque verificado en el modo de arranque seguro UEFI. Esta capa verifica GRUB2 con su propio certificado, lo que permite que los desarrolladores de distribución no certifiquen cada actualización de kernel y GRUB con Microsoft.
Las vulnerabilidades en GRUB2 permiten lograr la ejecución de código en la etapa posterior a la verificación exitosa de shim, pero antes de cargar el sistema operativo, entrar en la cadena de confianza con el modo de arranque seguro activo y obtener control total sobre el proceso de arranque posterior incluido el arranque de otro sistema operativo, la modificación del sistema de componentes del sistema operativo y eludir la protección de bloqueo.
En lugar de revocar la firma, SBAT permite bloquear su uso para números de versión de componentes individuales sin necesidad de revocar claves para el Arranque seguro. El bloqueo de vulnerabilidades a través de SBAT no requiere el uso de una UEFI CRL (dbx), sino que se realiza a nivel de reemplazo de la clave interna para generar firmas y actualizar GRUB2, shim y otros artefactos de arranque proporcionados por las distribuciones. La compatibilidad con SBAT ahora se ha agregado a las distribuciones de Linux más populares.
Las vulnerabilidades identificadas son las siguientes:
- CVE-2021-3696, CVE-2021-3695: el búfer de almacenamiento dinámico se desborda al procesar imágenes PNG especialmente diseñadas, que en teoría podrían usarse para organizar la ejecución del código de ataque y evitar el arranque seguro de UEFI. Se observa que el problema es difícil de explotar, ya que crear un exploit que funcione requiere tener en cuenta una gran cantidad de factores y la disponibilidad de información sobre el diseño de la memoria.
- CVE-2021-3697: subdesbordamiento del búfer en el código de procesamiento de imágenes JPEG. Explotar el problema requiere conocimiento del diseño de la memoria y tiene aproximadamente el mismo nivel de complejidad que el problema PNG (CVSS 7.5).
- CVE-2022-28733: un desbordamiento de enteros en la función grub_net_recv_ip4_packets() que le permite influir en el parámetro rsm->total_len enviando un paquete IP especialmente diseñado. El problema está marcado como el más peligroso de las vulnerabilidades presentadas (CVSS 8.1). Si se aprovecha con éxito, la vulnerabilidad permite que los datos se escriban fuera del límite del búfer al asignar un tamaño de memoria deliberadamente más pequeño.
- CVE-2022-28734: Desbordamiento de búfer de un solo byte al procesar encabezados HTTP divididos. El problema puede causar que los metadatos de GRUB2 se dañen (escriba un byte nulo justo después del final del búfer) al analizar solicitudes HTTP especialmente diseñadas.
- CVE-2022-28735: un problema en el verificador shim_lock que permite cargar archivos que no son del kernel. La vulnerabilidad podría explotarse para iniciar módulos de kernel sin firmar o código no verificado en el modo de inicio seguro de UEFI.
- CVE-2022-28736: Acceso a un área de memoria ya liberada en la función grub_cmd_chainloader() volviendo a ejecutar el comando chainloader que se usa para cargar sistemas operativos no admitidos por GRUB2. La explotación puede conducir a la ejecución del código del atacante si el atacante puede determinar los detalles de la asignación de memoria en GRUB2.
- CVE-2022-28737: Desbordamiento de búfer en la capa de corrección en la función handle_image() al cargar y ejecutar imágenes EFI personalizadas.
Para solucionar problemas en GRUB2 y shim, las distribuciones podrán usar el mecanismo SBAT (Usefi Secure Boot Advanced Targeting), que es compatible con GRUB2, shim y fwupd. SBAT se desarrolló en colaboración con Microsoft e implica agregar metadatos adicionales a los archivos ejecutables del componente UEFI, que incluyen información sobre el fabricante, el producto, el componente y la versión.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.