El uso de listas blancas para mejorar la seguridad del Firmware
El firmware se ha vuelto más popular en el mundo de la investigación de seguridad informática. Los ataques que operan a nivel de firmware pueden ser difíciles de descubrir y tienen el potencial de persistir incluso en escenarios de recuperación de metal desnudo. Este tipo de hackeo ha sido bien documentado por las investigaciones de HackingTeam y Vault7 exploits.
Afortunadamente, existen métodos para detectar y defenderse de tales ataques. Los ataques basados en firmware suelen intentar agregar o modificar módulos de firmware del sistema almacenados en NVRAM. Las herramientas proporcionadas por el proyecto CHIPSEC de código abierto se pueden usar para generar y verificar hashes de estos módulos, para que los usuarios puedan detectar cambios no autorizados.
CHISPEC, presentado en marzo de 2014, es un marco para analizar la seguridad a nivel de plataforma del hardware, los dispositivos, el firmware del sistema, los mecanismos de protección de bajo nivel y la configuración de varios componentes de la plataforma. Contiene un conjunto de módulos, que incluyen pruebas simples de protecciones de hardware y configuración correcta, pruebas de vulnerabilidades en componentes de firmware y plataforma, evaluación de seguridad y herramientas de fuzzing para varios dispositivos e interfaces de plataforma, y herramientas para adquirir firmware crítico y artefactos de dispositivo.
El módulo de lista blanca (herramientas.uefi.lista blanca) utiliza CHIPSEC para extraer una lista de ejecutables EFI de una imagen de firmware binario, y crea una lista de ejecutables” esperados”y los hashes correspondientes (.Archivo JSON) que se utilizará más adelante para la comparación. La documentación está disponible como parte del código fuente del módulo en github y en el manual de CHIPSEC.
El proceso asume que está comenzando a partir de una “imagen de firmware buena conocida”, preferiblemente una versión de producción del firmware proporcionada por el fabricante, y que ha utilizado CHIPSEC para buscar problemas conocidos antes de incluir accidentalmente en la lista blanca algo desagradable. Este ejemplo utiliza el firmware UEFI de código abierto para MinnowBoard Rodaballo (versión 0.97), para una mejor visibilidad del proceso.
La siguiente línea de comandos CHIPSEC crea una lista blanca llamada efilist.json basado en una “buena imagen conocida” (platform_fw.bin):
python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin
La aplicación de este proceso a las imágenes de “liberación” y “depuración” x64 del firmware de MinnowBoard Rodaballo 0.97 produce las siguientes listas blancas:
- MNW2MAX1.X64. 0097.D01. 1709211100.bin (firmware UEFI x64, modo de depuración) – X64D97_whitelist.json
- MNW2MAX1.X64. 0097.R01. 1709211052.bin (firmware UEFI x64, modo de lanzamiento) – X64R97_whitelist.json
(ejercicio para el lector: descargue las imágenes del firmware, ejecute CHIPSEC, vea si su lista blanca coincide)
Es importante tener en cuenta que el archivo de lista blanca JSON resultante no es solo un hash del archivo binario, sino que contiene hash de los módulos ejecutables de la imagen del firmware. CHIPSEC tiene la capacidad de escanear y catalogar componentes de firmware individuales, que se pueden usar para incluir en listas blancas o negras ejecutables específicos.
Publicar listas blancas
Si fuera un fabricante de sistemas, podría publicar estas listas blancas para la verificación del cliente. Sin embargo, es mejor firmar archivos con fines de verificación. Para asegurarse de que la lista blanca obtenida por un usuario final es la lista blanca oficial, se puede firmar con GPG utilizando una firma separada:
gpg –detach-sign <file>
Además, los usuarios deben autenticar certificados para un nombre de dominio bien conocido para el fabricante del sistema cuando se entregan a través de HTTPS. También es recomendable que las organizaciones de TI firmen listas blancas generadas internamente para evitar que se utilicen listas no autorizadas en las auditorías.
Comprobación de listas blancas
Si hay disponible una firma separada, GPG se puede usar para verificar el archivo de lista blanca:
gpg –verify <file>
Una vez que se ha verificado la autenticidad de la lista blanca, el usuario necesita tomar una imagen del firmware de la plataforma utilizando CHIPSEC. Esta línea de comandos usó el comando ‘dump’ para generar user_fw.bin:
python chipsec_util.py spi dump user_fw.bin
Ahora se puede usar CHIPSEC para verificar la imagen del firmware de la plataforma con la lista blanca asociada. Este ejemplo se compararía con la imagen “release” de x64 para Rodaballo de tabla de Minnow 0.97:
python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin
En este punto, CHIPSEC devolverá un estado” APROBADO “o” ADVERTENCIA”. Si la prueba devuelve “APROBADO”, todos los hashes se encontraron en la lista blanca y coinciden con los valores esperados. Si la prueba devuelve “ADVERTENCIA”, entonces algo es diferente. Tenga en cuenta que una “ADVERTENCIA” contra no indica inmediatamente una amenaza para la seguridad (por ejemplo, el usuario puede haber actualizado el firmware más reciente del fabricante), pero requiere investigación para asegurarse de que la imagen de firmware alterada no se deba a un intento de ataque.
Limitaciones
El uso de herramientas como CHIPSEC puede mejorar la seguridad, pero ningún sistema puede ser absolutamente seguro, y estos procedimientos no pueden defenderse contra todos los posibles ataques. Hay una serie de limitaciones a tener en cuenta al interpretar los resultados de la lista blanca:
- Puede haber métodos de empaquetado de imágenes personalizados o propietarios que CHIPSEC no entienda. Esto podría resultar en la exclusión de algunos módulos, por lo que los cambios correspondientes pueden perderse durante una comparación de lista blanca.
- El software que se ejecuta en un sistema ya comprometido puede engañarse. Si un sistema ya está comprometido, es posible que CHIPSEC y software similar no produzcan indicadores fiables.
Resumen
La capacidad de CHIPSEC para generar listas blancas proporciona un método para validar la cadena de suministro de firmware. Los fabricantes pueden aprovechar estas herramientas para ayudar a los usuarios a verificar las versiones oficiales de firmware, y los administradores de TI pueden generar listas blancas para auditorías internas basadas en imágenes de confianza.