Os aplicativos em execução no modo raiz poderão substituir a seção de memória do sistema operacional ou de outro programa?

3

Eu leio aqui que qualquer aplicativo em execução no modo raiz pode emitir uma chamada do kernel e executar no modo kernel. É possível que QUALQUER aplicação em execução no modo raiz faça uma chamada ao kernel, vá para o modo kernel e adultere a área de memória de outro programa ou mexa na seção de memória do sistema operacional, porque quase todos os tutoriais dizem que o modo kernel fornece ACESSO COMPLETO meu hardware, e se é assim, não seria uma grande falha de segurança, onde o programa logo após adquirir o acesso ao nível da raiz teria acesso a qualquer local de memória em RAM / DISK?

(Eu tenho Linux em mente enquanto faço esta pergunta)
EDIT:
Bem, estou muito convencido sobre o fato de que no linux a memória está completamente exposta, alguém pode explicar se é da mesma maneira no Windows e no Unix

    
por vikkyhacks 04.11.2013 / 18:22

2 respostas

2

Sim, certamente é possível - muitos sistemas Linux até expõem a memória através dos dois arquivos do dispositivo /dev/mem (para memória física) e /dev/kmem (para memória virtual). Você pode acessar o espaço de endereço virtual do kernel via /proc/kcore . Claro, não é recomendável escrever para esses dispositivos, pois você pode facilmente destruir seu sistema.

Não sei por que isso pode ser considerado um problema de segurança - você geralmente precisa ser root para gravar nesses dispositivos e, se tiver acesso root, já poderá fazer o que quiser.

    
por 04.11.2013 / 21:20
2

Você parece estar misturando maçãs e laranjas. Para citar a resposta à pergunta que você faz referência, "modo de núcleo e raiz são duas ideias separadas que não estão relacionadas entre si. O conceito de executar um processo como root é um termo Unix / Linux que significa que você está logado como administrador do sistema. … Qualquer processo executado, seja como usuário root ou normal, geralmente é executado tanto no modo de usuário quanto no modo kernel. ”Então, uma aplicação rodando como root geralmente não pode simplesmente mudar e começar a rodar no modo kernel. Tudo o que ele pode fazer é a mesma coisa que um processo não-raiz pode fazer: chamar uma função do sistema, que faz com que o kernel do sistema operacional seja executado no modo kernel.

Dito isso, é verdade que a maioria dos sistemas baseados em Unix fornece privilégios de usuário root que não estão disponíveis para usuários / processos não-root. Por exemplo, como a user55325 aponta, a maioria dos sistemas baseados em Unix possui pseudo-dispositivos como /dev/mem , /dev/kmem e /proc/kcore que concedem acesso privilegiado a memória de processos que não pertencem a eles. Além disso, os processos raiz podem kill de qualquer processo e podem manipular o processo de várias maneiras através de /proc . E, claro, o root tem acesso total a todos os arquivos. Por isso, é verdade que um processo que obtém acesso root tem muito poder; mas é assim que acontece.

Aliás, a menos que você sempre inicialize a partir de um disco óptico (CD / DVD) ou da rede, o sistema operacional é armazenado em arquivos de disco e um invasor que tenha acesso à sua máquina como root pode reescrever todo o sistema operacional. e depois sente-se e espere que você reinicie. (E, oh sim, eu quase me esqueci; um processo raiz também pode reiniciar o seu sistema.) Então, novamente, sim, o privilégio de root é muito poderoso.

    
por 05.11.2013 / 01:27