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 operativo de las unidades de procesamiento central (CPU) x86 en el que se suspende toda 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 privilegios elevados.
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 486 y Pentium de línea principal 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 . [ cita requerida ]
En la arquitectura ARM, el modo de nivel de excepción 3 (EL3) también se conoce como modo de monitorización segura o modo de gestión del sistema. [6]
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 propietario diseñado por OEM. Está destinado a 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 opera de manera transparente para el sistema operativo o las aplicaciones ejecutivas y de software. [ cita requerida ]
Para lograr transparencia, el SMM impone ciertas reglas. El SMM solo puede ser accedido a través de SMI (System Management Interrupt). 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 . [7]
El modo de administración del sistema puede direccionar hasta 4 GB de memoria como modo real enorme . En procesadores x86-64 , SMM puede direccionar >4 GB de memoria como modo de dirección real. [8]
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 el SMM para funciones más nuevas como la interfaz avanzada de configuración y energía (ACPI). [9] [10]
Algunos usos del Modo de Gestión del Sistema son:
El modo de administración del sistema también se puede utilizar de forma abusiva para ejecutar rootkits con altos privilegios , como se demostró en Black Hat 2008 [14] y 2015. [15]
El acceso al SMM se realiza a través de la SMI (interrupción de gestión del sistema), que se invoca mediante:
Al ingresar a 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 al uso de direcciones de memoria en modo real por parte del procesador cuando está en SMM. En este caso, el CS se agrega internamente con 0h en su extremo más a la derecha.
Por diseño, el sistema operativo no puede anular o deshabilitar el SMI. Debido a este hecho, es un objetivo para rootkits maliciosos que residen en él, [18] [19] incluidos los "implantes" de la NSA , [20] que tienen nombres de código individuales para hardware específico, como SOUFFLETROUGH para los firewalls de Juniper Networks , [21] SCHOOLMONTANA para los enrutadores de la serie J de la misma empresa, [22] DEITYBOUNCE para DELL, [23] o IRONCHEF para los servidores HP Proliant . [24]
Un código BIOS SMM diseñado incorrectamente y probado de manera insuficiente puede hacer suposiciones erróneas y no funcionar correctamente al interrumpir algunos otros modos operativos x86 como PAE o el modo largo de 64 bits . [25] Según la documentación del kernel de Linux , alrededor de 2004, tales implementaciones defectuosas 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 . [11]
Dado que el código SMM (controlador SMI) lo instala 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 se debe configurar el Controlador de interrupciones programable avanzado (APIC).
Las operaciones en SMM consumen tiempo de CPU de las aplicaciones, el núcleo del sistema operativo y el hipervisor , con efectos magnificados para procesadores multinúcleo, ya que cada SMI hace que todos los núcleos cambien de modo. [26] También hay cierta sobrecarga involucrada con la activación y desactivación 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 tics de reloj . Los núcleos de Windows y Linux definen una configuración de "Tiempo de espera de SMI", un período dentro del cual los controladores de SMM deben devolver el control al sistema operativo, o se " colgará " o " fallará ".
El SMM puede alterar el comportamiento de aplicaciones en tiempo real con requisitos de tiempo restringidos.
Es posible que se requiera un analizador lógico para determinar si la CPU ha ingresado a SMM (verificando el estado del pin SMIACT# de la CPU). [16] Para recuperar el código del controlador SMI y analizarlo en busca de errores, vulnerabilidades y secretos, se requiere un analizador lógico o el desmontaje del firmware del sistema.
{{cite web}}
: CS1 maint: numeric names: authors list (link)