Debido al error ThinkPwn de Lenovo, estoy tratando de entender los privilegios y los anillos.
Si el núcleo es Ring 0 y SMM (Modo de administración del sistema) es Ring -2, ¿qué podría haber entre eso es Ring -1?
Debido al error ThinkPwn de Lenovo, estoy tratando de entender los privilegios y los anillos.
Si el núcleo es Ring 0 y SMM (Modo de administración del sistema) es Ring -2, ¿qué podría haber entre eso es Ring -1?
La nomenclatura de "anillos" (0-3) que suele ver estos días comenzó con el campo de nivel de privilegio solicitado en los selectores de segmento como parte del diseño del modo protegido x86.
En el pasado, era posible crear secciones exclusivas del espacio de memoria denominadas segmentos. En "modo real" era necesario ya que solo tenía memoria direccionable de 20 bits. Cuando llegó el modo protegido todavía ofrecía segmentación, pero también niveles de privilegio. Los niveles 0-2 son "supervisor" y pueden hacer la mayoría de las cosas. Los anillos 1-2 no pueden ejecutar instrucciones privilegiadas, pero este es el único límite real; de lo contrario son tan privilegiados como el anillo 0.
Mientras tanto, el anillo 3 es "modo usuario". Si tiene el selector de segmento configurado para apuntar a este anillo, necesita la ayuda del kernel a través de alguna interfaz de llamadas del sistema para hacer cualquier cosa que requiera un acceso privilegiado de la CPU o la memoria.
En estos días, es bastante necesario en x86 de 64 bits para no usar la segmentación. Sin embargo, los selectores de segmento siguen ahí, todos los segmentos se superponen y cubren todo el espacio de direcciones.
Por lo tanto, el propósito original del anillo 0-3 era aislar el privilegio entre el código de modo de usuario y el kernel y detener el código de modo de usuario en todas las estructuras de control del sistema.
Luego, la virtualización se convirtió en una cosa en x86 e Intel / AMD decidió agregarle soporte de hardware. Esto requiere un código de supervisor (hipervisor) para configurar algunas estructuras de control (llamadas VMCS) que definen las máquinas virtuales y luego llaman a vmenter
y manejan vmexit
, es decir, las condiciones en las que la máquina virtual necesita ayuda del hipervisor.
Esta pieza de código se conoce como "ring -1". No existe tal nivel de privilegio real, pero dado que puede alojar varios kernels, todos los cuales creen que tienen acceso de anillo 0 al sistema, tiene sentido.
El modo de administración del sistema es otra bestia con instrucciones especiales. El firmware (su BIOS) configura un controlador de SMM para manejar las interrupciones de la administración del sistema, que se puede configurar de acuerdo con lo que el firmware quiere que se le notifique. Cuando estos eventos se activan, el sistema operativo (o incluso el hipervisor) se suspende y se ingresa un espacio de dirección especial. Se supone que esta área es invisible para el propio sistema operativo, mientras se ejecuta en el mismo procesador. Por lo tanto, "ring -2", ya que es más privilegiado de lo que sería un hipervisor.
También escuchará el "anillo -3" mencionado aquí y allá en referencia a Intel ME o la PSP de AMD. Este es un segundo procesador que ejecuta un firmware separado (creo que Intel usa procesadores ARC SoC) capaz de hacer cualquier cosa que le guste al sistema primario. Aparentemente, esto es para proporcionar IPMI / gestión remota de la funcionalidad de tipo de hardware. Puede ejecutarse siempre que haya energía en el hardware, independientemente de si el sistema principal está encendido o no, su propósito, como he dicho, sería encender el sistema principal.
Desde una perspectiva de seguridad, cuanto más bajo sea el anillo al que te puedas meter, más indetectable podrás hacer. La investigación de Bluepill se trataba de ocultar de un sistema operativo el hecho de que realmente se estaba ejecutando en una máquina virtual. Posteriormente se han realizado investigaciones sobre la persistencia de SMM. La persistencia de SMM, por ejemplo, le permitiría potencialmente reinstalar su malware incluso en una limpieza completa del disco duro y reinstalarlo. Intel ME potencialmente abre un chip en red permanente para instalar malware en el objetivo principal.
Me he limitado a los chips de Intel aquí, pero debes tener en cuenta que otras plataformas funcionan de manera diferente. Por ejemplo, los chips ARM tienen modos de "supervisor" y "usuario", entre otros.
Ring -1 es el hipervisor, implementado como Intel VT-x ("Vanderpool") [ Wikipedia] o AMD-V ("Pacifica") [Wikipedia] .
Lea otras preguntas en las etiquetas operating-systems protection kernel