Загружаемый модуль ядра
-
Определение и использование LKM
- LKM — это объектные файлы, добавляющие функциональность к ядру ОС.
- Они используются для поддержки нового оборудования и системных вызовов.
- LKM могут быть выгружены для освобождения ресурсов.
-
Преимущества и недостатки
- Модульное ядро предотвращает необходимость компиляции всех функций в ядро.
- Недостатки включают фрагментацию памяти и снижение производительности.
-
Реализации в разных ОС
- В Linux модули ядра загружаются командой modprobe и хранятся в /lib/modules.
- В macOS модули ядра имеют расширение .kext и могут быть загружены командой kextload.
- В FreeBSD модули ядра хранятся в /boot/kernel и могут быть загружены с помощью kldload.
- В Solaris модули ядра загружаются в зависимости от настроек и имеют расширение .NLM.
-
Проблемы с лицензиями и безопасность
- В Linux LKM могут быть помечены как доступные только для GPL, что может привести к проблемам с безопасностью.
- В macOS модули ядра должны быть подписаны сертификатом разработчика.
- В Solaris модули могут содержать криптографическую подпись, проверяемую при загрузке.
-
Бинарная совместимость и безопасность
- Linux не предоставляет стабильного API для модулей ядра, что может вызывать проблемы совместимости.
- В других ОС, таких как FreeBSD и macOS, API и ABI более стабильны.
- Злоумышленники могут использовать LKMS для скрытия своих процессов и сохранения контроля над системой.
-
Отключение загрузки модулей
- В Linux можно отключить загрузку модулей с помощью sysctl.
- В macOS можно отключить загрузку неподписанных расширений ядра.
- В Solaris модули могут содержать криптографическую подпись и загружаться только с надежного пути.
Полный текст статьи: