El modo de administració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 centrales de procesamiento (CPU) x86 en el que se suspende toda la ejecución normal, incluido el sistema operativo . Un sistema de software alternativo, que generalmente reside en el firmware del ordenador o en un depurador asistido por hardware , se ejecuta entonces con altos privilegios.
Se lanzó por primera vez con el Intel 386SL . [ 3 ] [ 4 ] Si bien 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. [ 5 ] Está disponible en todos los microprocesadores posteriores en la arquitectura x86 . [ 6 ]
En la arquitectura ARM, el modo de Nivel de Excepción 3 (EL3) también se conoce como Modo de Monitor Seguro o Modo de Administración del Sistema. [ 7 ]
Operación
SMM es un modo de funcionamiento especial diseñado para gestionar funciones del sistema, como la administración de energía, el control del hardware o el código propietario diseñado por el fabricante. Está destinado únicamente al firmware del sistema ( BIOS o UEFI ), no al software de aplicaciones ni al software de sistemas de propósito general. La principal ventaja de SMM es que ofrece un entorno de procesador distinto y fácilmente aislable que funciona de forma transparente para el sistema operativo y las aplicaciones de software.
Para lograr transparencia, SMM impone ciertas reglas. Solo se puede acceder a SMM mediante SMI (Interrupción de administración del sistema). El procesador ejecuta el código SMM en un espacio de direcciones separado (SMRAM) que debe ser inaccesible para otros modos de operación de la CPU mediante el firmware . [ 8 ]
El modo de administración del sistema puede direccionar hasta 4 GB de memoria como modo real grande . En los procesadores x86-64 , SMM puede direccionar > 4 GB de memoria como modo de dirección real. [ 9 ]
Uso
Inicialmente, el Modo de administración del sistema se utilizaba para implementar funciones de administración de energía y control de hardware como la Administración avanzada de energía (APM). Sin embargo, los fabricantes de BIOS y los OEM han confiado en SMM para funcionalidades más recientes como la Interfaz avanzada de configuración y energía (ACPI). [ 10 ] [ 11 ]
Algunos usos del modo de administración del sistema son:
- Gestionar eventos del sistema como errores de memoria o del chipset.
- Gestionar las funciones de seguridad del sistema, como el apagado por alta temperatura de la CPU.
- BIOS de administración del sistema (SMBIOS)
- Interfaz avanzada de configuración y alimentación
- Controlar las operaciones de administración de energía , como la administración del módulo regulador de voltaje y el LPCIO ( super E/S o controlador integrado ).
- Emular ratón/teclado USB como ratón/teclado PS/2 (a menudo denominado compatibilidad con USB heredado ) [ 12 ]
- Centralizar la configuración del sistema, como en los ordenadores portátiles Toshiba e IBM/Lenovo.
- Gestión del Módulo de Plataforma Segura (TPM) [ 13 ]
- Programas de control de hardware específicos de la BIOS, incluyendo intercambio en caliente USB e intercambio en caliente Thunderbolt en tiempo de ejecución del sistema operativo [ 14 ]
- Las funciones de seguridad basadas en BIOS, como el antivirus y la copia de seguridad, eran comunes en la era de MS-DOS y Windows 9x (con la llegada de Windows 2000 y Windows XP ( basado en Windows NT ), dichas funciones dejaron de ser válidas en Windows NT y las operaciones se trasladaron a los controladores de Windows NT).
El modo de administración del sistema también puede ser utilizado indebidamente para ejecutar rootkits con altos privilegios , como se demostró en Black Hat 2008 [ 15 ] y 2015. [ 16 ]
Ingresando a SMM
Se accede a SMM a través de la interrupción de gestión del sistema (SMI), que se invoca mediante:
- Señalización del hardware de la placa base o del chipset a través de un pin designado SMI# del chip del procesador. [ 17 ] Esta señal puede ser un evento independiente.
- SMI de software 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). [ 18 ]
- Una operación de escritura de E/S en una ubicación sobre la que el firmware ha solicitado que actúe el chip del procesador.
Al entrar en SMM, el procesador busca la primera instrucción en la dirección SMBASE (contenido del registro SMBASE) + 8000h (por defecto 38000h), utilizando los registros CS = 3000h y EIP = 8000h. El valor del registro CS (3000h) se debe a que el procesador utiliza direcciones de memoria en modo real cuando está en SMM. En este caso, internamente se añade 0h al extremo derecho del registro CS.
Problemas
Por diseño, el sistema operativo no puede anular ni deshabilitar el SMI. Debido a esto, es un objetivo para que residan rootkits maliciosos, [ 19 ] [ 20 ] incluyendo los "implantes" de la NSA , [ 21 ] que tienen nombres en clave individuales para hardware específico, como SOUFFLETROUGH para firewalls de Juniper Networks , [ 22 ] SCHOOLMONTANA para enrutadores de la serie J de la misma compañía, [ 23 ] DEITYBOUNCE para DELL, [ 24 ] o IRONCHEF para servidores HP Proliant . [ 25 ]
El código BIOS SMM mal diseñado y probado de forma insuficiente puede hacer suposiciones erróneas y no funcionar correctamente al interrumpir otros modos operativos x86 como PAE o el modo largo de 64 bits . [ 26 ] Según la documentación del kernel de Linux , alrededor de 2004, estas implementaciones defectuosas de la función de soporte USB heredado eran una causa común de fallos, por ejemplo, en placas base basadas en el chipset Intel E7505 . [ 12 ]
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 incompatibles, como ideas diferentes sobre cómo se debe configurar el controlador de interrupciones programable avanzado (APIC).
Operations in SMM take CPU time away from the applications, operating-system kernel and hypervisor, with the effects magnified for multicore processors, since each SMI causes all cores to switch modes.[27] There is also some overhead involved with switching in and out of SMM, since the CPU state must be stored to memory (SMRAM) and any write-back caches must be flushed. This can destroy real-time behavior and cause clock ticks to get lost. The Windows and Linux kernels define an "SMI Timeout" setting – a period within which SMM handlers must return control to the operating system, or it will "hang" or "crash".
The SMM may disrupt the behavior of real-time applications with constrained timing requirements.
A logic analyzer may be required to determine whether the CPU has entered SMM (checking state of SMIACT# pin of CPU).[17] Recovering the SMI handler code to analyze it for bugs, vulnerabilities and secrets requires a logic analyzer or disassembly of the system firmware.
See also
- Coreboot – includes an open-source SMM/SMI handler implementation for some chipsets
- Intel 80486SL
- LOADALL
- MediaGX – a processor which emulates nonexistent hardware via SMM
- Ring −3
- Unified Extensible Firmware Interface (UEFI)
- Basic Input/Output System (BIOS)
- Speculative execution CPU vulnerabilities
References
- ↑Domas, Christopher (2015-07-20). "The Memory Sinkhole"(PDF). Black Hat. Archived(PDF) from the original on 2025-05-19. Retrieved 2015-08-22.
- ↑Tereshkin, Alexander; Wojtczuk, Rafal (2009-07-29). "Introducing Ring -3 Rootkits"(PDF). Invisible Things Lab, Black Hat USA. p. 4. Archived(PDF) from the original on 2025-05-10. Retrieved 2015-08-22.
- ↑"SMIs Are EEEEVIL (Part 1)". msdn.com. Microsoft. 2020-07-17. Archived from the original on 2009-03-24. Retrieved 2006-04-15.
- ↑Ellis, Simson C., "The 386 SL Microprocessor in Notebook PCs", Intel Corporation, Microcomputer Solutions, March/April 1991, page 20
- ↑ "Hoja de datos AMD Am386SX/SXL/SXLV" (PDF) . AMD. Archivado (PDF) del original el 8 de marzo de 2025. Consultado el 16 de septiembre de 2018 .
- ↑ Intel Corporation, "Noticias breves: Intel apoya el programa informático Energy Star de la EPA", Microcomputer Solutions, enero/febrero de 1993, página 1
- ↑ "Especificación de la interfaz del modo de gestión de ARM®" . documentation-service.arm.com . 2016. Archivado del original el 10 de mayo de 2025. Consultado el 13 de marzo de 2021 .
- ↑ "Manual del desarrollador de arquitecturas Intel 64 e IA-32: Vol. 3B" (PDF) . Intel. Archivado (PDF) del original el 28 de abril de 2014. Recuperado el 11 de septiembre de 2007 .
- ↑ Manual de desarrollo de software Intel 64 e IA-32, vol. 3, Modo de administración del sistema.
- ↑ "Las SMI son MALVADAS (Parte 2)" . msdn.com . Microsoft. Archivado del original el 24/09/2015 . Consultado el 01/03/2014 .
- ↑ "Modo de administración del sistema - Wiki de OSDev" . wiki.osdev.org . Archivado del original el 26 de mayo de 2017. Consultado el 12 de septiembre de 2020 .
- 1 2 Vojtech Pavlik (enero de 2004). "Documentación del kernel de Linux: soporte para USB Legacy" . kernel.org. Archivado del original el 24 de marzo de 2025. Recuperado el 6 de octubre de 2013 .
- ↑ Charlas técnicas de Google – Coreboot – 00:34:30 Archivado el 25/01/2025 en Wayback Machine .
- ↑ Especificación de inicialización de la plataforma UEFI .
- ↑ Robert McMillan (10 de mayo de 2008). "Los hackers encuentran un nuevo lugar para ocultar rootkits" . InfoWorld . Archivado del original el 28 de abril de 2014. Consultado el 3 de junio de 2009 .
- ↑ Rob Williams (7 de agosto de 2015). "Investigadores descubren una vulnerabilidad de rootkit en procesadores Intel que data de 1997" . HotHardware.com . Archivado del original el 18 de abril de 2025. Consultado el 8 de agosto de 2015 .
- 1 2 Modo de administración del sistema de Intel Archivado el 21/01/2025 en Wayback Machine por Robert R. Collins
- ↑ US 5963738 , "Sistema informático para leer/escribir la configuración del sistema mediante instrucciones de E/S" .
- ↑ Shawn Embleton; Sherri Sparks; Cliff Zou (septiembre de 2008). "SMM Rootkits: una nueva raza de malware independiente del sistema operativo" (PDF) . ACM. Archivado (PDF) del original el 30 de diciembre de 2024. Recuperado el 6 de octubre de 2013 .
- ↑ "Los hackers encuentran un nuevo lugar para ocultar rootkits" . PC World. 9 de mayo de 2008. Archivado del original el 13 de abril de 2021. Consultado el 6 de octubre de 2013 .
- ↑ ¡ La fuente número 1 de filtraciones en todo el mundo! (30/12/2013). "Catálogo de exploits de la División ANT de la NSA para casi todos los principales programas/hardware/firmware | LeakSource" . Leaksource.wordpress.com. Archivado del original el 02/01/2014 . Consultado el 13/01/2014 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ "Schneier sobre seguridad: SOUFFLETROUGH: Explotación del día de la NSA" . Schneier.com. 30 de diciembre de 2013. Consultado el 13 de enero de 2014 .
- ↑ "Schneier sobre seguridad: SCHOOLMONTANA: Explotación del día de la NSA" . Schneier.com. 30 de mayo de 2008. Archivado del original el 1 de febrero de 2025. Consultado el 16 de enero de 2014 .
- ↑ "Schneier sobre seguridad" . schneier.com . 15 de agosto de 2014. Archivado del original el 28 de diciembre de 2024. Consultado el 16 de agosto de 2014 .
- ↑ "Schneier sobre seguridad: IRONCHEF: Exploit del día de la NSA" . Schneier.com. 3 de enero de 2014. Archivado del original el 1 de febrero de 2025. Consultado el 13 de enero de 2014 .
- ↑ "Transiciones entre los modos de funcionamiento del procesador" (JPG) . images0.cnitblog.com . Archivado del original el 24/01/2025 . Consultado el 11/10/2020 .
- ↑ Brian Delgado y Karen L. Karavanic, "Implicaciones de rendimiento del modo de gestión del sistema", Simposio Internacional IEEE de 2013 sobre Caracterización de la Carga de Trabajo, 22-24 de septiembre, Portland, OR, EE. UU.
Lecturas adicionales
- Patente estadounidense 5175853 , James Kardach; Gregory Mathews y Cau Nguyen et al., "Interrupción transparente del sistema", publicada el 29 de diciembre de 1992, otorgada a Intel Corporation.
- Guía para desarrolladores de la BIOS y el kernel de AMD Hammer , Capítulo 6 (archivada del original el 7 de diciembre de 2008)
- Manual del desarrollador de las arquitecturas Intel 64 e IA-32, Volumen 3C , Capítulo 34
- Yuen, Desmond, "Arquitectura SL de Intel: Diseño de aplicaciones portátiles", McGraw-Hill, Inc., 1993, ISBN 978-0-07-911336-8 vía bitsavers.org
- Rootkits
- Modos de funcionamiento X86
- BIOS
- Arquitectura ARM