Permisos de Linux UID 0 frente a Anillo 0

Permisos de Linux UID 0 frente a Anillo 0

Estoy estudiando para un examen de seguridad informática y me cuesta entender la siguiente pregunta de muestra.

'Explique la diferencia entre ejecutar en el anillo 0 en x86 y ejecutar como UID 0 en Linux. Dé un ejemplo de algo que cada uno permite, pero el otro no.'

Mi comprensión actual es que el anillo 0 en x86 es el nivel de sistema operativo más privilegiado y que el código del kernel se ejecuta en el anillo 0. UID 0 es el superusuario de Linux que esencialmente puede ejecutar cualquier cosa. Con mi comprensión actual de estos conceptos, no entiendo cómo responder a esta pregunta.

Tenga en cuenta que esta NO es una pregunta de tarea y NO es algo por lo que me calificarán, es solo material de estudio.

Respuesta1

Su comprensión es correcta. "Ring 0" es el término x86 para el modo kernel del procesador. "Ejecutando en el anillo 0" significa "código kernel".

En términos de seguridad, todo lo que puede hacer un proceso (bajo cualquier UID) lo puede hacer el kernel. Algunas cosas son muy incómodas de hacer desde el código del kernel, por ejemplo abrir un archivo, pero son posibles.

Por el contrario, en circunstancias normales, si puede ejecutar código con UID 0, entonces puede ejecutar código del kernel cargando un módulo del kernel. Por lo tanto, no existe ninguna barrera de seguridad entre el UID 0 y el nivel del kernel en una configuración típica. Sin embargo, el código que se ejecuta en un proceso todavía está sujeto a las limitaciones del modo de usuario del procesador: cada acceso a un periférico (incluidos discos, redes, etc.) aún debe realizarse a través de una llamada al sistema. Es posible configurar una máquina para que tenga un UID 0 que no sea todopoderoso, por ejemplo:

  • Deshabilite la carga de módulos del kernel.
  • Usar unamarco de seguridadcomoSELinuxpara quitar privilegios a un proceso: el UID 0 no necesariamente los supera; por ejemplo, es posible crear una cuenta de invitado con el UID 0 pero esencialmente sin privilegios con la política SELinux correcta.
  • UID 0 en unespacio de nombres de usuariosolo tiene los permisos del creador del espacio de nombres.

información relacionada