Linux Permissões UID 0 vs Ring 0

3

Estou estudando para um exame de segurança do computador e estou com dificuldades para entender a seguinte questão de amostra.

'Explique a diferença entre a execução no anel 0 no x86 e a execução como UID 0 no Linux. Dê um exemplo de algo que cada um permite, mas o outro não. '

Meu entendimento atual é que o anel 0 no x86 é o nível de sistema operacional mais privilegiado e que o código do kernel é executado no anel 0. O UID 0 é o superusuário do Linux que pode essencialmente executar qualquer coisa. Com a minha compreensão atual desses conceitos, não entendo como responder a essa pergunta.

Por favor, note que esta não é uma questão de lição de casa e não é algo que eu vou ser avaliado em cima, é apenas material de estudo.

    
por tjensen 03.11.2015 / 03:18

1 resposta

2

Seu entendimento está correto. “Ring 0” é o termo x86 para o modo kernel do processador. "Rodando no anel 0" significa "código do kernel".

Em termos de segurança, tudo o que pode ser feito por um processo (sob qualquer UID) pode ser feito pelo kernel. Algumas coisas são muito inconvenientes para fazer a partir do código do kernel, por exemplo, abrir um arquivo, mas elas são possíveis.

Por outro lado, em circunstâncias normais, se você puder executar o código sob o UID 0, poderá executar o código do kernel carregando um módulo do kernel. Portanto, não há barreira de segurança entre o UID 0 e o nível do kernel em uma configuração típica. No entanto, o código em execução em um processo ainda é limitado pelas limitações do modo de usuário do processador: cada acesso a um periférico (incluindo discos, rede, etc.) ainda tem que passar por uma chamada de sistema. É possível configurar uma máquina para ter um UID 0 que não seja todo poderoso, por exemplo:

  • Desativar o carregamento de módulos do kernel.
  • Use uma estrutura de segurança , como SELinux para remover privilégios de um processo: O UID 0 não necessariamente supera esses, por exemplo, é possível criar uma conta guest com UID 0, mas essencialmente sem privilégios com a política SELinux correta.
  • O UID 0 em um namespace de usuário tem apenas as permissões do criador de espaços para nome.
por 04.11.2015 / 01:24