
El principio de "
seguridad a través de la oscuridad " ha sido criticado por expertos durante varios años, pero esto no impide que los grandes fabricantes de productos electrónicos pretendan proteger la propiedad intelectual para exigir la firma de acuerdos de confidencialidad para recibir documentación técnica. La situación se está deteriorando debido a la creciente complejidad de los microcircuitos y la integración de varios firmware patentados en ellos. En realidad, esto hace imposible analizar dichas plataformas para investigadores independientes, lo que pone en riesgo tanto a los usuarios comunes como a los fabricantes de equipos.
Un ejemplo es la tecnología Intel Management Engine (Intel ME), así como sus versiones para servidores (Intel SPS) y plataformas móviles (Intel TXE) (para más detalles sobre esta tecnología, consulte
[5] ,
[6] . En este artículo le diremos cómo usar comandos no documentados (si el término "documentado" es generalmente aplicable a Intel ME), puede sobrescribir la memoria flash SPI e implementar el peor escenario: explotación local de una vulnerabilidad en ME (INTEL-SA-00086). La raíz de este problema fue el modo de operación no documentado de Intel ME - Modo de fabricación.
¿Qué es el modo de fabricación?
Modo de fabricación Intel ME: modo de operación de servicio diseñado para configurar, configurar y probar la plataforma final en la etapa de producción; debe apagarse antes de que el equipo salga a la venta y enviarse al usuario. Ni este modo ni sus riesgos potenciales se describen en la documentación pública de Intel. Un usuario común no puede apagarlo solo, ya que la utilidad para administrarlo desde el paquete Intel ME System Tools no está oficialmente disponible. Tenga en cuenta que ninguna protección de software puede proteger al usuario si este modo está activado, o al menos notificarlo al respecto. Incluso la utilidad Chipsec
[2] , que está específicamente diseñada para detectar errores de configuración de chipset y procesador en el nivel de firmware UEFI (en particular, configuración incorrecta de derechos de acceso a regiones flash SPI), no sabe nada sobre el modo de fabricación Intel.
Este modo le permite establecer parámetros críticos de la plataforma almacenados en la memoria de escritura única (FUSIBLES). Un ejemplo de dichos parámetros que están "cableados" en FUSES son los parámetros de BootGuard (modo, políticas, suma de comprobación de clave de firma digital para módulos ACM y UEFI). Algunos de ellos se llaman FPF (fusibles programables de campo). La lista de FPF que se puede escribir en FUSES (incompleta, de hecho, una cantidad de FPF no se puede configurar directamente) se puede obtener a través de la utilidad FPT (Herramienta de programación Flash) del paquete Intel ME System Tools.
Fig 1. El resultado de la opción –FPFs de la utilidad FPTCabe señalar que los FPF representan solo una parte de la matriz FUSE total, y la mayor parte de esta memoria es utilizada por Intel para almacenar muchos parámetros de la plataforma. Por ejemplo, parte del espacio de esta matriz se llama Fusibles IP y está destinado a almacenar los parámetros de configuración de módulos de hardware individuales (Propiedad inteligente). Entonces, el dispositivo especial DFx Aggregator almacena en FUSE una señal de si la plataforma es serial o de prueba.
Además de FPF, en el modo de fabricación, el fabricante del equipo tiene la capacidad de establecer los parámetros de firmware de Intel ME, que se almacenan en el sistema de archivos de firmware interno - MFS, en medios flash SPI. Estos parámetros se pueden cambiar en caso de reprogramación del flash SPI. Se llaman CVAR (NVAR configurables, variables con nombre).
Para instalar CVAR, el módulo de firmware Intel ME, mca_server, es responsable. MCA es la abreviatura de Architecture-Line Configuration Architecture, el nombre común para el proceso de configuración de la plataforma durante la fase de fabricación. Los CVAR, como los FPF, se pueden definir y leer utilizando FPT.
Figura 2. Lista de resultados de CVAR por la utilidad FPT para la plataforma Broxton PLa lista de CVAR varía según la plataforma y la versión de firmware de Intel ME. Para los conjuntos de chips que admiten la tecnología Intel AMT, una de estas variables es la contraseña para ingresar a MEBx (ME BIOS Extension).
La instalación de FPF y casi todas las variables CVAR solo es posible si el firmware Intel ME funciona en modo de fabricación. El proceso de instalación de FPF en sí se divide en dos etapas: configuración de FPF (que se almacenan en la memoria temporal) y transferencia de FPF a una matriz de fusibles. Al mismo tiempo, la primera etapa solo es posible en el modo Manufitting, y la "quema" real ocurre automáticamente después de abandonar el modo de fabricación, si durante la operación en este modo el fabricante establece los valores de FPF y al mismo tiempo el rango correspondiente nunca se ha registrado en la matriz de fusión. Por lo tanto, si el sistema funciona en modo Fabricación, las variables FPF probablemente no se inicializarán.
Una señal de deshabilitación del modo de fabricación se almacena en el archivo / home / mca / eom en MFS, por lo tanto, al reescribir SPI flash con firmware con el sistema de archivos base (para más detalles, consulte
[9] ), la plataforma puede funcionar nuevamente en el modo de fabricación (pero no será posible sobrescribir FUSES) .
Clave pública OEM
Por lo tanto, el procedimiento para configurar las plataformas Intel es bastante complejo y consta de varias etapas. Si el fabricante del equipo ha violado o cambiado la secuencia, la plataforma está en grave riesgo. Incluso si se completara el Modo de fabricación, el fabricante no podría escribir FUSOS, lo que permitiría a un atacante hacerlo por él, anotando sus valores en lugar de la clave para firmar el código de arranque de los módulos BootGuard (ACM) y UEFI y, por lo tanto, permitiendo que la plataforma arranque solo con su código malicioso, además de forma continua. Esto conducirá a una pérdida irrecuperable de equipo, ya que la clave fraudulenta se registrará en la memoria permanente, para siempre (los detalles de este ataque se pueden encontrar en el estudio de Protección de rootkits: Intel BootGuard por Alexander Ermolov
[8] ).
En los nuevos sistemas (Apollo Lake, Gemini Lake, Cannon Point) en FPF no solo se almacena la clave para BootGuard, sino también la clave pública OEM (o más bien, SHA-256 de la clave pública RSA OEM), en la que se basan varios mecanismos de protección ME. Por ejemplo, una sección especial de flash SPI llamada Perfil de imagen maestra firmada (SMIP) almacena las correas PCH específicas del fabricante (configuración de hardware PCH). Esta sección está firmada en una clave, SHA-256 desde la cual se coloca en un archivo especial en flash SPI. Este archivo se llama oem.key, ubicado en la sección FTPR y contiene varias claves públicas proporcionadas por OEM para firmar una variedad de datos. Aquí está la lista completa de conjuntos de datos firmados por el fabricante, cada uno en una clave única, para la plataforma Cannon Point:
Figura 3. Lista de datos firmados de la plataforma CNP OEMEl archivo oem.key en sí mismo está firmado por la clave raíz compartida OEM, cuya cantidad hash debe registrarse en FPF.
Figura 4. Firma OEMOmitir bloqueo de escritura en la región ME
Hasta hace poco (antes de Intel Apollo Lake), el firmware de Intel ME estaba en una región SPI separada, que tenía derechos de acceso independientes para CPU, GBE y ME. Por lo tanto, con la configuración correcta de los atributos de acceso por parte de la CPU (sistema principal), no fue posible leer ni escribir el firmware ME. Sin embargo, los modernos controladores de chipset SPI de Intel tienen un mecanismo especial Master Grant. Esta tecnología asigna a cada maestro SPI una parte estrictamente definida del flash SPI, este maestro posee su región, independientemente de los derechos de acceso especificados en el descriptor SPI. Cada maestro tiene la oportunidad de proporcionar acceso (para leer o escribir) a su (y solo a su) región a otro maestro, como lo desee.
Figura 5. Extracto de la documentación de Intel que describe el SPI Master GrantPor lo tanto, incluso si el host especifica una prohibición de acceso a la región ME SPI desde el host, ME aún puede proporcionar acceso a sus datos. En nuestra opinión, esto se hizo para permitir la actualización del firmware de Intel ME sin pasar por el algoritmo estándar.
Anulación de protección de flash de la región de host ME
En el firmware Intel ME, se implementa un comando HECI especial, que le permite abrir el acceso de escritura a la región SPI ME desde la CPU. Se llama HMR FPO (Anulación de protección de flash de la región host ME). En uno de nuestros estudios anteriores, describimos este comando en detalle [5]. Ella tiene varias características.
Después de recibir el comando HMR FPO, el firmware abrirá el acceso a su región
solo después de un reinicio. El ME también proporciona protección: el comando solo se acepta durante el período de ejecución del BIOS UEFI, hasta el llamado momento de fin de publicación (EOP). EOP es otro comando HECI que el BIOS UEFI envía antes de transferir el control al sistema operativo (ExitBootServices). En algunas configuraciones de BIOS, puede encontrar una opción que permite enviar el comando HMRFPO al EOP.
Figura 6. Apertura de la región ME en el BIOSDespués de recibir el EOP, el firmware ME ignora el HMR FPO y devuelve el estado correspondiente.
Pero esto solo ocurre después de completar el modo de fabricación . Por lo tanto, el firmware ME en modo de fabricación acepta HMR FPO
en cualquier momento, independientemente del final de la publicación . Si el fabricante no ha cerrado el Modo de fabricación, un atacante (formalmente, esto requiere derechos de administrador, pero incluso el núcleo del sistema operativo no puede sobrescribir inicialmente el firmware de ME) puede cambiar el firmware de ME en cualquier momento. En esta etapa, el atacante puede sobrescribir la imagen ME, por ejemplo, para explotar la vulnerabilidad INTEL-SA-00086. Esto plantea la necesidad de reiniciar, pero esto no es un obstáculo en casi todas las plataformas, excepto en el MacBook. Es
en las computadoras Apple que hay una verificación adicional en UEFI, que se lleva a cabo en el momento del inicio y bloquea el inicio del sistema si la región ME se abre usando HMRFPO. Sin embargo, como mostraremos más adelante, este mecanismo de protección se vence si el firmware ME funciona en modo de fabricación.
Reiniciar ME sin reiniciar la CPU principal
En las computadoras modernas, hay varias opciones para reiniciar la plataforma. Entre ellos están documentados: reinicio global y reinicio solo de la CPU principal (sin reiniciar ME). Sin embargo, si hay una manera de reiniciar el ME
sin reiniciar la CPU principal (después de ejecutar también el comando HMRFPO), se abrirá el acceso a la región y el sistema principal continuará funcionando.
Figura 7. Reinicie el control de tipoExaminando los módulos internos del firmware ME, encontramos que hay un comando HECI (
“80 06 00 07 00 00 0b 00 00 00 03 00” , para obtener más detalles sobre el envío de comandos, consulte [
5 ]) para reiniciar solo (!) El núcleo Intel ME, que en el modo de fabricación también se puede enviar en cualquier momento, incluso después de EOP.
Figura 8. Lista de desensamblador de una función que procesa comandos de recarga ME HECIPor lo tanto, el atacante, después de haber enviado estos dos comandos HECI, abre la región ME y puede escribir cualquier dato allí sin reiniciar la plataforma . En este caso, no importa lo que contenga el descriptor SPI, es decir, los atributos de protección correctos de las regiones SPI no protegen el cambio del firmware ME si el sistema funciona en modo de fabricación.
Analizamos varias plataformas de diferentes fabricantes. Entre ellos estaban las laptops Lenovo y la Apple MacBook Pr®. En las computadoras examinadas de la línea Yoga y ThinkPad, no encontramos ningún problema asociado con el Modo de fabricación, pero las
computadoras portátiles Apple basadas en chipsets Intel funcionan en el Modo de fabricación . Después de transferir esta información a Apple, este error (CVE-2018-4251) se corrigió en la actualización del sistema operativo macOS High Sierra 10.13.5.
Operación local INTEL-SA-00086
Entonces, utilizando la vulnerabilidad CVE-2018-4251, un atacante podría escribir versiones antiguas de firmware ME que contengan la vulnerabilidad INTEL-SA-00086, y al mismo tiempo no necesitaba un programador SPI o acceso al puente HDA_SDO (es decir, acceso físico). Por lo tanto, se realiza el vector más peligroso - local - de esta vulnerabilidad (la ejecución de código arbitrario en el firmware ME). Es de destacar que en las explicaciones del boletín de seguridad INTEL-SA-00086, Intel no menciona el modo de fabricación abierto como un medio para explotar esta vulnerabilidad localmente, sin acceso físico, pero solo dice que la explotación local es posible solo si el acceso a las regiones SPI está configurado incorrectamente Eso no es cierto. Para proteger a los usuarios, decidimos describir cómo verificar la disponibilidad del Modo de fabricación y cómo deshabilitarlo.
Cómo protegerte
El paquete de utilidades del sistema para desarrolladores de equipos basados en conjuntos de chips y procesadores Intel (Intel System Tools) incluye la utilidad MEInfo (TXEInfo, SPSInfo para plataformas móviles y de servidor, respectivamente), que está diseñada para recibir información de diagnóstico avanzada sobre el estado actual del firmware del motor de gestión y toda la plataforma en su conjunto. Demostramos esta utilidad en uno de nuestros estudios anteriores sobre la desactivación de ME y el modo HAP indocumentado (plataforma de alta seguridad) [
6 ]. Esta utilidad, llamada con el indicador –FWSTS, proporciona una descripción detallada de los registros de estado HECI e informa el estado del modo de fabricación (el 4º bit del registro de estado FWSTS está configurado para indicar que el modo de fabricación está activo).
Figura 9. Ejemplo de salida de la utilidad MEInfoTambién desarrollamos un programa [
7 ], con el que puede verificar el estado del modo de fabricación si el usuario no tiene acceso a las herramientas del sistema Intel ME por algún motivo.
Figura 10. Un ejemplo del script mmdetectSurge la pregunta, cómo completar de forma independiente el Modo de fabricación, si resulta que el fabricante no hizo esto. Para completar el Modo de fabricación, la utilidad FPT tiene una opción especial, CLOSEMNF, que, además de su propósito principal, también le permite establecer los derechos de acceso recomendados a las regiones flash SPI en el descriptor.
Figura 11. Resultado de la utilidad FTP con la opción –CLOSEMNFEn este ejemplo, utilizamos el parámetro NO de la opción –CLOSEMNF para no reiniciar la plataforma, que se realiza de forma predeterminada inmediatamente después de completar el Modo de fabricación.
Conclusión
Nuestra investigación muestra que existe el problema del modo de fabricación de firmware Intel ME, e incluso los grandes fabricantes como Apple son capaces de cometer errores al configurar las plataformas Intel. Lo peor de todo es que no hay información pública sobre este tema y los usuarios finales ni siquiera son conscientes de un problema tan grave que podría conducir a la pérdida de información confidencial, la aparición de rootkits inamovibles y el desmantelamiento irrevocable de los equipos.
Además, sospechamos que la capacidad de reiniciar ME sin reiniciar la CPU principal puede provocar otros problemas de seguridad debido a la falta de sincronización de los estados BIOS / UEFI y ME.
Autores: Mark Ermolov y Maxim Goryachiy
[1]
Actualización crítica de firmware de Intel Management Engine, Intel-SA-00086[2]
GitHub - chipsec / chipsec: Framework Security Assessment Framework[4]
Firmware OpenSource rápido, seguro y flexible, Coreboot[5]
Mark Ermolov, Maxim Goryachy, Cómo convertirse en el único propietario de su PC, PHDays VI, 2016[6]
Mark Ermolov, Maxim Goryachy, Deshabilitar Intel ME 11 a través de modo no documentado, blog de Tecnologías positivas[7]
Herramientas de detección de modo de fabricación Intel ME[8]
Alexander Ermolov, Protección de rootkits: Intel BootGuard[9]
Dmitry Sklyarov, Intel ME: Sistema de archivos Flash. Explicado