
É possível que um usuário execute seu próprio programa no modo kernel? Como um usuário poderia fazer isso? Que fraqueza no mecanismo de proteção do sistema eles teriam que contornar?
Estou pensando que um programa de usuário pode mudar o bit de modo do modo de usuário para o modo kernel no vetor de interrupção e então pode executar qualquer manipulador de interrupção que desejar. Estou no caminho certo?
Responder1
Os usuários não podem executar seu próprio código no modo kernel. O modo kernel dá ao programa controle sobre todos os aspectos da máquina (da máquina virtual, se houver). A execução do código no modo kernel ignoraria todas as medidas de segurança.
Você pode executar o código no modo kernel carregando um módulo. Somente o root pode carregar um módulo, é claro (e isso pode ser desabilitado para certas configurações estáticas e de alta segurança).
Não sei o que você quer dizer com “um programa de usuário pode mudar o bit de modo do modo de usuário para o modo kernel no vetor de interrupção”. Os programas do usuário não têm controle sobre o vetor de interrupção, o kernel reserva isso para si.
Responder2
você pode conectar a chamada do sistema e adicionar onc que será o seu programa, seu programa executá-lo no modo kernel para adicionar "chamada do sistema", você precisa adicionar uma linha ao arquivo /boot/system.map-kernel version para encontrar sua versão do kernel / A ferramenta proc/version LKM pode ajudá-lo a fazer isso