Se han corregido 7 vulnerabilidades en el cargador GRUB2 que permiten eludir el mecanismo UEFI Secure Boot y ejecutar código no verificado, como la inyección de malware que opera a nivel del cargador o del núcleo. Además, se ha señalado una vulnerabilidad en la capa shim, que también permite eludir UEFI Secure Boot. Este grupo de vulnerabilidades ha recibido el nombre en clave Boothole 3, similar a problemas anteriores identificados en el cargador.
Para corregir los problemas en GRUB2 y shim, las distribuciones podrán utilizar el mecanismo SBAT (UEFI Secure Boot Advanced Targeting), cuyo soporte está implementado para GRUB2, shim y fwupd. SBAT ha sido desarrollado conjuntamente con Microsoft e implica añadir metadatos adicionales a los archivos ejecutables de los componentes UEFI, que incluyen información sobre el fabricante, el producto, el componente y la versión. Los metadatos se firman digitalmente y pueden ser incluidos, por separado, en las listas de componentes permitidos o prohibidos para UEFI Secure Boot.
En la mayoría de las distribuciones de Linux, para la carga verificada en modo UEFI Secure Boot se utiliza una pequeña capa shim, firmada digitalmente por Microsoft. Esta capa verifica GRUB2 con su propio certificado, lo que permite a los desarrolladores de distribuciones no firmar cada actualización del núcleo y GRUB en Microsoft. Las vulnerabilidades en GRUB2 permiten la ejecución de código propio en la fase después de la verificación exitosa de shim, pero antes de cargar el sistema operativo, interrumpiendo la cadena de confianza en modo Secure Boot activo y obteniendo el control total del proceso de carga posterior, incluyendo la carga de otro sistema operativo, la modificación de componentes del sistema operativo y la elusión de la protección de Lockdown.
Para corregir los problemas en el cargador, las distribuciones tendrán que generar nuevas firmas digitales internas y actualizar instaladores, cargadores, paquetes del núcleo, firmware fwupd y la capa shim. Antes de la implementación de SBAT, la actualización de la lista de certificados revocados (dbx, UEFI Revocation List) era un requisito obligatorio para el bloqueo completo de la vulnerabilidad, ya que un atacante, sin importar el sistema operativo utilizado, podía comprometer UEFI Secure Boot utilizando un medio de arranque con una versión antigua y vulnerable de GRUB2, firmada digitalmente.
En lugar de revocar, las firmas SBAT permiten bloquear su uso para versiones específicas de componentes sin necesidad de revocar las claves para Secure Boot. El bloqueo de vulnerabilidades a través de SBAT no requiere el uso de la lista de certificados revocados de UEFI (dbx), y se realiza a nivel de reemplazo de la clave interna para la formación de firmas y actualización de GRUB2, shim y otros artefactos de arranque proporcionados por las distribuciones. Actualmente, el soporte para SBAT ya se ha añadido a la mayoría de las distribuciones populares de Linux.
Vulnerabilidades detectadas:
- CVE-2021-3696, CVE-2021-3695 - desbordamiento de búfer en el montón al procesar imágenes PNG especialmente diseñadas, que teóricamente se pueden utilizar para llevar a cabo la ejecución de código del atacante y evadir UEFI Secure Boot. Se señala que el problema es difícil de explotar, ya que para crear un exploit funcional se requieren muchos factores y se necesita información sobre la disposición de la memoria.
- CVE-2021-3697 - desbordamiento por sub-bajo del búfer en el código de procesamiento de imágenes JPEG. La explotación del problema requiere obtener información sobre la disposición de la memoria y está aproximadamente en el mismo nivel de complejidad que el problema con PNG (CVSS 7.5).
- CVE-2022-28733 - desbordamiento entero en la función grub_net_recv_ip4_packets(), que permite afectar al parámetro rsm->total_len a través del envío de un paquete IP especialmente diseñado. El problema se ha señalado como el más peligroso de las vulnerabilidades presentadas (CVSS 8.1). Con una explotación exitosa, la vulnerabilidad permite escribir datos fuera de los límites del búfer al asignar un tamaño de memoria deliberadamente menor.
- CVE-2022-28734 - desbordamiento de un byte del búfer al procesar encabezados HTTP divididos. El problema puede llevar a la corrupción de los metadatos de GRUB2 (escritura de un byte nulo justo después del final del búfer) al analizar solicitudes HTTP especialmente diseñadas.
- CVE-2022-28735 - problema en el verificador shim_lock, que permite cargar archivos no relacionados con el núcleo. La vulnerabilidad puede ser utilizada para cargar módulos del núcleo no firmados digitalmente o código no verificado en modo UEFI Secure Boot.
- CVE-2022-28736 — acceso a una zona de memoria ya liberada en la función grub_cmd_chainloader() a través de la reinvocación del comando chainloader, utilizado para cargar sistemas operativos no soportados en GRUB2. La explotación puede permitir la ejecución de código del atacante si este puede determinar las características de distribución de memoria en GRUB2.
- CVE-2022-28737 — desbordamiento de búfer en la capa shim, que ocurre en la función handle_image() al cargar y ejecutar imágenes EFI especialmente formateadas.
Fuente: opennet.ru
