Hace pocos días ESET dio a conocer la noticia la primera prueba de concepto de bootkit UEFI para Linux, nombrado como «Bootkitty«, este bootkit es parte de un proyecto creado por estudiantes de ciberseguridad del programa de capacitación Best of the Best (BoB) de Corea.
Bootkitty, como tal, es una amenaza avanzada que se instala como reemplazo del gestor de arranque GRUB en sistemas Linux, utilizando el entorno UEFI para mantener el control del sistema de forma encubierta. Este malware, que es el primer bootkit UEFI diseñado para Linux, carga componentes maliciosos en el kernel para garantizar persistencia.
Funcionamiento de Bootkitty
- Sustitución de GRUB:
El primer paso del bootkit consiste en reemplaza al gestor de arranque estándar,grubx64.efi
, en la partición del sistema EFI, lo que le permite iniciar la carga maliciosa durante el arranque del sistema. - Alteración de GRUB en memoria:
Tras activarse el bootkit, este carga el gestor de arranque GRUB2 legítimo en memoria, pero introduce modificaciones para deshabilitar la verificación de integridad en componentes posteriores. También añade un controlador que manipula el proceso de carga del kernel. - Modificaciones en el kernel:
- El bootkit modifica las funciones del kernel cargadas en memoria, desactivando la validación de firmas digitales en los módulos del kernel.
- Posterior a ello cambia la línea de inicialización del kernel, reemplazando
/init
por un comando malicioso que utilizaLD_PRELOAD
para cargar la biblioteca maliciosainjector.so
.
- Componentes maliciosos:
- Injector.so:
Esta es una biblioteca que se encarga de interceptar las llamadas del sistema, como las de SELinux yinit_module
, permitiendo la carga de módulos del kernel maliciosos. - Dropper.ko:
Un módulo del kernel que crea y ejecuta el archivo binario/opt/observer
. También se oculta en la lista de módulos del kernel y manipula las funciones del sistema para evitar que se detecte su presencia o ciertos archivos y tráfico de red. - Observer y Rootkit Loader:
El ejecutable/opt/observer
carga otro módulo malicioso (rootkit_loader.ko
), que a su vez activa un rootkit completo en el sistema comprometido.
- Injector.so:
Como tal Bootkitty es un bootkit funcional cuyo objetivo es:
» Generar conciencia dentro de la comunidad de seguridad sobre los riesgos potenciales y fomentar medidas proactivas para prevenir amenazas similares. Desafortunadamente, se divulgaron pocas muestras de bootkit antes de la presentación planificada en la conferencia».
Método de ataque
El ataque se ejecuta mediante la inserción de una imagen BMP diseñada específicamente en la partición ESP (EFI System Partition). Esta imagen se presenta como el logotipo del fabricante para el firmware UEFI. Debido a vulnerabilidades en las bibliotecas utilizadas por el firmware para procesar imágenes, como desbordamientos de búfer, la imagen maliciosa desencadena la ejecución de código en el contexto del firmware UEFI. Aunque la vulnerabilidad LogoFAIL fue descubierta hace un año y ha sido solucionada en actualizaciones recientes del firmware UEFI, muchos dispositivos aún operan con versiones desactualizadas y vulnerables, lo que los deja expuestos a este tipo de explotación.
Bootkitty cuenta con limitaciones importantes en su implementación, ya que las modificaciones realizadas en las funciones de memoria del kernel se basaban en compensaciones predeterminadas, sin verificar su validez frente a la versión específica del kernel cargado.
La efectividad del bootkit se limita únicamente a las versiones del kernel y GRUB incluidas en ciertas distribuciones de Ubuntu, causando fallos de arranque en otros sistemas. Además, el bootkit utilizaba un certificado autofirmado para validar su gestor de arranque modificado (grubx64.efi), lo que lo hacía ineficaz en sistemas con UEFI Secure Boot habilitado, salvo que se incluyera manualmente el certificado del atacante en la lista de certificados confiables del firmware.
Investigadores de Binarly Research señalaron que entre los componentes de Bootkitty se encontraron imágenes BMP vinculadas a la vulnerabilidad LogoFAIL, una brecha en UEFI que permite la ejecución de código arbitrario en el nivel de firmware y eludir las restricciones de UEFI Secure Boot. En este caso, LogoFAIL se utilizó para insertar automáticamente el certificado autofirmado del atacante en la lista de certificados confiables, lo que habilitó la ejecución del bootkit incluso en sistemas con Secure Boot activo.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.