Linux Kernel Runtime Guard (LKRG) ― это экспериментальный модуль ядра, обеспечивающий контроль целостности и обнаружение работы эксплоитов, направленных на пространство ядра.
Изменения с предыдущей версии:
- [CI] Защита изменения бита SMEP в регистре CR4 и бита WP в регистре CR0 на архитектуре x86.
- [CI] Переработана поддержка *_JUMP_LABEL: теперь реализация значительно проще и использует меньше оперативной памяти.
- [CI] При неуспешном завершении kzalloc() теперь будет ошибка.
- [ED] Изначальная реализация pCFI (poor man’s Control Flow Integrity aka «защита потока исполнения для бедных») для защиты от перехода на удобные для использования в эксплуатации функции.
- [ED] Белые списки для интерфейса usermodehelper (вызов утилит пользовательского пространства из ядра).
- [ED] Исправлены ошибки первого рода на неуспешном завершении seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC, …), где должен был происходить возврат всех изменений в структурах потоков, но этого не было сделано (но делается теперь).
- [ED] Во избежание ошибок первого рода во время инициализации теперь замораживаются все пользовательские процессы.
- [ED] Небольшие изменения в работе SIGKILL для задач с нарушенной целостностью.
- Исправлены ошибки сборки на Linux 4.17+ без опции CONFIG_ARCH_HAS_SYSCALL_WRAPPER.
- Добавлен конфигурационный файл для загрузки LKRG на этапе старта системы.
- В Makefile добавлены опции для установки/удаления, которые дообавляют/убирают сервис для загрузки на старте системы.
Легенда:
- [CI] — Целостность исполняемого кода.
- [ED] — Обнаружение эксплоитов.
Как и ранее, этот релиз разработан Адамом «pi3» Заброцки.
Почти традиционно, после релиза i82 помог найти некоторые недостатки LKRG посредством адаптации эксплоитов от Андрея Коновалова, за что Адам «pi3» Заброцки и solardiz его в очередной раз поблагодарили. Подробности обсуждения читайте в списке рассылке проекта.
>>>
Wiki
>>> Подробности