
¿Es posible que un usuario ejecute su propio programa en modo kernel? ¿Cómo podría un usuario lograr esto? ¿Qué debilidad en el mecanismo de protección del sistema tendrían que sortear?
Estoy pensando que un programa de usuario puede cambiar el bit de modo del modo de usuario al modo kernel en el vector de interrupción y luego puede ejecutar cualquier controlador de interrupción que desee. ¿Estoy en el camino correcto?
Respuesta1
Los usuarios no pueden ejecutar su propio código en modo kernel. El modo kernel le da al programa control sobre todos los aspectos de la máquina (de la máquina virtual, si es una). Ejecutar código en modo kernel evitaría todas las medidas de seguridad.
Puede ejecutar código en modo kernel cargando un módulo. Por supuesto, sólo el root puede cargar un módulo (y esto se puede desactivar para ciertas configuraciones estáticas y de alta seguridad).
No sé a qué te refieres con "un programa de usuario puede cambiar el bit de modo del modo de usuario al modo kernel en el vector de interrupción". Los programas de usuario no tienen control sobre el vector de interrupción, el kernel lo reserva para sí mismo.
Respuesta2
puede conectar la llamada al sistema y agregar un único que será su programa. Su programa lo ejecuta en modo kernel para agregar una "llamada al sistema". Necesita agregar una línea al archivo /boot/system.map-kernel version para encontrar su versión del kernel. La herramienta proc/version LKM puede ayudarle a hacer eso