La seguridad de UEFI (que en español significa Interfaz de Firmware Extensible Unificada) ha sido un tema candente en los últimos años, pero debido a varias limitaciones, se ha encontrado muy poco malware basado en UEFI en el pasado. Después de haber descubierto a Lojax, el primer rootkit UEFI siendo utilizado en una campaña, nos propusimos construir un sistema que nos permitiera explorar el vasto escenario UEFI de una manera eficiente, para así poder detectar de manera confiable las amenazas emergentes de UEFI.
Utilizando la telemetría recopilada por el escáner UEFI de ESET como punto de partida, ideamos un pipeline de procesamiento personalizado para los ejecutables UEFI que aprovecha el aprendizaje automático para detectar comportamientos extraños entre las muestras entrantes. Este sistema, además de lograr demostrar sus fuertes capacidades para identificar ejecutables UEFI sospechosos, ofrece monitoreo en tiempo real del panorama UEFI, y se descubrió que reduce la carga de trabajo de nuestros analistas hasta en un 90 por ciento.
Mediante la búsqueda de amenazas dirigidas a UEFI utilizando nuestro pipeline de procesamiento, descubrimos múltiples componentes UEFI interesantes que dividimos en dos categorías: backdoors de firmware UEFI y módulos de persistencia a nivel de sistema operativo. El más notable de nuestros descubrimientos es el denominado backdoor ASUS, un backdoor de firmware UEFI que se encuentra en varios modelos de computadoras portátiles ASUS y que fue remediado por ASUS después de nuestra notificación.
¿Qué es UEFI?
UEFI es una especificación que define a la interfaz que existe entre el sistema operativo y el firmware del dispositivo. Define un conjunto de servicios estandarizados, llamados "servicios de arranque” y "servicios runtime", que son las APIs principales disponibles en el firmware UEFI. En este sentido, UEFI es un sucesor de la interfaz del firmware heredada del BIOS (que en inglés significa Sistema Básico de Entrada/Salida), presentado para abordar las limitaciones técnicas del BIOS.
El firmware UEFI se almacena en la memoria flash SPI, que es un chip soldado en la motherboard del sistema. Por lo tanto, reinstalar el sistema operativo o reemplazar el disco rígido no afecta el código del firmware. El firmware UEFI es muy modular: generalmente contiene docenas, si no cientos, de diferentes ejecutables/controladores.
UEFI como vector de ataque
Hay varias formas en que se puede modificar el firmware y comprometer la seguridad de la computadora afectada.
La primera opción, y la más común, es la modificación del firmware por parte del fabricante de la computadora para permitir el diagnóstico o servicio remoto, que, si se implementa incorrectamente, puede servir como backdoor. Otra opción es el flasheo malicioso mediante manipulación manual, cuando el atacante tiene acceso físico al dispositivo afectado. La tercera opción: ataques remotos utilizando malware capaz de modificar el firmware.
Esta tercera opción se documentó en nuestra investigación sobre LoJax, el primer rootkit UEFI que se detectó en actividad. En una campaña dirigida a organizaciones gubernamentales en los Balcanes, así como en Europa Central y Oriental, el grupo de APT Sednit implementó con éxito un módulo UEFI malicioso en el sistema de una víctima. Este módulo puede colocar y ejecutar malware en el disco durante el proceso de arranque, un método de persistencia particularmente invasivo que no solo sobrevivirá a la reinstalación del sistema operativo, sino también a un reemplazo del disco rígido.
Un método de aprendizaje automático para explorar el paisaje UEFI
Encontrar malware como LoJax es raro: hay millones de ejecutables UEFI en uso de manera activa y solo una pequeña parte de ellos son maliciosos. Hemos visto más de 2.5 millones de ejecutables UEFI únicos (de un total de seis mil millones) solo en los últimos dos años. Dado que no es factible analizar cada uno de forma manual, necesitamos crear un sistema automatizado para reducir el número de muestras que requieren de la atención humana. Para abordar este problema, decidimos construir un sistema adaptado para resaltar muestras atípicas al encontrar características inusuales en ejecutables UEFI.
En nuestra investigación, examinamos y comparamos múltiples enfoques de cada parte del proceso, desde la extracción de características, el embebido de texto, el embebido de datos multidimensionales hasta el almacenamiento eficiente y la consulta de muestras cercanas para generar un algoritmo de puntuación final; todo mientras consideramos el rendimiento y la capacidad de tiempo real de las técnicas elegidas. Una vez que establecimos un método eficiente para recuperar los vecinos más cercanos a cualquier binario UEFI entrante, configuramos un sistema para asignar puntajes de similitud en el rango de cero a uno a los ejecutables entrantes, comparándolos con los archivos vistos anteriormente. Los archivos con el puntaje de similitud más bajo son inspeccionados con la máxima prioridad por un analista.
Como prueba de concepto, probamos el sistema resultante en ejecutables UEFI sospechosos y maliciosos ya conocidos que no se incluyeron previamente en nuestro conjunto de datos, especialmente el controlador LoJax UEFI. El sistema concluyó con éxito que el controlador LoJax era muy diferente a todo lo que habíamos visto antes, asignándole un puntaje de similitud de 0.
Esta prueba exitosa nos da un grado de confianza de que, si surgiera otra amenaza UEFI similar, podríamos identificarla como una rareza, analizarla rápidamente y crear una detección según sea necesario. Además de esto, nuestro enfoque basado en machine learning puede reducir la carga de trabajo de nuestros analistas hasta en un 90% (si analizaran cada muestra entrante). Finalmente, gracias al hecho de que cada nuevo ejecutable UEFI entrante se agrega al conjunto de datos, se procesa, se indexa y se toma en consideración para las próximas muestras entrantes, nuestra solución ofrece monitoreo en tiempo real del paisaje UEFI.
Una búsqueda de componentes UEFI no deseados
Después de probar nuestro pipeline de procesamiento en muestras maliciosas conocidas, era hora de comenzar a buscar módulos UEFI no deseados que estén activos. Los componentes interesantes que encontramos se pueden agrupar en dos categorías: backdoors de firmware UEFI y módulos de persistencia a nivel de sistema operativo.
Backdoors de firmware UEFI
Entonces, ¿qué son los backdoors de firmware UEFI? En la mayoría de las configuraciones de firmware UEFI hay opciones disponibles para proteger con contraseña el sistema de un acceso no autorizado durante las primeras etapas del proceso de arranque. Las opciones más comunes permiten configurar contraseñas para proteger el acceso a la configuración del firmware UEFI y así evitar que el sistema arranque y se pueda acceder al disco. Dicho esto, los backdoors de firmware UEFI son mecanismos que permiten eludir estas protecciones sin conocer la contraseña configurada por el usuario.
Si bien estos backdoors de firmware UEFI son muy comunes, se utilizan principalmente como un mecanismo de recuperación en caso de que el propietario de la computadora olvide la contraseña; es decir que tienen una serie de implicaciones de seguridad. Además de permitir a los atacantes con acceso físico a la computadora afectada eludir varios mecanismos de seguridad, también crean una falsa sensación de seguridad en los usuarios que no los conocen y pueden creer que sus computadoras no se pueden iniciar por cualquiera que no posea la contraseña.
El backdoor de firmware UEFI más frecuente que analizamos es el llamado backdoor ASUS. Nuestra investigación confirmó que al menos seis modelos de computadoras portátiles ASUS salieron al mercado con el backdoor. Sin embargo, el número probablemente sea mucho mayor (verificar la presencia en cada modelo de computadora portátil ASUS estaba fuera del alcance de nuestra investigación). Después de nuestra notificación a ASUS por el backdoor en abril de 2019, el fabricante eliminó el problema y lanzó actualizaciones del firmware el 14 de 2019.
Módulos de persistencia a nivel del sistema operativo
El resto de nuestros hallazgos son módulos de persistencia a nivel del sistema operativo: componentes de firmware responsables de instalar el software a nivel del sistema operativo. Con estos módulos de persistencia, el principal problema de seguridad es que, debido a lo naturalmente complicado que resulta hacer llegar las actualizaciones de firmware, una computadora que salió al mercado con un componente de firmware vulnerable probablemente seguirá siendo vulnerable durante toda su vida útil. Por esta razón, creemos que la persistencia del firmware debe evitarse tanto como sea posible y limitarse a casos donde sea estrictamente necesario, como es el caso de las soluciones antirrobo.
Para obtener más información sobre nuestra investigación, consulte el documento completo: A machine-learning method to explore the UEFI landscape.