Как пользователь может запустить программу в режиме ядра?

Как пользователь может запустить программу в режиме ядра?

Может ли пользователь запустить свою собственную программу в режиме ядра? Как пользователь может это сделать? Какую уязвимость в защитном механизме системы ему придется обойти?

Я думаю, что пользовательская программа может переключить бит режима с пользовательского режима на режим ядра в векторе прерывания, а затем она может выполнить любые обработчики прерываний, которые захочет. Я на правильном пути?

решение1

Пользователи не могут запускать свой собственный код в режиме ядра. Режим ядра дает программе контроль над каждым аспектом машины (виртуальной машины, если это таковая). Запуск кода в режиме ядра обойдет все меры безопасности.

Вы можете запустить код в режиме ядра, загрузив модуль. Конечно, только root может загрузить модуль (и это можно отключить для определенных статических конфигураций с высоким уровнем безопасности).

Я не знаю, что вы имеете в виду, говоря «пользовательская программа может переключить бит режима из пользовательского режима в режим ядра в векторе прерывания». Пользовательские программы не имеют контроля над вектором прерывания, ядро ​​оставляет его за собой.

решение2

Вы можете перехватить системный вызов и добавить onc, который будет вашей программой. Ваша программа запустит ее в режиме ядра. Чтобы добавить «systme call», вам нужно добавить строку в файл /boot/system.map-kernel version, чтобы узнать версию вашего ядра. Инструмент LKM может помочь вам сделать это.

Связанный контент