Vulnerabilidades en GRUB2 que pueden eludir el arranque seguro UEFI

Se han solucionado 2 vulnerabilidades en el gestor de arranque GRUB7 que permiten saltarse 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 gestor de arranque o del kernel. Además, existe una vulnerabilidad en la capa de corrección, que también le permite omitir el arranque seguro UEFI. El grupo de vulnerabilidades recibió el nombre en código Boothole 3, similar a problemas similares identificados previamente en el gestor de arranque.

Para solucionar problemas en GRUB2 y shim, las distribuciones podrán utilizar el mecanismo SBAT (UEFI 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, producto, componente y versión. 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 a los desarrolladores de distribuciones no certificar cada kernel y actualización de GRUB con Microsoft. Las vulnerabilidades en GRUB2 le permiten ejecutar su código en la etapa posterior a la verificación exitosa de shim, pero antes de cargar el sistema operativo, ingresando a la cadena de confianza con el modo de arranque seguro activo y obteniendo control total sobre el proceso de arranque posterior, incluido el arranque de otro. OS, modificando el sistema de componentes del sistema operativo y evitando la protección de bloqueo.

Para solucionar problemas en el gestor de arranque, las distribuciones deberán crear nuevas firmas digitales internas y actualizar los instaladores, los gestores de arranque, los paquetes del kernel, fwupd-firmware y shim-layer. Antes de la introducción de SBAT, la actualización de la lista de certificados revocados (dbx, UEFI Revocation List) era un requisito previo para bloquear completamente la vulnerabilidad, ya que un atacante, independientemente del sistema operativo utilizado, podía utilizar un medio de arranque con una versión antigua y vulnerable de GRUB2. certificado por una firma digital para comprometer el arranque seguro UEFI.

En lugar de revocar la firma, SBAT le permite bloquear su uso para números de versión de componentes individuales sin la necesidad de revocar claves para el arranque seguro. El bloqueo de vulnerabilidades a través de SBAT no requiere el uso de UEFI CRL (dbx), pero se realiza al nivel de reemplazar la clave interna para generar firmas y actualizar GRUB2, shim y otros artefactos de arranque proporcionados por las distribuciones. Ahora se ha agregado compatibilidad con SBAT a las distribuciones de Linux más populares.

Vulnerabilidades identificadas:

  • CVE-2021-3696, CVE-2021-3695: el búfer de montón se desborda al procesar imágenes PNG especialmente diseñadas, que en teoría pueden usarse para organizar la ejecución de código de ataque y evitar el arranque seguro UEFI. Cabe señalar que el problema es difícil de explotar, ya que para crear un exploit que funcione es necesario tener en cuenta una gran cantidad de factores y la disponibilidad de información sobre la distribución de la memoria.
  • CVE-2021-3697: Desbordamiento insuficiente 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 la más peligrosa de las vulnerabilidades presentadas (CVSS 8.1). Si se explota con éxito, la vulnerabilidad permite que los datos se escriban fuera del límite del búfer asignando un tamaño de memoria deliberadamente más pequeño.
  • CVE-2022-28734: Desbordamiento del búfer de un solo byte al procesar encabezados HTTP divididos. El problema puede provocar que los metadatos de GRUB2 se corrompan (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 del kernel no firmados o código no verificado en el modo de inicio seguro 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 utilizado para cargar sistemas operativos no compatibles con GRUB2. La explotación puede conducir a la ejecución del código del atacante si el atacante es capaz de determinar los detalles de la asignación de memoria en GRUB2.
  • CVE-2022-28737: Desbordamiento del búfer en la capa de cuña en la función handle_image() al cargar y ejecutar imágenes EFI personalizadas.

Fuente: opennet.ru

Añadir un comentario