Hace poco se dio a conocer la noticia de que fue descubierta una vulnerabilidad de ejecución remota en la capa Shim, la cual es ampliamente utilizada en la mayoría de las distribuciones de Linux para el arranque verificado en el modo de arranque seguro UEFI.
La vulnerabilidad, ya catalogada bajo «CVE-2023-40547» y evaluada con una puntuación de 8.3 en la escala CVSS, plantea riesgos significativos, incluida la posibilidad de ejecución remota de código y la omisión del mecanismo de arranque seguro de Linux.
La vulnerabilidad radica en un defecto en el código de descarga de archivos a través de HTTP, lo que permite procesar respuestas incorrectas generadas por el servidor HTTP al que accede Shim. Este error puede ser explotado por un atacante que controle el servidor HTTP para retornar una respuesta manipulada, lo que resultaría en una escritura controlada en un búfer fuera de los límites y permitiría la ejecución de código durante las primeras etapas del proceso de carga.
La esencia de la vulnerabilidad radica en el modo HTTPBoot en Shim que permite la descarga de archivos a través de HTTP, el cual para recuperar un archivo con un cargador que se llama en el siguiente paso del proceso de arranque.
Al realizar descargas de archivos a través de HTTP, Shim asigna un búfer para los datos recibidos, basándose en el tamaño especificado en el encabezado HTTP «Content-Length». Sin embargo, el problema surge cuando se recibe un valor menor en el encabezado Content-Length, lo que conduce a que el final de la solicitud se escriba en la memoria fuera del límite del búfer asignado, generando así la vulnerabilidad.
Para mitigar la vulnerabilidad sin recurrir a la revocación de la firma digital, se menciona que se puede emplear el mecanismo SBAT, el cual es compatible con GRUB2, shim y fwupd en las distribuciones de Linux más utilizadas.
Desarrollado en colaboración con Microsoft, SBAT implica la adición de metadatos adicionales a los archivos ejecutables de los componentes UEFI, tales como información sobre el fabricante, producto, componente y versión. Estos metadatos especificados están certificados con una firma digital y pueden ser incluidos de manera independiente en listas de componentes permitidos o prohibidos para el UEFI Secure Boot.
Cabe mencionar que la vulnerabilidad ya fue solucionada en el lanzamiento de Shim 15.8, sin embargo, para garantizar una protección completa contra los ataques a través de Shim, es necesario que la nueva versión esté certificada por Microsoft y se implemente en las distribuciones de Linux.
Aunque el problema es que sin revocar la firma de la versión anterior, la solución no tiene sentido, ya que un atacante podría utilizar un dispositivo de arranque con una versión vulnerable de Shim para comprometer el arranque seguro UEFI. Pero revocar la firma hará imposible verificar el arranque de las distribuciones que continúan usando la versión anterior de Shim.
Finalmente, cabe mencionar que, además de abordar la vulnerabilidad principal mencionada anteriormente, Shim 15.8 también resuelve varios problemas de seguridad menos críticos que pueden ser explotados localmente. Estos problemas de seguridad se identificaron con los siguientes identificadores CVE:
- CVE-2023-40548: Este problema implica un desbordamiento de enteros en la función verificar_sbat_section, lo que puede provocar un desbordamiento del búfer en sistemas de 32 bits.
- CVE-2023-40546: Se produce una lectura de memoria fuera de los límites al informar mensajes de error a través de la función LogError().
- CVE-2023-40549: Otra lectura de memoria fuera de los límites ocurre al procesar un archivo PE especialmente diseñado en la función verificar_buffer_authenticode().
- CVE-2023-40550: Implica una lectura de memoria fuera del búfer en la función verificar_buffer_sbat().
- CVE-2023-40551: Se produce una lectura de memoria fuera de los límites al analizar archivos MZ.
Esta vulnerabilidad subraya la importancia de abordar las debilidades en la implementación de protocolos de seguridad, particularmente en sistemas críticos como el proceso de arranque seguro en distribuciones de Linux.
Por último, y no menos impórtate, como siempre hacemos, la recomendación de que los usuarios apliquen los parches y actualizaciones relevantes para mitigar los riesgos asociados con esta vulnerabilidad y proteger sus sistemas contra posibles ataques.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.