El modo de gestión del sistema ( SMM , a veces llamado anillo -2 en referencia a los anillos de protección ) [1] [2] es un modo de funcionamiento de las unidades de procesador central (CPU) x86 en el que se suspende toda la ejecución normal, incluido el sistema operativo . Luego, se ejecuta un sistema de software alternativo que generalmente reside en el firmware de la computadora , o un depurador asistido por hardware , con altos privilegios.
Fue lanzado por primera vez con Intel 386SL . [3] Aunque inicialmente se requerían versiones SL especiales para SMM, Intel incorporó SMM en sus procesadores principales 486 y Pentium en 1993. AMD implementó el SMM de Intel con los procesadores Am386 en 1991. [4] Está disponible en todos los microprocesadores posteriores en el x86 arquitectura .
Algunos procesadores ARM también incluyen el modo de gestión, para el firmware del sistema (como UEFI ). [5]
Operación
SMM es un modo operativo de propósito especial que se proporciona para manejar funciones de todo el sistema, como administración de energía, control de hardware del sistema o código patentado diseñado por el OEM. Está diseñado para ser utilizado únicamente por el firmware del sistema ( BIOS o UEFI ), no por software de aplicaciones o software de sistemas de propósito general. El principal beneficio de SMM es que ofrece un entorno de procesador distinto y fácilmente aislado que funciona de forma transparente para el sistema operativo o las aplicaciones ejecutivas y de software.
Para lograr la transparencia, SMM impone ciertas reglas. El SMM solo se puede ingresar a través de SMI (Interrupción de administración del sistema). El procesador ejecuta el código SMM en un espacio de direcciones separado (SMRAM) que el firmware debe hacer inaccesible para otros modos operativos de la CPU . [6]
El modo de gestión del sistema puede abordar hasta 4 GB de memoria como modo real enorme . En procesadores x86-64 , SMM puede direccionar> 4GB de memoria como modo de dirección real. [7]
Uso
Inicialmente, el modo de administración del sistema se utilizó para implementar funciones de administración de energía y control de hardware, como administración avanzada de energía (APM). Sin embargo, los fabricantes de BIOS y los OEM han confiado en SMM para funciones más nuevas, como Configuración avanzada e interfaz de energía (ACPI). [8] [9]
Algunos usos del modo de gestión del sistema son:
- Manejar eventos del sistema como errores de memoria o chipset
- Administre las funciones de seguridad del sistema, como el apagado por alta temperatura de la CPU
- BIOS de administración del sistema (SMBIOS)
- Interfaz de energía y configuración avanzada
- Controle las operaciones de administración de energía , como administrar el módulo regulador de voltaje y LPCIO ( Super I / O o controlador integrado )
- Emule el mouse / teclado USB como mouse / teclado PS / 2 (a menudo denominado compatibilidad con USB heredado ) [10]
- Centralizar la configuración del sistema, como en equipos portátiles Toshiba e IBM / Lenovo
- Gestión del módulo de plataforma segura (TPM) [11]
- Programas de control de hardware específicos del BIOS, incluido el intercambio de conexiones USB y Thunderbolt en tiempo de ejecución del sistema operativo [12]
También se puede abusar del modo de administración del sistema para ejecutar rootkits con muchos privilegios , como se demostró en Black Hat 2008 [13] y 2015. [14]
Entrar en SMM
SMM se ingresa a través de SMI (interrupción de administración del sistema), que se invoca mediante:
- Señalización de hardware o chipset de la placa base a través de un pin designado SMI # del chip del procesador. [15] Esta señal puede ser un evento independiente.
- Software SMI activado por el software del sistema a través de un acceso de E / S a una ubicación considerada especial por la lógica de la placa base (el puerto 0B2h es común). [dieciséis]
- Una escritura de E / S en una ubicación en la que el firmware ha solicitado que actúe el chip del procesador.
Al ingresar SMM, el procesador busca la primera instrucción en la dirección SMBASE (contenido del registro SMBASE) + 8000H (por defecto 38000H), usando los registros CS = 3000H y EIP = 8000H. El valor del registro CS (3000H) se debe al uso de direcciones de memoria en modo real por parte del procesador cuando está en SMM. En este caso, el CS se adjunta internamente con 0H en su extremo más a la derecha.
Problemas
Por diseño, el sistema operativo no puede anular ni deshabilitar la SMI. Debido a este hecho, es un objetivo para que residan los rootkits maliciosos, [17] [18] incluidos los "implantes" de la NSA [19] que tienen nombres de código individuales para hardware específico, como SOUFFLETROUGH para los firewalls de Juniper Networks , [20] SCHOOLMONTANA para enrutadores de la serie J de la misma empresa, [21] DEITYBOUNCE para DELL, [22] o IRONCHEF para servidores HP Proliant . [23]
El código del BIOS SMM mal diseñado y probado de manera insuficiente puede hacer suposiciones incorrectas y no funcionar correctamente al interrumpir algunos otros modos operativos x86 como PAE o modo largo de 64 bits . [24] Según la documentación del kernel de Linux , alrededor de 2004, tales implementaciones con errores de la función de soporte heredado de USB eran una causa común de fallas, por ejemplo, en placas base basadas en el chipset Intel E7505 . [10]
Dado que el código SMM (controlador SMI) es instalado por el firmware del sistema ( BIOS ), el sistema operativo y el código SMM pueden tener expectativas sobre configuraciones de hardware que son incompatibles, como diferentes ideas sobre cómo debería ser el controlador de interrupciones programable avanzado (APIC). configurar.
Las operaciones en SMM le quitan tiempo de CPU a las aplicaciones, el kernel del sistema operativo y el hipervisor , con los efectos magnificados para los procesadores multinúcleo, ya que cada SMI hace que todos los núcleos cambien de modo. [25] También hay algunos gastos generales relacionados con el cambio de entrada y salida de SMM, ya que el estado de la CPU debe almacenarse en la memoria (SMRAM) y cualquier caché de escritura diferida debe vaciarse. Esto puede destruir el comportamiento en tiempo real y hacer que se pierdan los tics del reloj . Los kernels de Windows y Linux definen un 'Tiempo de espera de SMI' que establece un período dentro del cual los controladores de SMM deben devolver el control al sistema operativo o se ' bloqueará ' o ' bloqueará '.
El SMM puede interrumpir el comportamiento de las aplicaciones en tiempo real con requisitos de tiempo restringidos.
Es posible que se requiera un analizador lógico para determinar si la CPU ha entrado en SMM (estado de verificación de SMIACT # pin de la CPU). [15] Recuperar el código del controlador SMI para analizarlo en busca de errores, vulnerabilidades y secretos requiere un analizador lógico o el desmontaje del firmware del sistema.
Ver también
- Coreboot : incluye una implementación de controlador SMM / SMI de código abierto, para algunos conjuntos de chips
- Intel 80486SL
- CARGAR TODO
- MediaGX : un procesador que emula hardware inexistente a través de SMM
- Anillo -3
- Interfaz de firmware extensible unificada (UEFI)
- Sistema básico de entrada / salida (BIOS)
Referencias
- ↑ Domas, Christopher (20 de julio de 2015). "El sumidero de la memoria" (PDF) . Sombrero negro . Consultado el 22 de agosto de 2015 .
- ^ Tereshkin, Alexander y Wojtczuk, Rafal (29 de julio de 2009). "Presentación de Ring -3 Rootkits" (PDF) . Laboratorio de cosas invisibles , Black Hat USA . pag. 4 . Consultado el 22 de agosto de 2015 .Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
- ^ "Los SMI son EEEEVIL (Parte 1)" . msdn.com . Microsoft.
- ^ "Hoja de datos de AMD Am386SX / SXL / SXLV" (PDF) . AMD.
- ^ https://documentation-service.arm.com/static/5ed11e40ca06a95ce53f905c?token=
- ^ "Manual del desarrollador de arquitecturas Intel 64 e IA-32: Vol. 3B" (PDF) . Intel .
- ^ Manual de desarrollo de software Intel 64 e IA-32, vol. 3, modo de gestión del sistema
- ^ "Los SMI son EEEEVIL (Parte 2)" . msdn.com . Microsoft.
- ^ "Modo de gestión del sistema - OSDev Wiki" . wiki.osdev.org . Consultado el 12 de septiembre de 2020 .
- ^ a b Vojtech Pavlik (enero de 2004). "Documentación del kernel de Linux: compatibilidad con USB Legacy" . kernel.org . Consultado el 6 de octubre de 2013 .
- ^ Charlas de tecnología de Google - Coreboot - 00:34:30
- ^ Especificación de inicialización de la plataforma UEFI
- ^ Robert McMillan (10 de mayo de 2008). "Los piratas informáticos encuentran un nuevo lugar para ocultar rootkits" . InfoWorld .
- ^ Rob Williams (7 de agosto de 2015). "Los investigadores descubren la explotación de Rootkit en procesadores Intel que se remonta a 1997" . HotHardware.com .
- ^ a b Modo de administración del sistema de Intel por Robert R. Collins
- ^ US 5963738 - Sistema informático para la configuración del sistema de lectura / escritura mediante instrucciones de E / S
- ^ Shawn Embleton; Sherri Sparks; Cliff Zou (septiembre de 2008). "SMM Rootkits: una nueva generación de software malicioso independiente del sistema operativo" (PDF) . ACM . Consultado el 6 de octubre de 2013 .
- ^ "Los piratas informáticos encuentran un nuevo lugar para ocultar rootkits" . Mundo PC. 2008-05-09 . Consultado el 6 de octubre de 2013 .
- ^ ¡Fuente n. ° 1 de filtraciones en todo el mundo! (30 de diciembre de 2013). "Catálogo de exploits de la división ANT de la NSA para casi todos los principales software / hardware / firmware | LeakSource" . Leaksource.wordpress.com . Consultado el 13 de enero de 2014 .
- ^ "Schneier sobre seguridad: SOUFFLETROUGH: Exploit de la NSA del día" . Schneier.com. 2013-12-30 . Consultado el 13 de enero de 2014 .
- ^ "Schneier sobre seguridad: SCHOOLMONTANA: Hazaña de la NSA del día" . Schneier.com. 2008-05-30 . Consultado el 16 de enero de 2014 .
- ^ "Schneier sobre seguridad" . schneier.com .
- ^ "Schneier sobre seguridad: IRONCHEF: NSA Exploit of the Day" . Schneier.com. 2014-01-03 . Consultado el 13 de enero de 2014 .
- ^ http://images0.cnitblog.com/cnitblog_com/yuhensong/mode.JPG
- ^ Brian Delgado y Karen L. Karavanic, "Implicaciones de rendimiento del modo de gestión del sistema", Simposio internacional de IEEE 2013 sobre caracterización de cargas de trabajo, 22-24 de septiembre, Portland, Estados Unidos.
Otras lecturas
- Patente de EE. UU . 5175853 , "Interrupción transparente del sistema", publicada el 29 de diciembre de 1992, expedida el 29 de diciembre de 1992, asignada a Intel Corporation
- Guía para desarrolladores de kernel y BIOS AMD Hammer , capítulo 6 (archivado desde el original el 7 de diciembre de 2008)
- Manual del desarrollador de arquitecturas Intel 64 e IA-32, volumen 3C , capítulo 34