Uno de los elementos más desconocidos que existen dentro de nuestros PC: son unos procesadores que están integrados dentro de las propias CPU de nuestros PC, y cuyo trabajo es supuestamente es otorgar un entorno fiable, o «Trusted» en inglés. ¿Pero qué significa esto y que consecuencias conlleva? Os explicamos que es este procesador y su relación con los anillos de ejecución negativos.
En informática cuando hablamos de entorno confiable nos solemos referir a dos definiciones distintas. La primera de ellas consiste en una serie de métodos para evitar que el usuario ejecute software que esté firmado por los propios desarrolladores. Es decir, las llamadas copias piratas. La segunda consiste en crear un entorno en el que remotamente se tiene acceso a nuestros PC aprovechando unos niveles de privilegió que en teoría no deberían de estar ahí.
Todos los procesadores contemporáneos tienen medidas de seguridad para evitar, por ejemplo, que una aplicación realice una función ilegal en el sistema, al mismo tiempo que le otorga un entorno al sistema operativo para que pueda realizar sus tareas de forma independiente en el procesador para ir gestionando los diferentes hilos del sistema.
Los anillos de ejecución y su función
Cuando se hizo necesaria la implementación de sistemas operativos multitarea, las CPU evolucionaron a incluir unidades MMU que se encargaban de controlar el acceso a la RAM tanto del sistema operativo y de las aplicaciones.
Con tal de aislar las partes sensibles de la memoria, a partir del 80386 en adelante se añadieron los anillos de ejecución, los cuales delimitan cuatro niveles de privilegio para el software, los cuales van desde el nivel 0 al nivel 3 y de mayor a menor rango de privilegio.
Cada proceso ejecutado por la CPU tiene un nivel de privilegio asociado, de tal manera que si la CPU está ejecutando un proceso con un nivel de privilegio 3 entonces no podrá acceder a las direcciones de memoria asociadas a los anillos 2, 1 y 0. Pero, en cambio, un proceso que se ejecute en el anillo 0 sí que podrá acceder a los anillos 0, 1, 2 y 3 debido a si mayor rango de privilegios.
Como curiosidad los anillos 1 y 2 no se suelen utilizar en Windows y Linux, estos sistemas operativos solo utilizan el 0 y el 3, y ciertos programas de virtualización como VirtualBox, VMWare y similares suelen tomar los anillos 1 y 2 para sí mismos.
Los anillos de ejecución negativos
En realidad, no existen los anillos negativos, sino que hacen referencia a niveles de privilegio por encima que el del propio sistema operativo y, por tanto, les da un control del sistema por encima de este. No obstante, algunos de los procesadores más modernos, en especial los que soportan tecnologías como Intel VT o AMD SVM, permiten un nivel de privilegios adicional para los llamados hipervisores. Es decir, un sistema operativo que gestiona a otros al mismo tiempo. Algo que se da en entornos de computación, en la nube y, por tanto, en centros de datos.
Debido a que al anillo correspondiente al kernel del sistema operativo lo llamamos anillo 0 y estos disminuyen en número a medida que tienen más privilegios, lo llamamos coloquialmente anillo -1. La realidad es que dicho anillo no existe, sino que se trata de una trampa. Lo que se hace cuando virtualizamos un sistema operativo es colocarlo en un anillo intermedio, de tal manera que no es el hipervisor el que está en un supuesto nivel negativo. El hipervisor continua en el 0, ya que es realmente el que lo está gestionando todo.
¿Y qué ocurre con que se ejecuta en una máquina virtual? Pues se le coloca en un modo protegido especial, un anillo intermedio con todas las funciones que necesita para operar, pero sin contacto directo con el hardware. Así pues, el sistema operativo que se ejecuta en el anillo 0 le responde al sistema operativo en la máquina virtual como si fuese el hardware.
El peligroso anillo -2
En cuanto al anillo de ejecución -2 se refiere al modo de gerencia del sistema, el cual es un modo de operación que existe desde el 80396 en adelante, se ejecuta cunado un tipo especial de interrupción llamada SMI ocurre, entonces cuando se está ejecutando dicha interrupción todo el código relacionado se ejecuta en el modo de más alto privilegio de todos.
Debido a que esto puede ser explotado para la ejecución de software malicioso, ya que solo hace falta activar una interrupción de ese tipo y ejecutar dicho software en medio de esa interrupción. En realidad, no es algo nada fácil de hacer, pero existe la posibilidad y esto es lo que forzó tanto a Intel como a AMD a encontrar una solución al problema a través de un hardware externo.
¿Un procesador dentro del procesador? El AMD PSP y el Intel ME
¿La solución a la que llegaron? Crear un elemento adicional de control, un procesador aparte encargado de comprobar que todo el software que, entre este firmado, algo que da como resultado un enorme sinsentido en el mundo del PC, donde el desarrollo y distribución de los programas es completamente libre y abierto, pero que “evita” el control remoto de nuestros ordenadores por parte de elementos maliciosos, sin embargo que a su misma vez da como resultado otra puerta trasera.
Dichos procesadores se encuentran en todos los PC del mundo con arquitectura x86, estos tienen unos privilegios que corresponden al anillo -3 dentro del sistema y, por tanto, son los que más jerarquía de privilegios tienen, en el caso de AMD dicho procesador es el llamado PSP (Platform Secure Processor) y en el caso de Intel es el ME (Intel Management Engine).
¿Cuáles son sus funciones?
Los privilegios y funciones, tanto del PSP como del ME, son básicamente los siguientes:
- Tienen acceso completo a la RAM del sistema de manera independiente a la CPU principal
- Tienen acceso a la pila TCP/IP y a las interfaces de red de manera directa.
- Puede enviar/recibir paquetes por la red, incluso con el SO teniendo esto vetado.
- Se encuentra activos cuando el ordenador está hibernando y cuando el resto del sistema está apagado.
- Se puede tomar el control de tu ordenador remotamente vía internet si se consigue el control sobre ellos.
No obstante, pese a que ambos realizan una función similar, ambos son dos implementaciones de hardware diferenciadas. Mientras que el PSP de AMD es una CPU Cortex A5, el ME es un Intel Pentium clásico, es decir, estamos hablando de un x86 dentro de su x86.
En realidad, funcionan como espías en el interior de nuestros ordenadores, a los que no se tiene acceso directamente de manera normal por el hecho que tanto el PSP como el ME bloquean por completo los accesos desde los otros anillos de ejecución del sistema hacía su zona privilegiada. Se supone que hay formas de desactivarlos, y decimos que se supone porque no podemos comprobar cuando están activas estas unidades.